Програма складається з одного складного оператора for a: = false to true do, в який вкладено послідовно ще два оператора for і оператор if. Частина then останнього містить складний оператор, що складається з трьох простих операторів, охоплених програмними дужками begin та end.
Цикли з логічними умовами
Введений в попередньому розділі оператор циклу for забезпечує виконан-ня циклу задану кількість разів, проте часто циклічні дії за-канчівалісь за умовою, тобто виконуються до досягнення визначено-ного результату. У Паскалі є два таких оператора циклу, що відрізняються тим, що в одному з них умова перевіряється на початку циклу (while .do), а в іншому - в кінці циклу (repeat .until).
Оператор циклу while (поки, в той час як) має вигляд:
While <логическое выражение> do <тело цикла>;
Цикл While забезпечує виконання тіла циклу, наступного за сло-вом do до тих пір, поки умова має значення true (істина). Як ті-ла циклу може використовуватися простий або складний оператор. Умова перевіряється перед початком кожного виконання тіла циклу, тому, якщо до першого виконання циклу умова має значення false (брехня), опера-тор не виконується жодного разу (рис. 5.2).
Приклад. Необхідно перетворити значення кута в градусах до стандарт-ному діапазону ± 180 ° шляхом виключення повних обертів кола ± 360 °. Ця процедура може бути виконана за допомогою оператора циклу
While abs (Angle)> 180 do
if Angle> 0 then Angle: = Angle - 360
else Angle: = Angle + 360;
Оператор while на початку циклу перевіряє, чи перевищує кут за абсо-лютні значенням 180 градусів. Якщо це не справедливо, тіло циклу не ви-виконується. Якщо кут більше допустимого, починається виконання циклу.
Цикл складається з оператора if. Припустимо, кут дорівнює -700. Тоді умова An-gle> 0 в операторі if має значення false, при цьому виконується частина else оператора if, і кут отримає значення -340. Знову відбувається перевірка умови виконання циклу, і цикл виконується другий раз, після чого кут дорівнює 20. При третьої перевірці умови виконання циклу він закінчує-ся, оскільки умова його виконання Abs (20)> 180 прийняло значення false.
Оператор циклу repeat. until. (Повторювати до тих пір, поки) має вигляд Repeat <тело цикла> until -<логическое выражение>;
Принципова відмінність оператора repeat .until від оператора while .do в тому, що перевірка умови проводиться не перед початком виконання оператора, а в його кінці, коли вирішується питання, повторити ще раз дей-наслідком. Тому тіло цього циклу завжди виконується принаймні один раз (рис. 5.3). Це важлива відмінність: наведений для циклу while. do при-заходів реалізувати з оператором циклу repeat. until неможливо без додаткового-них перевірок і ускладнень.
Друга відмінність від оператора while .do - в логіці завершення циклу. Цикл оператора repeat .until виконується до тих пір, поки не стане істинним логічне вираз, наступне за словом until. Таким чином, використання логічного виразу тут має протилежний опе-ратор while .do сенс. Тут при істинності логічного виразу (умови) цикл припиняється, а у оператора while .do при істинності логічного виразу цикл триває.