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

7.9 Оператор циклу

Оператор циклу задає повторне виконання визначених операторів.

Якщо число повторень наперед відоме, то відповідною конструкцій є оператор for. В осоружному випадку слідує використовувати оператори while або repeat.

Для управління повторенням операторів можна використовувати стандартні процедури Break і Continue. Break завершує оператор циклу, а Continue продовжує з наступної ітерації цього оператора.

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

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

Результат виразу повинен бути булевого типу. Оператори розташовані між ключовими словами repeat і until, виконуються послідовно до тих пір, поки результат виразу не прийме значення True. Послідовність операторів виконається по крайній мірі один раз, оскільки обчислення виразу проводиться після кожного виконання послідовності операторів.

Наведемо приклади оператора циклу з післяумовою:

repeat

До := I mod J;

I := J;

J := ДО;

until J = 0;

repeat

Write('Введіть значення (0..9):');

Readln(I);

until (I >= 0) and (I <= 9);

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

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

Вираз, за допомогою якого здійснюється управління повторенням оператора, повинен мати булевий тип. Обчислення його проводиться до того, як внутрішній оператор буде виконаний. Внутрішні оператори виконуються повторно до тих пір, поки вираз приймає значення Тruе. Якщо вираз з самого початку приймає значення False, то оператор, що міститься усередині оператора циклу з передумовою, не виконується.

Прикладами операторів циклу з передумовою можуть служити наступні оператори:

while Data[I]<> X do I := I + 1;

While I > 0 do

begin

if Odd(I) then Z := Z * X;

I := I div 2;

X := Sqr(X);

end;

while not Eof(InFile) do

begin

Readln(InFile,Line);

Process(Line);

end;

7.9.3. Оператори циклу з параметром (for)

Оператори циклу з параметром (які починаються із слова for) викликає виконання оператора, що повторюється (який може бути складовим оператором) поки управляючої змінної присвоюється зростаюча послідовність значень.

Як управляюча змінна повинен використовуватися ідентифікатор зміною (без якого-небудь кваліфікатора), який позначає змінну, оголошену локальній в блоці, в якому міститься оператор for. Управляюча змінна повинна мати перелічувальний тип. Початкове і кінцеве значення повинні мати тип сумісний по привласненню з перелічувальним типом.

Коли починає виконуватися оператор for, початкове і кінцеве значення визначаються один раз, і ці значення зберігаються на протязі всього виконання оператора for.

Оператор, який міститься в тілі оператора for, виконується один раз для кожного значення в діапазоні між початковим і кінцевим значенням. Управляюча змінна завжди ініціалізувалася початковим значенням. Коли працює оператор for, значення управляючої змінній (лічильника циклів) збільшується при кожному повторенні на одиницю. Якщо початкове значення перевищує кінцеве значення, то що міститься в тілі оператора for оператор не виконаються. Коли в операторі циклу використовується ключове слово downto, значення управляючої змінної зменшується при кожному повторенні на одиницю. Якщо початкове значення в такому операторі менше ніж кінцеве значення, то що міститься в тілі оператора циклу оператор не виконаються.

Якщо оператор, що міститься в тілі оператора for, змінює значення управляючої змінної, то це є помилкою. Після виконання оператора for значення управляючої змінної становится невизначеним, якщо тільки виконання оператора for не було перерване за допомогою оператора переходу.

Якщо взяти до уваги ці обмеження, то оператор

for V := Expr1 to Expr2 do Body;

еквівалентний оператору:

begin

Temp1 := Expr1;

Temp2 := Expr2;

if Temp1 <= Temp2 then

begin

V := Temp1;

Body;

while V <> Temp2 do

begin

V := Succ(V);

Body;

end;

end;

end;

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

for V := Expr1 downto Exp2 do Body;

еквівалентний операторам:

begin

Temp1 := Expr1;

Temp2 := Expr2;

if Temp1 >= Temp2 then

begin

V := Temp1;

Body;

while V <> Temp2 про

begin

V := Pred(V);

Body;

end;

end;

end;

де Temp1 і Temp2 - допоміжні змінні, тип яких збігається з основним типом змінної V і які не зустрічаються в іншому місці програми.

Наведемо приклади оператора циклу з параметром:

for I := 2 to 63 do

if Data[I]> Max then Max := Data[I]

for I := 1 to 10 do

for J := 1 to 10 do

begin

X := 0;

for До := 1 to 10 do

X := X + Mat1[I,K]*Mat2[K,J];

Mat[I,J]:= X;

end;

for З := red to blue do Check(C);