Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПР9.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
138.24 Кб
Скачать

Програмування” Практична робота №9

Практична робота № 9 Тема:Реалізація циклічних алгоритмів

  1. Мета роботи: Закріпити навички складання програм для реалізації циклічних алгоритмів

  2. Загальні відомості

2.1. Оператор циклу з передумовою (while)

У практиці програмування цикли — повторювані виконання тих самих простих або складених операторів — грають дуже важливу роль. Існує три стандартних способи організації циклічних обчислень.

Розглянемо оператор циклу з передумовою,

WHILE Умова DO Оператор;

Конструкція WHILE...DO переводиться як «поки...робити». Оператор (простий або складений), що стоит після службового слова DO і має назву тіло циклу, буде виконуватися циклічно, поки виконується логічна умова, тобто поки значення «Умови» дорівнює True. Сама умова циклу може бути логічною константою, перемінної або вираженням з логічним результатом.

Умова виконання тіла циклу WHILE перевіряється до початку виконання кожної ітерації. Тому, якщо умова відразу не виконується, то тіло циклу ігнорується і буде виконуватися оператор, що коштує відразу за тілом циклу.

При написанні циклів із передумовою варто пам'ятати про дві речі. По-перше, щоб цикл мав шанс коли-небудь завершитися, вміст його тіла повинний обов'язково впливати на умову циклу. По-друге, умова повинна складатися з коректних виражень і значень, визначених ще до першого виконання тіла циклу. Пояснимо сказане прикладом, що обчислює значення факторіала 10!

VAR Factorial, N : Integer;

BEGIN

Factorial := 1; { стартове значення факторіала = ПРО! }

N := 1; {стартове значення для умови циклу}

WHILE N<=10 DO

begin { початок тіла циклу WHILE }

Factorial:=Factorial*N;{ обчислення факторіала N! }

N := N + 1 { N повинно мінятися в циклі }

end; { кінець тіла циклу WHILE }

WriteLn( Factorial ); { висновок результату розрахунку }

END.

Зверніть увагу на присвоювання N! перед циклом. Без нього значення N може бути будь-яким, і умова може бути некоректною, не говорячи вже про саме значення факторіала. Значення N міняється усередині циклу. При цьому набагато безпечніше так писати тіло циклу, щоб оператор, що впливає на умову, був останнім у тілі. Це гарантує від небажаних переборів. Якщо, скажемо, поставити рядок N:=N+1; перед обчисленням значення Factorial, то результатом програми буде значення 11!. Виправити помилку можна, замінивши стартове значення N на 0, а умову — на N<10. Але від цього програма навряд чи стане наочніше.

Оскільки циклові WHILE «усе рівно», що відбувається в його тілі, тіло може містити інші, вкладені, цикли.

2.2. Оператор циклу з постумовою (repeat...Until)

Розглянутий вище оператор циклу з передумовою вирішує, виконувати своє чи тіло ні, до першої ітерації. Якщо це не відповідає логіці алгоритму, то можна використовувати цикл із постумовою, в якому вирішуються, робити чи ні чергову ітерацію, лише після завершення попередньої ітерацію. Це має принципове значення лише на першому кроці, а далі цикли поводяться ідентично.

Цикл із постумовою завжди буде виконаний хоча б один раз.

Оформляється такий цикл за допомогою службових слів REPEAT і UNTIL (повторювати до):

REPEAT

Оператор 1;

Оператор2;

- - - - - - - -

Оператор

UNTIL Умова;

Перше з них повідомляє цикл і відкриває його тіло, а друге — закриває тіло і містить умову закінчення циклу. Тіло циклу може бути порожнім або містити один і більш операторів. В останньому випадку слова BEGIN і END не потрібні: їхню роль грають слова REPEAT і UNTIL.

Умова — це логічне значення, перемінна або вираження з логічним результатом. Але працює воно тут зовсім не так, як у циклі WHILE. Якщо в циклі WHILE мається на увазі алгоритм «поки умова виконується, виконувати оператори тіла циклу», то цикл REPEAT...UNTIL відповідає алгоритмові «виконувати тіло циклу, поки не стане дійсною умова».

Іншими словами, у циклі з REPEAT...UNTIL умовою продовження ітерацій буде невиконання умови (його значення False). Гарною ілюстрацією до вищесказаного може бути конструкція «вічного циклу»:

REPEAT UNTIL False;

Цей цикл порожній і ніколи не припиняється. Він гарний тільки у випадку, коли потрібно заблокувати програму, і, можливо, весь комп'ютер. Перервати цикл можна спеціальними операторами: Exit, Halt. Це має сенс, якщо умов завершення програми багато або вони дуже складні.

Якщо умова кінця циклу більш гнучка, чим константа False, то в тілі циклу повинні міститися оператори, що впливають на саму умову. Про попередню коректність умови, як у випадку циклу WHILE, піклуватися вже необов'язково.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]