Вказівка повторення

Вказівка повторення

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

Він використовується при розв'язуванні таких задач, де необхідно повторити деяку послідовність команд більше одного разу.

Відомі два типи команди повторення, що суттєво розрізняються:

  • цикл з відомою заздалегідь кількістю повторів;
  • цикл з невідомою кількістю повторів.

В мові програмування Паскаль існує три типи циклів: for, while та repeat . Якщо кількість повторів відома заздалегідь, використовується оператор for (безумовний цикл), якщо кількість повторів невідома, застосовуються оператори repeat або while (умовний цикл).


Оператор повтору for.
Цей оператор повторення інакше називається циклом з параметром (або лічильником). Він складається із заголовка та тіла циклу та може бути поданий у двох форматах.

1. for <параметр циклу> := <S1> to <S2> do
begin
<серія>;
end;

2. for <параметр циклу> := <S1> downto <S2> do
begin
<серія>;
end;

де S1 і S2 - вирази, що визначають відповідно початкове і кінцеве значення параметру циклу;
for.. do - заголовок циклу;
<серія> - тіло циклу (тіло циклу може бути простим або складеним).

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

Параметр циклу, його початкове і кінцеве значення повинні належати до одного типу даних. При цьому можливо використання будь-якого скалярного типу, крім дійсного, тобто цілого (integer, byte, word, longint), булівського (boolean) та символьного (char).

Значення параметра циклу послідовно збільшується при for... to або зменшується при for... downto на одиницю при кожному повторі.

Кількість повторів тіла циклу в операторі for можна визначити за наступною таблицею:

Оператор S1<S2 S1=S2 S1>S2
for .. to S2-S1+11 разНе виконується
for .. downtoНе виконується1 разS1-S2+1 раз

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

Цикл може не виконатися зовсім (дивись таблицю), але ніколи не може зациклитись на відміну від наступних двох операторів повторення.

Наприклад:
Знайти суму всіх натуральних чисел від 1 до 100. Uses crt;
Var Sum, i : integer;
Begin
Clrscr;
Sum := 0;
For i := 1 to 10 do
Sum := Sum + i;
Writeln(‘Sum = ‘, Sum);
Readkey;
End.


Оператор повтору while
В операторі while перевірка умови виконання тіла циклу робиться на самому початку оператора, тому цикл інакше називається циклом із предумовою.

Формат опису:

while <умова> do
begin
<серія>;
end;

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

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

Наприклад: Дано натуральне число N. Визначити кількість цифр в числі.
Uses crt;
Var N : longint; Counter : integer;
Begin
Clrscr;
Write(‘Введіть число: ’);
Readln(N);
Counter := 0;
While N > 0 do
Begin
Counter:=Counter+1; {Підрахунок кількості цифр}
N:=N div 10; {Відкидання останньої цифри}
End;
Writeln(‘Кількість цифр у заданому числі дорівнює’, N);
Readkey;
End.



Оператор повтору repeat
Наступний оператор циклу складається з заголовка (repeat), тіла та умови закінчення (until).
Формат опису:

repeat
<серія>
until <умова>;

Умова - вираз булівського типу.

В цьому циклі спочатку виконується серія (тіло циклу), а потім перевіряється умова виходу з циклу. Саме тому ця команда повторення інакше називається циклом із післяумовою. Якщо умова виходу з циклу хибна (false), цикл активізується ще раз, якщо результат істинний (true), відбувається вихід із циклу.

Цей оператор повтору має наступні характерні риси:

  • використовується у випадках, коди користувачу не відома заздалегідь кількість повторень;
  • тіло циклу виконується хоча б один раз;
  • тіло циклу виконується, поки умова хибна false;
  • у тілі може знаходитися будь-яка кількість операторів без операторних дужок begin... end;
  • принаймні один оператор у тілі циклу повинен змінювати значення умови, інакше цикл буде виконуватися нескінченно.

Для передчасного виходу з циклу можна присвоїти параметру циклу значення, що виходить за діапазон дозволених значень.

Наприклад: Перевірка коректності введення. Дани три числа, що задають величини кутів трикутника. Визначити, чи можна побудувати трикутник, що має задані кути. Якщо ні, примусити користувача ввести інші дані.

Uses crt;
Var a,b,c : real;
Begin
Clrscr;
Repeat
Write(‘Введіть довжини сторін трикутника: ’);
Readln(a,b,c);
Until (a>0)and(b>0)and(c>0)and(a+b+c)=180;
End.