Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи програмування Паскаль.docx
Скачиваний:
51
Добавлен:
12.05.2015
Размер:
511.7 Кб
Скачать

9. Оператор циклу. Цикли із передумовою і після-умовою

Циклічний обчислювальний процес (ЦВП) характеризується повторенням тих самих обчислень над деяким набором даних. Числом повторень циклу управляє спеціальна змінна, називана його лічильникомабокеруючої змінної циклу. На лічильник накладається умова, що визначає, доки слід виконувати цикл.

Повторюваний блок обчислень називають тіломциклу. У тілі циклу повинне бути забезпеченазміна значення лічильника, щоб він міг завершитися. Якщо тіло циклу полягає більш, ніж з одного оператора, вонополягає в операторные дужкиbegin ... end;. Однократне виконання тіла циклу називають йогокроком.

Таким чином, для програмування циклу досить визначити умова, що управляє числом його повторень і описати оператори, що утворюють тіло циклу. Із цього погляду, теоретично можливі всього два види циклів – перевірка умови або передує виконанню тіла циклу, або відбувається після нього. Зобразимо ці цикли у вигляді блок-схем з відповідними описами:

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

Цикл із після-умовою: спочатку виконується тіло циклу, потім керування передається на перевірку умови. Залежно від істинності або хибності умови, тіло циклу виконується повторно або ж відбувається перехід до оператора, що випливає за тілом циклу. Усі, сказане про можливе зациклення для циклу із передумовою, справедливо й для циклу з після-умовою.

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

У мові Паскаль реалізовано обоє виду циклів. Цикл із передумовою має наступний загальний вид:

while логічний_вираз do begin

{оператори тіла циклу}

end;

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

Логічне вирази будується за правилами, вивченим у главі 7. Тіло циклу можуть утворювати будь-які оператори Паскаля. Якщо в тілі циклу всього один оператор, операторные дужки можна й не писати.

Загальний запис циклу з після-умовою наступна:

repeat

{оператори тіла циклу}

until логічний_вираз;

Працює цикл із після-умовою у такий спосіб: "тіло циклу повторюється доти, поки логічне вирази не стане дійсним". Зверніть увагу, що, на відміну відwhile, циклrepeatу Паскалі працює, поки умованеправильна. Ця відмінність підкреслюється використанням ключового словаuntil(" доти, покине") замістьwhile(" доти, поки"). Крім того, у вигляді виключення, тіло циклуrepeat, навіть якщо воно складається з декількох операторів, можнанемістити в операторные дужки.

Досить часто цикли взаємозамінні. Представимо, наприклад, що для кожного зі значень змінної x=1,2,…,20, потрібно виконати деякий розрахунки (математично цей закон зміни x можна записати як або). Покажемо загальний вид циклівwhileіrepeat:

x:=1;

while x<=20 do begin

{оператори розрахунків}

x:=x+1;

end;

x:=1;

repeat

{оператори розрахунків}

x:=x+1;

until x>20;

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

Найчастіше використання одного із циклів виглядає більш бажаним. Наприклад, обробка введення користувача із клавіатури зручніше за допомогою repeat(спочатку користувач повинен нажати клавішу, потім випливають перевірки й обробка).