Кірістірілген циклдерді ұйымдастыру
Өткен екі сабақта кірістірілген циклмен көбейту кестесін салдық — онда ішкі цикл ӘРҚАШАН БІРДЕЙ рет қайталанды. Бірақ бір қызық сұрақ туады: ішкі цикл СЫРТҚЫ айнымалыға ТӘУЕЛДІ болса ше? Дәл осыдан — үшбұрыш пен пирамида тәрізді үлгілер туады! Бұл сабақта кірістірілген циклдерді ҰЙЫМДАСТЫРУДЫҢ жүйелі логикасын бекітеміз.
Көбейту кестесінде екі циклдің де шегі ТҰРАҚТЫ болды: for j in range(1, n+1) — n әрқашан бірдей. Бірақ Python ережесі бойынша ешкім саған ішкі range-тің шегін СЫРТҚЫ айнымалыға байлауға тыйым салмайды!
for i in range(1, n+1): for j in range(1, i+1): ...
Мұнда назар аудар: ішкі range(1, i+1) — i ӨЗГЕРГЕН САЙЫН ішкі циклдің қаншамен айналатыны да өзгереді! i=1 болғанда ішкі цикл 1 рет, i=2 болғанда 2 рет, i=5 болғанда 5 рет жұмыс істейді.
n = 5 for i in range(1, n+1): for j in range(1, i+1): print('*', end='') print()Талдау: i=1 → ішкі цикл range(1,2) → 1 рет → «*». i=2 → range(1,3) → 2 рет → «**». ... i=5 → range(1,6) → 5 рет → «*****». Әр сыртқы қадамнан кейінгі ЖАЛҚЫ print() — жаңа жолға көшу үшін.
Басты идея: ішкі циклдің шегі ретінде ТҰРАҚТЫ санның орнына СЫРТҚЫ АЙНЫМАЛЫНЫ (i) қойсақ, әр жол ӨЗГЕРМЕЛІ ұзындықта болады.
n = 5 for i in range(n, 0, -1): for j in range(1, i+1): print('*', end='') print()Талдау: бұл жолы СЫРТҚЫ циклдің ӨЗІ кему ретімен жүреді (range(n,0,-1) → 5,4,3,2,1). Ішкі цикл әрқашан range(1, i+1) — бірақ i КЕМІП жатқандықтан, ішкі цикл да кемиді.
Салыстыру: алдыңғы есепте СЫРТҚЫ өсті, бұл есепте СЫРТҚЫ кеміді — ал ІШКІ логика (range(1, i+1)) ЕКЕУІНДЕ ДЕ БІРДЕЙ қалды! Кірістірілген циклдегі «сыртқы бағыт» пен «ішкі формула» тәуелсіз таңдалады.
Соңғы маңызды дағды — кірістірілген циклдің ЖАЛПЫ қанша рет орындалғанын есептеу, БІРАҚ бұл жолы ішкі шек ТҰРАҚТЫ ЕМЕС жағдайда.
Естеріңде ме, өткен сабақта n рет × n рет = n² деп үйрендік — бұл ТЕК ішкі шек тұрақты болғанда дұрыс. Ал үшбұрыш есебінде ішкі цикл әр жолда 1, 2, 3, 4, 5 рет орындалды. Жалпы саны: 1+2+3+4+5 = 15. Бұл — n² = 25 ЕМЕС! Себебі ішкі цикл толық n рет емес, ӨСІП отыратын рет қайталанды.
Мұндай қосынды (1+2+...+n) арифметикалық прогрессия деп аталады, оны формуламен де табуға болады: n(n+1)/2 = 5·6/2 = 15 — дәл сәйкес келеді!
Ішкі цикл шегі тұрақты болса — жалпы қайталану n² (немесе n³). Ішкі цикл шегі СЫРТҚЫ айнымалыға тәуелді болса — әр қадамдағы санды ҚОСУ керек.
- Кірістірілген циклдерде ішкі шек ТҰРАҚТЫ да, СЫРТҚЫ АЙНЫМАЛЫҒА ТӘУЕЛДІ де бола алады.
- Айнымалы ішкі шек — үшбұрыш, пирамида сияқты өзгермелі геометриялық үлгілер жасауға мүмкіндік береді.
- Сыртқы циклдің бағыты (өсу/кему) мен ішкі формула бір-бірінен ТӘУЕЛСІЗ таңдалады.
- Жалпы қайталану санын есептегенде: тұрақты ішкі шек — көбейт (n²), айнымалы ішкі шек — әр қадамдағы санды қос.