Сабақтың тақырыбы: Циклдік алгоритмдер Біріктірілген циклдер. Есептерді бөіктерге бөлу, көмекші алгоритм..
Сабақтың мақсаты:
1.Білімдік. Белгілі бір әрекеттер тізбегі бірнеше рет қайталанатын болса, онда циклдік алгоритмдерді қолдананып, есептерді шешу керектігін оқушыларға түсіндіру. Осындай есептеулерді орындаған кезде циклді алгоритмдерді құрудағы білімдерін арттыру. Циклдік алгоритмдердің сызба-нұсқаларын құрып, соған байланысты алгоритімін құруға дағдыландыру..
2.Дамытушылық. Циклдік алгоритмдерді құру кезінде есепті жүйелеу арқылы шешіп, ойлау қабілеттерін дамыту. Қайталау барысын орындау алдында оның аргументінің параметрінің алғашқы мәнін енгізу арқылы , оның қадамын орнату жағдайларын қарастырып, циклдерге деген білімдерін дамыту.
3.Тәрбиелік. Циклдік алгоритмдерді өмірмен байланыстыру арқылы оқушыларды цикілдің мәнін ұғуға тәрбиелеу. Оның қайтымдығына өмірмен байланыстырап, мысалдар кертілу арқылы өмірдің қайтымсыз екндігіне көз жеткізу.
Сабақтың түрі: жаңа сабақты бекіту
Сабақтың көрнекілігі: инерактивті тақта, компьютер, циклға арналған бейне
Пәнаралық байланыс: математика
Сабақтың барысы:
Жаңа сабақты түсіндіру.
Көптеген алгоритмдерде белгілі бір әрекеттер тізбегі бірнеше рет қайталанып орындалып отырады. Математикада есеп шығару кезінде бір теңдеуді пайдаланып, ондағы айнымалы мәнінің өзгеруіне байланысты оны бірнеше рет қайталап есептеуге тура келеді. Осындай есептеу процесі бөліктерінің талап орындауын цикл деп атайды, ал қайталанатын бөлігі бар алгоритмдер тобы циклдік алгоритмдерге жатады. Циклдік алгоритмдерді пайдалану, оларды кейіннен программаларда цикл командалары түрінде қысқартып жазу мүмкіндігін береді.
Циклдік процесті қамтамасыз ететін алгоритм бөлігін қайталау командасы құрайды. Бұл команда алгоритмді жинақы етіп жазуға мүмкіндік береді.
Қайталау командасын алгоритмдік тілде жазу үшін әзірше (әзір), цикл басы (цб) және цикл соңы (цс) түйінді сөдері қолданылады: әзірше сөзінен кейін қолданылатын шарт, ал цикл басы мен цикл соңы түйінді сөдерінің арасына қайталанатын командалар жазылады. Мұнда да цикл басы мен цикл соңы түйінді сөздер арасындағы цикл аздап оңға ығыстырылып жазылады, олай ығыстыру қайталанатын командалардың орындалу реттігін түсінуді оңйлатады.
Төменде қайталау командасы алгоритмдік тілде және графиктік түрде берілген.
Қайталау санының алдын ала белгілі және белгісіз болуына байланысты цикл екі түрге бөлінеді. Қайталау саны алдын ала белгілі цикл – арифметикалық цикл деп, орындалу саны белгісіз цикл - командалық (итерациялық) цикл деп аталады.
Арифметикалық цикл. Арифметикалық цикл ең қарапайым цикл болып табылады және практикада жиі қолданылады. Қайталану барысында цикл параметрі арифметикалық прогрессияның заңы бойынша тұрақты шамаға өзгеріп отырады. Алгоритм атқарылар алдында цикл параметрінің бастапқы мәні белгілі, осыдан кейінгі қайталану барысында цикл параметрі белгілі бір шамаға (қадамға) өзгере отырып, алдын ала берілген соңғы мәнге жетуі қажет.
Алгорим мен программа жазуды жеңілдету үшін циклдік алгоритмдер ықшамдалған түрде «модификатор» немесе «цикл басы» блогын пайдалану арқылы жазылады. Бұл программадағы арифметикалық циклдің өз командалары былай жазылады:
Интерациалық (қадамдық) цикл. Цикл орындалмас бұрын, оның қайталану саны белгісіз болған жағдайда, қадамдық циклді пайдаланады. Циклді аяқтау үшін белгілі бір шарт тексеріледі. Егер шарт орындалмаса, онда кайталану командасы атқарылады. Ал шарт орындалса, онда цикл қайталанбайды. Қадамдық циклді кескіндегенде модификатор қолданылмайды, себебінеше рет қайталанатынын алдын ала білмейміз. Енді қадамдық циклге мысал келтірейік.
Мысалы: Екі бүтін сан - а және b () берілсін. Бөлу амалын қолданбай а-ны b-ға бөлгендегі қалатын қалдықты табу керек.
алг қадамдық цикл (бүт а,b)
арг a, b
нәт а
басы
енгізу (а,b)
егер а>=b онда a:=a-b
бітті
шығару а
соңы
Мысал 2. Қайталану саны белгісіз болғандағы мына есепті қарастырайық.
Натурал сандардың тізбегі берілген дедік. Осын натурал сандардың тізбегі
1,2,3,4,... саны берілген К санынан үлкен болғанша цикл орындалу керек.
алг қадамдық цикл (бүт s,i,k)
арг s, i, k
нәт
басы
енгізу (k)
s:=0; i:=1;
s:=s+i;
егер s>k онда i:=i+1 әйтпесе
бітті
шығару i, s
соңы
Бұл есептің сызба-нұсқасы төменгі суретте кескінделген. Ол сегіз блоктан тұрады.
Жұмыс басында 2 блокта К-ға мән беріледі. Әрі қарай 3 блокта i айнымалысы 1 мәнін қабылдайды, осы 1 мәнінен бастап натуралды санау басталады да, әрі жалғаса береді. S айнымалысы осы сандардың қосындысы болады, қосындыны орындар алдында оның мәні 0-ге тең деп аламыз. Одан кейін теңдеу 5-ші блокқа көшеді. Бұл блокта S = S + i командасы орындалып, ұяшықтағы S және i айнымалыларының қосындысын орындайды да оның қосындысының мәні S -ке меншіктеліп, S ұяшығына сақталады. Біз басында S-тің мәнін 0-деп алған болатынбыз енді операция орындалғанан кейін S = 1 болады. S ұяшығыдағы алғашқы 0 мәнін өшіріп, оның орнына жаңа 1 санын сақтайды.
Мынаған назар аударайық: егер 3 блоктағы S = 0 операциясын орындамасақ, онда S + 1 қосындысын есептегуі қате болар еді. Өйткені ол жадына басында –ді сақтамас еді. Яғни санды 0-ге қосқанда санның өзі шығатынын ескеріп біз солай істейтін санағыш жасап отырамыз.
Өткенді пысықтау:
Үйге тапсырма: Тақырып мазмұнына дайындалу.
Есеп.
1-топқа: 20 саннан бүтін сандар тізбегі берілген, осы сандардың ішінен 5 санынан үлкен сандар қашан екенін анықтайтын алгоритм және сызба-нұсқа құр.
2-топқа: 10 саннан бүтін сандар тізбегі берілген, осы сандардың ішінен 4 санынан кіші сандар қашан екенін анықтайтын алгоритм және сызба-нұсқа құр.