Алгоритмді әзірлеу
Мәселені (өткен сабақ) қойдық: «не берілген, не керек» — белгілі. Енді екінші қадам: НАҚТЫ ЖОСПАР құру. Архитектор мысалына оралайық — жобаны қойғаннан кейін, ол бірден кірпіш қаламайды, алдымен СЫЗБА (чертёж) салады. Программалауда бұл сызба — БЛОК-СЫЗБА. Бұл сабақта алгоритм әзірлеудің үш кезеңімен және циклдік алгоритмнің үш бөлшегімен танысамыз.
Есіңе түсірейік: алгоритм — есепті шешуге бағытталған әрекеттер тізбегі. Ол бес қасиетке ие болуы керек: атқарушыға ТҮСІНІКТІ, ҚАРАПАЙЫМ қадамдардан тұратын (дискретті), ДӘЛ (анық), СОҢЫ бар (нәтижелі), ЖИНАҚТЫ.
Алгоритмді жазудың төрт түрі бар: сөздік (табиғи тілмен), графикалық (блок-сызба), псевдокод (шартты алгоритмдік тіл), программалық (нақты код).
Неге бірден кодқа өтпей, алдымен блок-сызба саламыз? Себебі БІР есепті ӘРТҮРЛІ алгоритммен шешуге болады. Блок-сызба саған әртүрлі шешімдерді САЛЫСТЫРУҒА, ТИІМДІСІН ТАҢДАУҒА мүмкіндік береді.
1-кезең — Математикалық сипаттама. Есепті ФОРМУЛА түрінде жаз. Мысалы: n! = 1×2×...×n.
2-кезең — Кіріс/шығыс мәліметтерін анықтау. Не беріледі (кіріс), не шығуы керек (шығыс), ЦИКЛ ПАРАМЕТРІН таңда: оның бастапқы мәні, соңғы мәні, қадамы қандай.
3-кезең — Алгоритмді әзірлеу. Сөздік сипаттама ЖӘНЕ блок-сызба құрастыру.
Ал циклдік алгоритмнің ІШКІ құрылымы да ТҰРАҚТЫ үш бөліктен тұрады: 1) Цикл дайындау — параметрдің бастапқы мәнін, соңғы мәнін, қадамын АНЫҚТАУ; 2) Цикл денесі — қайталанатын әрекет(тер) + параметрдің КЕЛЕСІ мәнін дайындау; 3) Циклдің қайталану шарты — параметр соңғы мәнге жеткенде/асқанда ТОҚТАТУ.
Қайталау алгоритмі — циклдің қайталану шарты жалған болғанша белгілі әрекеттердің қайталануын анықтайтын алгоритм.
1-кезең (математика): n! = 1×2×3×...×n, немесе цикл формасында: F = F×i.
2-кезең (кіріс/шығыс): кіріс — n (натурал сан); шығыс — F. Цикл параметрі i: бастапқы мәні 1, соңғы мәні n, қадамы 1. МАҢЫЗДЫ: F-тің БАСТАПҚЫ мәні — 1 (ЕМЕС 0!).
3-кезең (алгоритм, сөздік): 1) Басы. 2) Дайындау: F=1, i=1. 3) Шарт: i≤n болса → 4-ке, әйтпесе → 6-ға. 4) F:=F×i. 5) i:=i+1, 3-ке қайта орал. 6) F-ті шығар. 7) Соңы.
Жауабы: n=5 болса, F = 1×2×3×4×5 = 120.
1-кезең: C(i+1) = C(i)×2.
2-кезең: кіріс — C=1, h=3 (период); шығыс — C. Цикл параметрі h: бастапқы 3, соңғы 24, қадамы 3.
3-кезең: цикл денесінде h≤24 тексеріліп, әр қадамда C 2 есе артады.
Жауабы: h=3→2, h=6→4, h=9→8, ..., h=24→256.
Салыстыру: факториал есебінде F КӨБЕЙЕДІ (×i, ӨЗГЕРМЕЛІ көбейткіш), амеба есебінде C да КӨБЕЙЕДІ (×2, ТҰРАҚТЫ көбейткіш) — екеуі де «жинақтаушы» циклдер, тек көбейткіштің табиғаты бөлек.
Мәселе: x-ті 1-ден 10-ға дейін 1 қадаммен өзгерте отырып, y = x²+3x−4 мәндерін шығару және қосындысын табу.
Формальдау: қайталану саны АЛДЫН АЛА белгілі (1-ден 10-ға дейін) — демек, ПАРАМЕТРЛІ (for) цикл қолданамыз. Қосынды: s = s+y.
s = 0 for x in range(1, 11): y = x*x + 3*x - 4 print('x=', x, 'y=', y) s = s + y print('қосынды=', s)
Нәтиже: x=1→y=0, x=2→y=6, ..., x=10→y=126; жалпы қосынды s=510.
Байқа: бұл есепте ЦИКЛ ПАРАМЕТРІ (x) ІС ЖҮЗІНДЕ ЕКІ рөл атқарады: (1) функция АРГУМЕНТІ ретінде, (2) циклдің САНАУЫШЫ ретінде.
Программаны ұйымдастырудың үш әдісі бар: құрылымдалған программалау (қарапайым, оқуға жеңіл), процедуралық программалау (функцияларға бөлу), модульдік программалау (тәуелсіз бөліктерге бөлу). 8-сыныпта негізінен ҚҰРЫЛЫМДАЛҒАН тәсілді қолданасың.
- Алгоритм әзірлеу: (1) формула, (2) кіріс/шығыс + цикл параметрі, (3) сөздік алгоритм + блок-сызба.
- Циклдің өзі: дайындау → дене → шарт.
- Ең жиі қате — қосынды мен көбейтіндінің бастапқы мәндерін шатастыру (0 vs 1).
- Дұрыс жоспарланған алгоритм — келесі кезеңде кодтауды жеңілдетеді.