Організація циклів
У своїй практичній діяльності людина постійно стикається із завданнями, при вирішенні яких потрібно багаторазово повторювати одні й ті самі дії. Для складання алгоритмів розв'язання таких завдань використовуютьсякоманди повторення (цикла).
Розглянемо наступний приклад. Нехай потрібно визначити залишок від розподілу числа М на число N (М і N - довільні натуральні числа). Найпростіший спосіб вирішення цього завдання полягає в наступному: перевіряємо, чи не менше М, ніж N (якщо М
Мал. 34.Циклічні структури
У цикліпоки спочатку перевіряється умова, і якщо воно виконується, тобто логічний вираз істинно, то виконується оператор і знову перевіряється умова. Записана в цикліпоки умова є умовою продовження циклу. Як тільки воно перестане виконуватись, цикл завершиться. На малюнку 34 вихід з ромба "+" (або так) означає виконання умови циклу, "-" (абоні) - невиконання. Циклпоки не виконається жодного разу, якщо умова при вході до структури виявилася хибною. Як правило, циклпоки містить умова повторення, а цикл до - умова закінчення роботи циклу. Обидві структури мають один вхід та один вихід. Однак циклдо завжди виконується хоча б один раз, тому що умова перевіряється після виконання дії. Це ускладнює перевірку правильності програми, тому краще використовувати циклпоки. Оператор у циклі може бути простим або складовим, укладеним в операторні дужки. І тут у циклі можуть повторюватися кілька операторів, а чи не один. Оператори, що повторюються в циклі, називаютьсятілом циклу.
Цикли можна організовувати за допомогою різних засобів мови Паскаль.
Оператор безумовного переходу. Цей оператор дозволяєперейти без перевірки умови або на один із попередніх операторів, або на один із наступних, тобто змінити порядок виконання команд. Загальний вигляд оператора:
goto n;
деп -ціле число, не більше ніж з чотирьох цифр, зване міткою. Мітка з'являється в програмі три рази: 1) в описовій частині в розділіLabel;2) в операторіgoto; 3) перед оператором, на який здійснюється безумовний перехід, у цьому випадку мітка від оператора відокремлюється двокрапкою.
Організація циклів за допомогою операторів умовного і безумовного переходів. з чисел на величину меншого до тих пір, поки обидва числа не дорівнюють.
| Вихідні дані | Перший крок | Другий крок | Третій крок | НОД (А, В) = 5 |
| А = 25 | А = 10 | А = 10 | А = 5 | |
| =15 | =15 | В=5 | В=5 |
програм E5;
label 1,2;
var a, b: integer;
Begin
write('введіть два натуральні числа');
readln (a,b); 1:
1: якщо a = b then goto 2;
if a > b then a: = a - b else b: = b - a;
goto 1;
2: write ('НОД = ',a);
Readln
End.
Оператор циклу поки. Як видно з попереднього прикладу, циклічний процес можна організувати без використання спеціальних операторів. Однак при складанні досить серйозних програм використовувати оператор безумовного переходу не рекомендується, тому що можна швидко заплутатися під час перевірки програми.Оператор циклупоки має вигляд:
while умова do оператор;
і виконується наступним чином: оператор (тіло циклу) повторюється доти, доки виконується умова (істинно логічний вираз). Оператор може бути простим або складним, укладеним в операторні дужки begin . end. Для алгоритму Евкліда програма набуде вигляду:
програм E6;
var a, b: integer;
Begin
write('введіть два натуральні числа');
readln (a, b);
while a<>bdo
if a>bthen a: = a - b else b: = b - a;