Конспект уроку по програмуванню

Матеріал з Фізмат Вікіпедії
Перейти до: навігація, пошук

Тема уроку:(К_О)

"Використання циклу з післяумовою для розв'язування задач."

Мета уроку: Навчити використовувати цикл з післяумовою для розв'язування типових задач.

Тип уроку: Практичний.

Хід уроку

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. Домашнє завдання

Розв’язати самостійно задачу.

Умова: Дано натуральне число п. Визначити кількість цифр у цьому числі.