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

27) Оператор повторення

Оператор використовується для опису дій, які мають повторюватися стільки разів, скільки це необхідно. Застосовуються дві форми оператора повторення (циклу) (repetition (cycle) statement) – do і while.

Форма оператора повторення do

Оператор, виконання якого повторюється утворює, так зване тіло циклу. Виконання оператора do починається з виконання на обраному векторі оператора, розміщеного в тілі циклу, стану на обраному векторі. Після виконання обчислюється вираз G, результат якого бульового типу. Якщо результат true, то виконання циклу завершується і вектор передається оператору наступному за цим оператором повторення. У протилежному випадку вектор-стан передається оператору в тілі циклу, і він знову виконується.

Якщо вираз G не чутливий до результату обчислення оператора в тілі циклу, то або оператор тіла виконується один раз, або виконання циклу ніколи не завершується (говорять, що оператор зациклюється). Оскільки, ці випадки не становлять інтересу, то вважається, що позначення прийнаймі деяких об'єктів із G мають з’являтися в лівих частинах операторів присвоювання в тілі циклу.

Форма циклу do має використовуватися тоді, коли необхідно змінити (повторним застосуванням оператора в тілі циклу) деяку ситуацію, описувану виразом G. Початок циклу do відбувається в умовах що не відповідають G, а оператор у тілі циклу виконується хоча б двічі. Тому цикл do використовується тоді, коли ситуація, яку намагається встановити програміст, описується виразом G, що не має жодного сенсу доти, доки не буде виконано деяку конкретну дію, котра визначає значення цього виразу і, отже її сенс. Це істотно для ініціалізації (підготовки) циклу тому, якщо підготовка циклу відбувається у тілі циклу, то, вочевидь, її необхідно виконати один раз і при подальших повтореннях пропускати.

Наприклад, для мови Pascal:

repeat

if ((nA <> 0) and (nA >= 10))

then

nA := 0

else

nA := nA + 1;

until nA < 10;,

тут оператор if-then-elsе утворює тіло циклу, і вираз nA < 10 (після until) – це вираз G. Оператор присвоювання в частині then оператору вибору виконує ініціалізацію циклу.

Синтаксис оператора для мови С має такий вигляд (дод. В):

Наприклад, для мови С:

do

{

nA = nA + 1;

nI = nI + 1;

}

while (nI < 10);

тут складений оператор

{

nA = nA + 1;

nI = nI + 1;

}

є тілом циклу, а вираз відношення nI < 10 – це вираз G.

Форма оператора повторення while

Ця форма оператора повторення використовується тоді, коли якусь дію (оператор) необхідно повторювати доти, доки зберігається умова G. На відміну від форми do, яка починається у стані G – «ні», виконання while починається у стані G – «так». Для цієї форми оператора ініціалізація циклу відбувається за межами оператора повторення і успадковується як частина вектора–стану. Тому, існує небезпека утворення сильного взаємозв'язку між попередніми операторами та оператором циклу.

Синтаксис цієї форми оператора повторення для мови Pascal має наступний вигляд (дод. А):

Наприклад, для мови Pascal:

while nI < 20 do

begin

nA := nA + nI;

nI := nI + 1;

end;.

Тут складений оператор є тілом циклу.

Синтаксис оператора для мови С має такий вигляд (дод. В):

Наприклад, для мови С:

while (nI < 20)

{

nA = nA + nI;

nI = nI + 1;

Тут також складений оператор є тілом циклу.