52841.fb2 Я готуюсь до курсу інформатики. Алгоритмізація та програмування - читать онлайн бесплатно полную версию книги . Страница 20

Я готуюсь до курсу інформатики. Алгоритмізація та програмування - читать онлайн бесплатно полную версию книги . Страница 20

УРОК 19. Цикли з параметром

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

На початку уроку рекомендується провести письмове опитування по матеріалах попереднього уроку. Далі можна розглянути деякі типові задачі з використанням циклу з параметром. Нагадуємо, що в усіх цих задачах кількість повторень буде відома заздалегідь.

ЗАДАЧА №183

Умова задачі: Компанія бабусь поїхала на мотоциклах на курси комп’ютерної грамотності. Попереду на мотоциклі без глушника їхала одна бабуся, за нею - дві, потім - три і т.д. Скільки бабусь їхало на заняття, якщо приголомшені пішоходи всього нарахували N рядів? Чи змогли бабусі зайняти всі місця у класі, якщо там стояло k рядів по / комп’ютерів у кожному? Скільки вільних місць залишилося?

Розв’язання: Зверніть увагу на те, що фактично ця задача зводиться до знаходження суми всіх натуральних чисел від 1 до N. У кінці задачі для повторення команди розгалуження учням пропонується визначити кількість зайнятих бабусями та вільних місць. Програма розв’язання даної задачі має такий вигляд:

Program Example_183;

Uses crt;

Var I,N,Sum:word;{I - параметр циклу, N - кількість рядів мотоциклів. Sum - кількість бабусь, що приїхали на курси} Place,k,l:word;{k - кількість рядів у комп’ютерному класі, 1 - кількість комп’ютерів у кожному ряду, Place - кількість місць, якої вистачило для бабусь}

Begin

Clrscr;

Sum:=0;

Write(‘Введіть кількість рядів мотоциклів: ‘);

Readln(N);

For I:=1 to N do Sum:=Sum+I;

Writeln(‘Кількість бабусь, що приїхали на курси ‘,Sum);

Writeln(‘Кількість комп’ютерів на курсах ‘,к*1) ;

If Sum<k*l

Then writeln(‘Бабусі не змогли зайняти всі місця.’)

Else writeln(‘Бабусі зайняли всі місця.’);

Place:=Sum - к*1;

If Place>0

Then writeln(‘Бабусям не вистачило ‘,Place,’ місць.’);

Readkey;

End.

ЗАДАЧА № 189

Умова: Знайти значення

(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.

ЗАДАЧА № 190

Умова задачі: Дано ціле п. Визначити п!

Розв’язання: Відомо, що n! (вимовляється як n-факторіал) - це добуток всіх натуральних чисел від 1 до п. Тому програма має вигляд:

Program Example_190_1;

Uses crt;

Var I,n:word; {I - параметр циклу}

Factorial:longint; {Factorial - результат обчислень}

Begin

Clrscr;

Factorial:=1;

Write(‘Введіть значення n: ‘);

Readln(n);

For I:=1 to n do Factorial:=Factorial*I;

Writeln(‘Factorial= ‘, Factorial:8:2); Readkey;

End.

ЗАДАЧА № 191

Умова задачі: За данимнатуральним значенням змінної п обчислити:

Розв’язання: Для розв’язання цієї задачі необхідно виконати обчислення, починаючи з самого вкладеного кореня. Кожний наступний крок обчислюється таким чином: до попереднього результату додається двійка і з отриманої суми береться квадратний корінь.

Програма, що виконує описані обчислення, наведена нижче:

Program Example_191_6;

Uses crt;

Var I,n:word;{I - параметр циклу}

Rez:real;{Rez - результат обчислень}

Begin

Clrscr;

Rez:=0; {Початкове значення дорівнює 0,току що результат є накопиченням суми}

Write(‘Введіть значення n: ‘);

Readln(n);

For I:=1 to n do

Begin Rez:=sqrt(Rez+2);

End;

Writeln(‘Rez= ‘,Rez:8:2);

Readkey;

End.

ЗАДАЧА №210

Умова: Дано ціле число п, яке набуває значень шкільних оцінок. Визначити відповідною кількістю звукових сигналів, яка саме оцінка була задана («1» - один звуковий сигнал, «2» - два сигнали і т.д.). Якщо ж задане число не відповідає значенню шкільної оцінки—подати довгий звуковий сигнал.

Розв ‘язання: Звуковий сигнал у цій програмі можна подавати за допомогою процедур керування вбудованим динаміком sound та nosound. Перша з них викликає звучання ноти заданої частоти (частота вказується в дужках після процедури), а друга виключає динамік. Тривалість звучання та паузи між звуками можна задавати процедурою delay, параметром якої є змінна time (значення цієї змінної можна задати командою присвоєння або введенням із клавіатури). Отже, програма має вигляд:

Program Example_210;

Uses crt;

Var I,n:word; {I - параметр циклу, n - оцінка учня}

Time:word;

Begin

Clrscr;

Write(‘Введіть Вашу оцінку: ‘);

Readln(n);

Time:=10000;

{Значення цієї змінної залежить від характеристик комп’ютера, і може бути підібрана практичним шляхом}

If (n<1) or (n>12) Then

begin

writeln(‘Ви помилились, такої оцінки не існує.’);

sound(200); delay (time 5); nousound;

end

Else

For I:=1 to n do

Begin

Sound(200); Delay(time);

Nousound; Delay(time);

End;

Readkey;

End.

Домашнє завдання:

• Повторити теоретичний матеріал по роботі циклу з параметром;

• виконати задачі № 189 (4), № 190 (3), №191, № 211, № 178, № 188.