Этот оператор используется в том случае, если некоторую последовательность действий (инструкций программы) надо выполнить несколько раз, причем необходимое число повторений во время разработки программы неизвестно и может быть определено только во время ее работы, т.е. определяется ходом вычисления.
Формат записи оператора:
WHILE <логическое выражение> DO
BEGIN
{операторы циклической части программы}
END;
Оператор цикла действует следующим образом. Предварительно проверяется значение логического выражения. Пока оно истинно, выполняются операторы циклической части. Как только оно становится ложным, происходит выход из цикла. Если с самого начала значение логического выражения ложно, то операторы циклической части не выполняются ни разу. Операторы циклической части, заключенные в операторные скобки BEGIN – END, представляют собой составной оператор. Возможен случай, когда в циклической части стоит оператор перехода, передающий управление за пределы цикла. В такой ситуации цикл может завершиться до его естественного окончания (при истинном значении логического выражения).
Если в циклической части стоит всего один оператор, то операторные скобки BEGIN – END можно не указывать и оператор цикла принимает вид:
WHILE <логическое выражение> DO <оператор>;
Пример 6.
Вычислить значения функции , если значение аргумента изменяется от до с шагом .
Решение:
program pr1;
var x,xn,xk,dx,b,y:real;
begin
readln(xn,xk,dx,b);
x:=xn;
while x<=xk do
begin
if x<b then y:=exp(exp(1)) else y:=ln(x);
writeln(‘x=’, x:8:2, ‘y=’, y:8:2);
x:=x+dx
end
end.
Необходимо обратить внимание:
- для того чтобы инструкции оператора цикла while были выполнены хотя бы один раз, необходимо, чтобы перед выполнением оператора while условие выполнения цикла было истинно;
- для того чтобы цикл завершился, необходимо, чтобы последовательность инструкций между BEGIN и END изменяла значения переменных, входящих в логическое выражение.