3. Циклічні алгоритми

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

Циклічний алгоритм - це алгоритм, що містить один або кілька циклів.

В мові Паскаль існують зручні конструкції для організації циклів:

• цикл з передумовою;

• цикл з післяумовою;

• цикл з лічильником.

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

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

Загальна форма запису наступна:

 

while <булево выражение> do
  begin
    група операторів
  end;

 

Операторні дужки ставлять, щоб відокремити від решти програми ту групу операторів, яку потрібно повторити в циклі. Якщо в циклі потрібно виконати тільки один оператор, то операторні дужки не ставлять.

 

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

 

  1. значення умови виконання циклу має бути визначено до початку циклу;

 

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

 

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

 

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

Загальна форма запису наступна:

 

repeat

   оператори оператори

until <умова>;

Є невелика відмінність в організації циклу repeat в порівнянні з while: для виконання в циклі repeat декількох операторів не слід поміщати ці оператори в операторні дужки begin ... End. Зарезервовані слова repeat і until діють як операторні дужки.
Конструкція repeat ... until працює аналогічно циклу while. Різниця полягає в тому, що цикл while перевіряє умову до виконання дій, у той час як repeat перевіряє умову після виконання дії. Це гарантує хоча б одне виконання дії до завершення циклу.

 

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

Загальна форма запису циклу з лічильником

for і := A to B do

  begin

    . . .

  end;

 

for і := A downto B    do

  begin

    . . .

  end;

 

Змінна і - керуюча змінна або змінна циклу,

А - початкове значення змінної циклу,

В - кінцеве значення змінної циклу.

При переході до обробки оператора циклу for керуючій змінні присвоюється задане початкове значення. Потім у циклі виконується оператор (або складений оператор), кожного разу після виконання оператора керуюча змінна збільшується на 1 (для for ... to) або зменшується на 1 (для for ... downto). Цикл завершується при досягненні керуючої змінної свого кінцевого значення.

Тип керуючої змінної не повинен бути real.

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

close