logo
методичка_1_05_ВНУ

Цикл з передумовою

Часто на практиці доводиться стикатися з циклічними об­численнями, коли кількість повторень циклу наперед невідома, зате задана деяка умова закінчення циклу. Для таких випадків у мові Паскаль є два типи операторів - цикл з передумовою і цикл з післяумовою.

Розглянемо ще раз задачу з гармонічним рядом, проте сформулюємо її так: скільки членів гармонічного ряду по­трібно, щоб сума ряду перевищила деяке число - границю, тоб­то

1+1/2+1/3+…+1/n > границя.

Звичайно, маємо на увазі мінімальну кількість членів. У цій задачі невідома кількість повторень, однак задана умова закінчення - сума > границя. Для розв'язування цієї задачі можна використати цикл з передумовою.

Загальний вигляд оператора циклу з передумовою такий:

while <умова> do <оператор>;

де <умова> - це будь-який логічний вираз, <оператор> -довільний оператор мови Паскаль. Оператор виконується в циклі доти, доки умова має значення true. Як тільки значення умови стане false, відбувається вихід з циклу і виконуватиметься наступний оператор. Оператор у циклі з передумовою може не виконуватись зовсім, якщо умова дорівнює false з самого початку.

Задачу обчислення мінімальної кількості членів гармоніч­ного ряду, сума яких перевищує деяку границю, можна реалі­зувати за допомогою оператора циклу з передумовою:

sum:=0;

numb:=0;

while sum<=board do

begin

numb:=numb+1;

sum:=sum+1/numb

end;

За допомогою оператора while можна розв’язати задачу табулювання функції (обчислення та виведення на друк всіх значень функції y=f(x), якщо аргумент x функції набуває значень з проміжку [a,b], змінюючись кожен раз на величину кроку h=x).

Програма табулювання функції y=sin(3x) на інтервалі [1,3] з кроком 0.2.

program TabFunc;

uses

Crt;

var

x,y:real;

begin

ClrScr;

x:=1;

while x<=3.05 do

begin

y:=sin(3*x);

writeln('x=',x:9:3,' y=',y:9:3);

x:=x+0.2;

end;

readln;

end.

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