Конспект уроку №10

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

Тема: Реалізація найпростіших програм з циклами.

Мета: систематизувати набуті знання з теми цикли; вдосконалити вміння розв’язувати задачі на застосування циклів.

Тип уроку: практична робота

І. Актуалізація ЗУН.

самостійна робота (10 -15 хв)

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 волосин?