Конспект уроку по програмуванню
Тема уроку:(К_О)
"Використання циклу з післяумовою для розв'язування задач."
Мета уроку: Навчити використовувати цикл з післяумовою для розв'язування типових задач.
Тип уроку: Практичний.
Хід уроку
I. Організаційна частина
Добрий день учні. Сьогодні ми продовжимо вивчати програмування і наша сьогоднішня тема є: «Використання циклу з післяумовою для розв'язування задач» Вивчати це питання ми будемо на прикладах.
II. Вивчення нового матеріалу. Практична частина.
Задача №1.
Умова: На дверях ліфта висіло загрозливе попередження про те, що двері зачиняються самі в той самий момент, коли зайвий за вагою пасажир переступить поріг ліфта. Котрий пасажир постраждає, якщо ліфт витримує вагу не більше S кг, а вага пасажирів, що стоять у черзі до ліфта, дорівнює відповідно а1, аl, а3, ...
В цій задачі зручніше використовувати цикл с післяумовою, тому що спочатку необхідно дати можливість "ввійти" пасажиру в ліфт, а потім перевіряти, чи витримає його ліфт. Умовою виходу з циклу буде перевищення сумарної ваги пасажирів, що увійшли в ліфт, деякого заданого критичного значення. Для зберігання ваги чергового пасажиру в цій задачі ми будемо використовувати одну й ту саму змінну (А), так як після перевірки вага пасажира нас вже не цікавить.
Program Example_1;
Uses crt;
Var N:word; {N - номер пасажира, що увійшов у ліфт}
Sum,A,S:real; {Sum - сумарна вага пасажирів, що знаходяться в ліфті, А - вага чергового пасажира, що увійшов до ліфта, S - критична вага, що може бути піднята ліфтом}
Begin Clrscr;
Sum:=0; {На початку роботи програми в ліфті N:=0; немає пасажирів}
Write('Введіть критичну вагу, що піднімає ліфт: ');
Readln(S); Repeat
Writeln('Введіть вагу чергового пасажира: ');
Readln(A);
Sum:=Sum+A;
N:=N+l;
Until Sum>S;
Writeln('Постраждає N пасажир.');
Readkey; (Затримка зображення на екрані} End.
Задача №2.
Умова: Капосний папуга навчився висмикувати у дідусі Василя волосся, яке ще залишилося у того на голові. Почавши з однієї волосини, він щодня збільшував порцію вдвічі. Через скільки днів дідусеві не знадобиться гребінець, якщо спочатку в нього на голові було аж N волосин? Аналогічно попередній задачі, аналізувати наявність волосся на голові необхідно після того, як папуга вже висмикнув чергову порцію волосся. А "знущання" над дідусем скінчиться тоді, коли гребінець йому стане непотрібним, тобто кількість волосся на голові стане дорівнювати нулю. Зверніть увагу, що в цій задачі змінна S використовується для підрахунку чергової порції волосся, що підлягає висмикуванню капосним папугою.
Program Example_2;
Uses crt;
Var S,N,Sum:longint; {S - кількість волосся, що буде висмикнуто, Sum - кількість волосся, що залишилося в дідуся на голові, N - початкова кількість волосся}
Day:word; {Day - номер дня, який папуга знущається над дідусем}
Begin Clrscr;
Writeln('Введіть початкову кількість волосся в дідуся на голові: ');
Readln(N);
If N=0 then
writeln('Дідусь вже лисий, папузі нічого робити!')
Else
begin
Day:=0;
Sum:=N;
S:=l; {Початкова кількість волосся, що буде висмикнутою капосним папугою}
Repeat
Sum:=Sum-S; {Зменшення дідусевого волосся}
S:=S*2;
Day:=Day+1; {Підрахунок номера дня}
Until Sum<=0;
Writeln('Папуга знущався над дідусем ',Day,' днів.');
End;
Readkey; {Затримка зображення на екрані}
End.
III. Домашнє завдання
Розв’язати самостійно задачу.
Умова: Дано натуральне число п. Визначити кількість цифр у цьому числі.