Оператор циклу з передумовою While
Лінійні алгоритми і алгоритми з розгалуженням не дозволяють у багатьох випадках ефективно використовувати усю обчислювальну потужність комп’ютера. Для цього необхідні програми, в яких окремі фрагменти виконуються багаторазово. Одним з найбільш простих засобів організації повторного виконання серії команд є Цикли.
У мові PascalABC можлива організація циклів трьох видів:
- цикл з передумовою – while;
- цикл з параметром – for;
- цикл з післяумовою – repeat/until.
Кожен з трьох способів організації циклу має свої особливості, для кожного способу є своє коло завдань, найбільш природно розв’язуваних саме з його допомогою.
Оператор циклу з передумовою – while
Цикл – while використовують в тому випадку, коли необхідно, щоб на початку перевірялася деяка умова, а потім, якщо умова істинна, виконувалися деякі дії. В процесі виконання цих дій відбувається зміна значень змінних, що входять до вказаної умови у якості операндів. Завдяки цьому при N-кратному виконанні циклу значення логічного виразу – умови з True на False.
У цьому випадку виконання циклу закінчується, і виконується перший оператор, що стоїть після оператора циклу.
Якщо під час запису умови або операторів, які виконуються в циклі, була допущена помилка, то в такій ситуації можливо зациклення – значення логічного виразу ніколи не прийме значення False і, як наслідок, група операторів в циклі буде виконуватися нескінченно.
Цикл – while служить для організації N-кратного виконання групи операторів (тіла циклу) до тих пір, поки залишається істинним умова виконання циклу.
Схема оператора циклу з передумовою.
- while (умова) do
- оператор_А;
Виконується цей цикл наступним чином: спочатку обчислюється значення виразу-умови, якщо воно істинне (приймає значення True), то виконується тіло циклу. В іншому випадку виконується оператор, що стоїть після оператора циклу (тобто тіло циклу виконується до тих пір, поки значення умови не стане False).
Зауваження.
- Як тіло циклу може бути використаний будь-який оператор, в тому числі, составний. Це дає можливість циклічно повторювати не одну дію, а кілька. У цьому випадку конструкція циклу while набуває такого вигляду:
- while (умова) do
- begin
- оператор_1;
- …
- оператор_n;
- end;
- begin
- while (умова) do
- Якщо умова в циклі while одразу при першій перевірці приймає значення False, то тіло циклу не виконається жодного разу.
- Дозволяється використання вкладених циклів, тобто конструкцій, в якихдеякі оператори тіла циклу самі можуть бути циклами. Інший спосіб вкладення циклів не припустимий.
Приклад:- while (умова_1) do
- while (умова_2) do
- begin
- оператор_1;
- while (умова_3) do
- оператор_i;
- оператор_n;
- end;
- begin
- while (умова_2) do
- while (умова_1) do
- Слід підбирати умову для циклів while таким чином, щоб в певний момент вона змінила своє значення з True на False, інакше настане «зациклення» програми.
Приклад: створити програму яка обчислює суму ряду 1+2+3+…+n:
- Program SumRow;
- var
- i, n : integer;
- Sum : real;
- begin
- write('Введіть кількість членів ряду');
- readln(n);
- i := 0;
- sum := 0;
- while (i < n) do
- begin
- i := i + 1;
- sum := sum + i;
- end;
- begin
- writeln('Сума ', n, ' членів ряду = ', sum);
- end.