9. Оператор циклу. Цикли з передумовою та постумовою
Циклічний обчислювальний процес (ЦВП) характеризується повторенням тих самих обчислень над деяким набором даних. Числом повторень циклу управляє спеціальна змінна, звана йоголічильникомабокерівною змінноюциклу. На лічильник накладається умова, що визначає, доки слід виконувати цикл.
Повторюваний блок обчислень називають тіломцикла. У тілі циклу має бути забезпечена зміна значення лічильника, щоб він міг завершитися. Якщо тіло циклу складається з більш ніж одного оператора, вонополягає в операторні дужкиbegin . end;. Одноразове виконання тіла циклу називають йогокроком.
Таким чином, для програмування циклу достатньо визначити умову, що керує числом його повторень та описати оператори, що утворюють тіло циклу. З цієї точки зору, теоретично можливі лише два види циклів – перевірка умови або передує виконанню тіла циклу, або відбувається після нього. Зобразимо ці цикли у вигляді блок-схем з відповідними описами:
Цикл з передумовою: спочатку перевіряється умова, потім, залежно від того, істинно воно чи хибно, або виконується тіло циклу, або слідує перехід до оператора, що йде за тілом циклу. Після завершення тіла циклу керування знову передається на перевірку умови. Природно, передбачається, що в тілі циклу було забезпечено деяку зміну змінних, що входять в умову - в іншому випадку відбудетьсязациклюванняі програма "зависне".
Цикл з постумовою: спочатку виконується тіло циклу, потім керування передається на перевірку умови. Залежно від істинності чи хибності умови, тіло циклу виконується повторно або відбувається перехід до оператора, наступного за тілом циклу. Все, сказане проможливе зациклювання для циклу з передумовою, справедливо і для циклу з постумовою.
Виходячи з наведених блок-схем, очевидно основна відмінність двох циклів: цикл з постумовою гарантовано виконується хоча б раз, а цикл з передумовою може не виконуватися жодного разу, якщо умова відразу ж виявиться хибним.
У мові Паскаль реалізовано обидва види циклів. Цикл з передумовою має такий загальний вигляд:
while логічний_вираз do begin
Роботу циклу можна описати словами: "поки логічний вираз істинно, повторюється тіло циклу".
Логічне вираз будується за правилами, вивченими розділі 7. Тіло циклу можуть утворювати будь-які оператори Паскаля. Якщо в тілі циклу лише один оператор, операторні дужки можна і не писати.
Загальний запис циклу з умовою наступний:
Працює цикл з умовою наступним чином: "тіло циклу повторюється доти, поки логічне вираз не стане істинним". Зверніть увагу, що, на відміну від while, циклrepeatв Паскалі працює, поки умовахибно. Ця відмінність підкреслюється використанням ключового словаuntil("доти, покине") замістьwhile("доти, поки"). Крім того, як виняток, тіло циклуrepeat, навіть якщо воно складається з декількох операторів, можнанеукладати в операторні дужки.
Досить часто цикли взаємозамінні. Уявімо, наприклад, що для кожного зі значень змінної x = 1,2, ..., 20, потрібно виконати деякий розрахунок (математично цей закон зміни можна записати як або

Як видно з лістингу, що управляє змінною xв обох випадках присвоєно початкове значення1, обидва цикли змінюють значенняxі, відповідно, умова циклу, операторомx:=x+1;, але дляциклу повторюється умова "перевернута" ("поки не стане більше 20"), а тіло не укладено в операторні дужки.
Найчастіше використання одного з циклів виглядає кращим. Наприклад, обробка введення користувача з клавіатури зручніша за допомогою repeat (спочатку користувач повинен натиснути клавішу, потім слідують перевірки та обробка).