Оператор циклу з передумовою While

Лінійні алгоритми і алгоритми з розгалуженням не дозволяють у багатьох випадках ефективно використовувати усю обчислювальну потужність комп’ютера. Для цього необхідні програми, в яких окремі фрагменти виконуються багаторазово. Одним з найбільш простих засобів організації повторного виконання серії команд є Цикли.

У мові PascalABC можлива організація циклів трьох видів:

  • цикл з передумовою – while;
  • цикл з параметром – for;
  • цикл з післяумовою – repeat/until.

Кожен з трьох способів організації циклу має свої особливості, для кожного способу є своє коло завдань, найбільш природно розв’язуваних саме з його допомогою.

Оператор циклу з передумовою – while

Циклwhile використовують в тому випадку, коли необхідно, щоб на початку перевірялася деяка умова, а потім, якщо умова істинна, виконувалися деякі дії. В процесі виконання цих дій відбувається зміна значень змінних, що входять до вказаної умови у якості операндів. Завдяки цьому при N-кратному виконанні циклу значення логічного виразу – умови з True на False.

У цьому випадку виконання циклу закінчується, і виконується перший оператор, що стоїть після оператора циклу.

Якщо під час запису умови або операторів, які виконуються в циклі, була допущена помилка, то в такій ситуації можливо зациклення – значення логічного виразу ніколи не прийме значення False і, як наслідок, група операторів в циклі буде виконуватися нескінченно.

Цикл – while служить для організації N-кратного виконання групи операторів (тіла циклу) до тих пір, поки залишається істинним умова виконання циклу.

Схема оператора циклу з передумовою.

  • while (умова) do
    • оператор_А;

Виконується цей цикл наступним чином: спочатку обчислюється значення виразу-умови, якщо воно істинне (приймає значення True), то виконується тіло циклу. В іншому випадку виконується оператор, що стоїть після оператора циклу (тобто тіло циклу виконується до тих пір, поки значення умови не стане False).

Зауваження.

  1. Як тіло циклу може бути використаний будь-який оператор, в тому числі, составний. Це дає можливість циклічно повторювати не одну дію, а кілька. У цьому випадку конструкція циклу while набуває такого вигляду:
    • while (умова) do
      • begin
        • оператор_1;
        • оператор_n;
      • end;
  2. Якщо умова в циклі while одразу при першій перевірці приймає значення False, то тіло циклу не виконається жодного разу.
  3. Дозволяється використання вкладених циклів, тобто конструкцій, в якихдеякі оператори тіла циклу самі можуть бути циклами. Інший спосіб вкладення циклів не припустимий.
    Приклад:
    • while (умова_1) do
      • while (умова_2) do
        • begin
          • оператор_1;
          • while (умова_3) do
            • оператор_i;
          • оператор_n;
        • end;
  4. Слід підбирати умову для циклів 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;
  • writeln('Сума ', n, ' членів ряду = ', sum);
  • end.