Конспект уроку №10
Тема: Реалізація найпростіших програм з циклами.
Мета: систематизувати набуті знання з теми цикли; вдосконалити вміння розв’язувати задачі на застосування циклів.
Тип уроку: практична робота
І. Актуалізація ЗУН.
самостійна робота (10 хв)
1. дайте означення цикла.
2. які види циклів ви знаєте?
3. заповніть пропуски:
а) For < параметр > := <вираз1 > . . . <вираз2 > . . . <оператор >
б) . . . Умова . . . Оператор
в) ….
<оператор1 > <оператор2 > <оператор3 > *** <оператор n > …. <умова>;
4.Коли використовується оператор For
5. Як діє оператор REPEAT UNTIL?
ІІ. Розвязування задач.
Задача №1
Умова: Компанія бабусь поїхала на мотоциклах на курси комп'ютерної грамотності. Попереду на мотоциклі без глушника їхала одна бабуся, за нею - дві, потім - три і т.д. Скільки бабусь їхало на заняття, якщо приголомшені пішоходи всього нарахували N рядів? Чи змогли бабусі зайняти всі місця у класі, якщо там стояло k рядів по l комп'ютерів в кожному? Скільки вільних місць залишилося? Зверніть увагу на те, що фактично ця задача зводиться до знаходження суми всіх натуральних чисел від 1 до N. В кінці задачі для повторення команди розгалуження учням пропонується визначити кількість зайнятих бабусями та вільних місць.
Program Example_183;
Uses crt;
Var I,N,Sum:word; {I – параметр циклу, N –
кількість рядів мотоциклів, тобто кількість повторень, Sum – загальна кількість бабусь, що приїхали на курси} Place,k,l:word; {k – кількість рядів в комп’ютерному класі, l – кількість комп’ютерів в кожному ряду, Place – кількість місць, що вистачила для бабусь}
Begin
Clrscr; Sum:=0; Write(‘Введіть кількість рядів мотоциклів, що нарахували пішоходи: ’); Readln(N); For I:=1 to N do Sum:=Sum+I; Writeln(‘Кількість бабусь, що приїхала на курси ’,Sum); Writeln(‘Кількість комп”ютерів на курсах ’,k*l); If Sum < k*l Then writeln(‘Бабусі не змогли зайняти всі місця.’) Else writeln(‘Бабусі зайняли всі місця.’); Place:=Sum – k*l; If Place>0 Then writeln(‘Бабусям не вистачило ’,Place,’місць.’); Readkey; {Затримка зображення на екрані}
End.
Задача №2
Умова: Коли Василині Премудрій виповнилося 18 років, Чахлик Невмирущий вирішив взяти її заміж. Василина запитала Чохлика, скільки у нього скринь із золотом. Чахлик сказав, що в нього зараз n скринь і щороку додається ще по m скринь. Василина пообіцяла, що вийде заміж тоді, коли у Чохлика буде k повних скринь із золотом. Скільки років буде тоді нареченій? Program Example_180; Uses crt; Var m,n,k:word; {n – початкова кількість скринь з
золотом, m – щорічний “прибуток” Чахлика Невмирущого, k – “потреби” Василини Премудрої} Sum,Years:word; {Sum – щорічне накопичення Чахлика Невмирущого, Years – вік Василини Премудрої}
Begin
Clrscr; Write(‘Введіть початкову кількість скринь з золотом: ’); Readln(n); Write(‘Введіть щорічний прибуток Чахлика: ’); Readln(m); Write(‘Введіть “потреби” Василини Премудрої: ’); Readln(k); Sum:=n; {Початковий “капітал” Чахлика} Years:=18; {Початковий вік Василини} While Sum<=k do Begin Sum:=Sum+m; Years:=Years+1; End; Writeln(‘Василині вже виповнилося ’,Years,’ років.‘); Readkey; {Затримка зображення на екрані}
End. Задача №3 Умова: На дверях ліфта висіло загрозливе попередження про те, що двері зачиняються самі в той самий момент, коли зайвий за вагою пасажир переступить поріг ліфта. Котрий пасажир постраждає, якщо ліфт витримує вагу не більше S кг, а вага пасажирів, що стоять у черзі до ліфта, дорівнює відповідно a1, a2, a3, … an? В цій задачі зручніше використовувати цикл с післяумовою, тому що спочатку необхідно дати можливість "ввійти" пасажиру в ліфт, а потім перевіряти, чи витримає його ліфт. Умовою виходу з циклу буде перевищення сумарної ваги пасажирів, що увійшли в ліфт, деякого заданого критичного значення. Для зберігання ваги чергового пасажиру в цій задачі ми будемо використовувати одну й ту саму змінну (А), так як після перевірки вага пасажира нас вже не цікавить. Program Example_179; Uses crt; Var N:word; {I – номер пасажира, що увійшов у
ліфт} Sum,A,S:real; {Sum – сумарна вага пасажирів, що знаходяться в ліфті, A – вага чергового пасажира, що увійшов до ліфта, S – критична вага, що може бути піднята ліфтом}
Begin
Clrscr; Sum:=0; {На початку роботи програми в ліфті N:=0; немає пасажирів} Write(‘Введіть критичну вагу, що піднімає ліфт: ’); Readln(S); Repeat Write(‘Введіть вагу чергового пасажира: ’); Readln(А); Sum:=Sum+А; N:=N+1; Until Sum>S; Writeln(‘Постраждає ’,N,’-й пасажир.’); Readkey; {Затримка зображення на екрані}
End. Задача №4 Умова: Знайти значення (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:=1; {Початкове значення дорівнює 1, тому що результат являється накопиченням добутку} For I:=1 to 9 do Rez:=Rez*(I+0.1*I); Writeln(‘Rez= ’,Rez:8:2); Readkey; {Затримка зображення на екрані}
End.
ІІІ. Домашнє завдання
Розв’язати наступні задачі:
№1.
Дано ціле n. Визначити 1*3*5*7*…*(2n+1).
№2.
Капосний папуга навчився висмикувати у дідусі Василя волосся, яке ще залишилося у того на голові. Почавши з однієї волосини, він щодня збільшував порцію вдвічі. Через скільки днів дідусеві не знадобиться гребінець, якщо спочатку в нього на голові було аж N волосин?