Оператор циклу Паскаля з
передумовою можна вважати найбільш універсальним — з використанням таких
операторів можна задати і циклічні процеси, зумовлені операторами циклу з
параметром і з післяумовою.
Відзначимо відмінності та особливості хорошого
стилю роботи з розглянутими циклічними операторами.
Цикл з передумовою While
(поки умова істинна) |
Цикл з післяумовою Repeat
(до істинності умови) |
1. До початку циклу повинні бути
зроблені початкові установки змінних, керуючих умовою циклу, для коректного
входу в цикл |
|
2. У тілі циклу повинні бути
присутніми оператори, що змінюють змінні умови так, щоб цикл через деяке число
ітерацій завершився |
|
3. Цикл працює поки умова істинна
(поки True) |
3. Цикл працює поки умова
помилкова (поки False) |
4. Цикл завершується, коли умова
стає помилковим (до False) |
4. Цикл завершується, коли умова
стає істинним (до True) |
5. Цикл може не виконатися жодного
разу, якщо початкове значення умови при вході в цикл False
|
5. Цикл обов'язково виконається як
мінімум один раз |
6. Якщо в тілі циклу потрібно
виконати більше одного оператора, то необхідно використовувати складений
оператор |
6. Незалежно від кількості
операторів у тілі циклу, використання складеного оператора не потрібно |
Цикл з лічильником (з параметром) For
|
|
· Початкова установка змінної
лічильника циклу до заголовка не потрібно |
|
· Зміна в тілі циклу значень
змінних, що стоять у заголовку не допускається |
|
· Кількість ітерацій циклу
незмінно і точно визначається значеннями нижньої і верхньої меж і кроку
збільшення |
|
· Нормальний хід роботи циклу може
бути порушений оператором goto
або процедурами Break
і Continue |
|
· Цикл може не виконатися жодного
разу, якщо крок циклу буде змінювати значення лічильника від нижньої межі в
напрямку, протилежному верхній межі |
Оператор, який
виконується в циклі, сам може бути циклом. Це відноситься до всіх видів циклів.
У результаті ми отримуємо вкладені цикли.
Механізм роботи вкладених циклів зручніше за все розглянути на прикладі
вкладених циклів з параметром. Нехай нам потрібно описати роботу електронного годиника, починаючи з моменту 0 годин, 0 хвилин, 0 секунд. Значення хвилин стане рівним 1
тільки після того, як секунди «пробіжать» всі послідовні значення від 0 до
59. Години змінять своє значення на 1
тільки після того, як хвилини «пробіжать» всі послідовні значення від 0 до 59.
Таким чином, виведення всіх значень часу від початку доби до кінця доби може
бути представлений наступним фрагментом програми:
For h: = 0 to 23 do
For m: = 0 to 59 do
For s: = 0 to 59 do
Writeln (h ,':', m ,':', s);
Для зручності реалізації циклічних структур на
Паскалі в останніх версіях мови введені, застосовувані всередині циклів. Вони
розширюють можливості використання циклів і покращують структуру програми.
У процесі виконання тіла циклу до повного
завершення циклу можуть виникнути додаткові умови, що вимагають завершення
циклу. У цьому випадку цикл може бути припинений оператором break.
У ході виконання циклу може виникнути умова,
при якому необхідно пропустити всі або деякі дії, передбачені в циклі, не
припиняючи роботу циклу зовсім. Для цього використовується оператор continue, що передає
контроль в ту точку програми, де перевіряється умова продовження або припинення
циклу.
Контрольні
запитання:
1. Що таке вкладені
циклічні структури.
2. Охарактеризуйте
оператори break
та continue.