Тема уроку: Створення програм з циклами 
 Мета уроку: навчити використовувати цикли для розв'язування типових задач. 
 Тип уроку: формування вмінь і навичок 
 Хід уроку 
 І. Організаційний момент 
 Перевіряю готовність учнів до уроку. 
 ІІ. Актуалізація опорних знань 
 Гра „Лото”. Учні на ігровому полі вибирають фішку певного кольору, відкривають її і отримують номер запитання, на яке повинні дати відповідь.  • Вказівка розгалуження 
 • Цикл з параметром 
 • Цикл з передумовою 
 • Цикл з післяумовою 
 ІІІ. Розв’язування задач 
 Задача № 177 
 Умова: Ненажера Стецько пробрався перед обідом – у шкільну їдальню, де вже були накриті столи, і почав швиденько з'їдати ще тепленькі булочки, що були на столах. 3 першого столу він з'їв х1; було-чок, з другого - х2 і, відповідно, з останнього - хп булочок. Але за ним стежив черговий по їдальні Андрійко та ретельно все фіксував на своєму кальку¬ляторі: до булочок, з’їдених з першого столу, додав кількість булочок, що зникли з другого столу, і т.д. Допоможіть крок за кроком відтворити інформа¬цію, яку дістав Андрійко на своєму калькуляторі. 
 Розв'язання: Отже, нам відома кількість повто¬рень, тому що ми знаємо, скільки столів у їдальні. Окрім того, зауважимо, що для зберігання кількості булочок, що знаходяться на кожному столі, не треба мати N змінних. Достатньо мати одну, назвемо її, наприклад, X, в якій тимчасово будемо зберігати відповідну кількість булочок з чергового столу. I, врешті-решт, нам необхідна ще одна змінна, в якій ми будемо зберігати проміжні обчислення Андрій¬ка (наприклад, Sum). Таким чином, програма роз¬в'язання даної задачі, буде мати такий вигляд: 
 Program Example_177; 
 Uses crt; 
 Var I,N:word; {I - параметр циклу, N - кількість столів у їдальні, тобто кількість повторень} 
 Sum,X:word; {X - кількість булочок на черговому столі їдальні, Sum - загальна кількість було¬чок , що s'їв Стецько} 
 Begin 
 Clrscr; 
 Sum:=0; {Ha початку роботи програми Стецько ще нічого не З'їв} 
 Write(‘ введіть кількість столів У їдальні: '); Readln{N); 
 For I: =1 to N do Begin 
 Write( 'Введіть кількість булочок на черговому столі:');Readln(X); 
 Sum:=Sum+X; 
 Writeln('Ha даний момент Стецько з' їв ',Sum,' булочок.'); 
 End; 
 Readkey;{затримка зображення на екрані} 
 End. 
 Задача № 189 (2) 
 Умова: Знайти значення (1 + 0.1)(2 + 0.2)...(9 + 0.9) 
 Розв'язання: В даному випадку кількість по¬вторів буде дорівнювати 9, тобто програма буде мати вигляд: 
 Program Example_189_2; 
 Uses crt; 
 Var I:word; {I - параметр циклу} 
 Rez:real; {Rez - результат обчислень} 
 Begin 
 Clrscr; 
 Rez:=l; {Початкове Значення дорівнює 1, тому що результат є накопиченням добутку} 
 For I:=1 to 9 do Rez:=Rez*(I+0.1*I); 
 Writeln('Rez= ',Rez:8:2); 
 Readkey; {Затримка зображення на екрані} 
 End. 
 ІГРОВА ПАУЗА. Вправа „Австралійський дощ” 
 Задача № 197 (2) 
 Умова: Дано натуральне число n. Визначити суму цифр у числі. 
 Для розв'язку цієї задачі використаємо такий штучний прийом: щоб знайти суму цифр, ми по¬винні «брати» цифри по одній і додавати їх одна до одної, а потім використану цифру «відкидати». Це нам дозволять зробити операції ділення націло та знаходження залишку від цілочисельного ділен¬ня. Так, при діленні числа націло на 10 остання цифра числа буде «відкидатися», а при знаходженні залишку від ділення націло ми виділяємо останню цифру числа. Тобто: 123 div 10 = 12 3928 mod 10 = 8. 
 Процес буде повторюватись, доки від числа «нічого не залишиться», тобто, доки воно не пе¬ретвориться на нуль. Програма, що реалізує описаний алгоритм, має такий вигляд: 
 Program ExampIe_197_2; 
 Uses crt; 
 Var n:longint; {N - дане число} 
 Sum:byte; {Sum - сума цифр числа} 
 Begin 
 Clrscr; Sum:=O; {сума цифр числа спочатку дорів¬нює 0} 
 Write(‘ введіть ціле число: '); Readln (N) ; H:=abs(N) ; 
 While N>0 do 
 Begin 
 Stm:=Sum+N mod 10; {Знаходження суми цифр} 
 N:=N div 10; {«Відкидання» останньої цифри числа} 
 End; 
 Writeln('Sum= ',Sum); Readkey; {Затримка зображення на екрані} 
 End. 
  Задача №197(1) 
 Умова: Дано натуральне число n. Визначити кількість цифр у цьому числі. 
 Розв'язання: Для розв'язання цієї задачі можна використати як цикл з передумовою, так і цикл з післяумовою. Однак другий варіант кращий, тому що навіть число «0» має у своєму складі одну циф¬ру, а цикл з передумовою цей випадок пропус¬тить. Справа в тому, що умовою виходу з циклу і в першому, і в другому випадку буде «зникнення» числа, тобто перетворення його на нуль після відкидання чергової цифри, а якщо число з само¬го початку дорівнює «0», то цикл з передумовою не виконається жодного разу, а цикл з післяумо¬вою виконається обов'язково і підрахує одну циф¬ру. Програма для розв'язання цієї задачі має та¬кий вигляд: 
 Program Example_197_l; 
 Uses crt; 
 Var N:longint; {N - задане число} 
 Count:byte; {Count - кількість цифр в числі} 
 Begin 
 Clrscr; Write('Введіть натуральне число: '); Readln(N); 
 N:=abs(N); {Знаходження модулю числа для позбавлення від помилкового введення ненатурального числа} 
 Count:=0; {Початкове значення кількості цифр) 
 Repeat 
 Count:=Count+l; 
 N:=N div 10; {«Відкидання» останньої цифри числа після підрахунку} 
 Until N = 0; 
 Writeln ( ' кількість цифр в числі = ',Count); 
 Readkey; {Затримка зображення на екрані) 
 End. 
  Задача № 180 
 Умова: Коли Василині Премудрій виповнилося 18 років, Чахлик Невмирущий вирішив одружи¬тися з нею. Василина запитала Чахлика, скільки у нього скринь із золотом. Чахлик відповів, що за¬раз у нього n скринь і щороку додається ще по m скринь. Василина пообіцяла, що вийде заміж тоді, коли у Чахлика буде k повних скринь із золотом. Скільки років буде тоді нареченій? 
 Розв 'язання: 
 Program Example_180; 
 Uses crt; 
 Var m,n,k:word; {n - початкова кількість скринь is золо¬том, m - щорічний «прибуток» Чахлика Невмирущого, k - «потреби» Василини Премудрої} 
 Sum,Years:word; {Sum - щорічне накопи¬чення Чахлика Невмирущого, Years - вік Василини Премудрої.) 
 Begin 
 Clrscr; 
 Write('Введіть початкову кількість скринь s золотом:'); 
 Readln{n); 
 Write('Введіть щорічний прибуток Чахли¬ка: '); 
 Readln(m); 
 Write('Введіть «потреби» Василини Премудрої: '); Readln (k) ; 
 sum:=п;{Початковий «капітал» Чахлика} Years:=18;{Початковий вік Василини} 
 While Sum<=k do 
 Begin Sum:=Sum+m; Years:=Years+l; End; 
 Writeln('Василині вже виповнилося ',Years,' років.'); 
 Readkey; {Затримка зображення на екрані) 
 End. 
  Задача №179 
 Умова: На дверях ліфта висіло загрозливе попередження про те, що двері самі зачиняються в той самий момент, коли зайвий за вагою пасажир переступить поріг ліфта. Котрий пасажир постраж¬дає, якщо ліфт витримує вагу не більше S кг, а вага пасажирів, що стоять у черзі до ліфта, дорів¬нює відповідно а1 а2, а3, ... ап? 
 Розв'язання: 
 У цій задачі зручніше використовувати цикл з післяумовою, тому що спочатку необхідно дати можливість «ввійти» пасажиру в ліфт, а потім пе-ревіряти, чи витримає його ліфт. Умовою виходу з циклу буде перевищення сумарної ваги пасажирів, що увійшли в ліфт, деякого заданого критичного значення. Для зберігання ваги чергового пасажи¬ра в цій задачі ми будемо використовувати одну й ту саму змінну (А), оскільки після перевірки вага пасажира нас уже не цікавить. Програма має ви¬гляд: 
 Program Example_179; 
 Uses crt; 
 Var N:word; {I - номер пасажира, що увійшов у ліфт} 
 Sum,A,S:real; {Sum - сумарна вага пасажирів, що знаходяться в ліфті, А -вага чергового пасажира, що увійшов до ліфта, S - критична вага, що може бути піднята ліфтом} 
 Begin 
 Clrscr; Sum:=0; N:=0; {Ha початку роботи програми в ліфті немає пасажирів} 
 Write('введіть критичну вагу, що піднімає ліфт: '); Readln(S); 
 Repeat 
 Write('Введіть вагу чергового пасажиpa: '); 
 Readln(A); Sum:=Sum+A; N:=N+1; 
 Until Sum>S; 
 Writeln ('Постраждає ',N,'-й пасажир.'); Readkey; {Затримка зображення на ек¬рані) 
 End. 
 IV. Підведення підсумків. Домашнє завдання: 
 • Повторити теоретичний матеріал 
 Задача №181 
 Умова: Капосний папуга навчився висмикува¬ти у дідусі Василя волосся, яке ще залишилося у того на голові. Почавши з однієї волосини, він щодня збільшував порцію вдвічі. Через скільки днів дідусеві не знадобиться гребінець, якщо спочатку в нього на голові було аж N волосин? 
 Розв'язання: Аналогічно до попередньої задачі, аналізувати наявність волосся на голові необхідно після того, як папуга вже висмикнув чергову порцію волосся. А «знущання» над дідусем скінчиться тоді, коли гребінець йому стане непотрібним, тобто кількість волосся на голові дорівнюватиме нулю. 
 Зверніть увагу, що в цій задачі змінна S вико¬ристовується для підрахунку чергової порції во¬лосся, що підлягає висмикуванню капосним па¬пугою. 
 Program Example_181; 
 Uses crt; 
 Var S,N,Sum:longint; {S - кількість волосся, що буде висмикнутим, Sum — кількість волосся, що залишилося в дідуся на голові, N - початкова кількість волосся} 
 Day:word; {Day - номер дня, який папуга Знущається над дідусем} 
 Begin 
 Clrscr; Write( 'Введіть початкову кількість волосся в дідуся на голові: '); Readln(N); 
 If N=0 Then writeln('дідусь уже лисий, папузі нічого робити!') 
 Else 
 begin 
 Day:=O; Sum:=N; S:=1; {Початкова кількість волосся, що буде висмикнуте капосним папугою} 
 Repeat 
 Sum:=Sum-S; {Зменшення дідусевого волосся} S:=S*2; 
 Day:=Day+l; {Підрахунок номеру дня} 
 Until Sum<=0; 
 Writeln(' nanyra знущався над діду¬сем ',day,' днів.'); 
 End; 
 Readkey; {Затримка зображення на екрані} 
 End.