Общий вид оператора:
WHILE <логическое выражение> DO <оператор>;
Этот оператор заменяет в блок-схеме цикла только блок «Решение», если он стоит в самом начале цикла. Если используется параметр цикла, то он должен явно изменяться в цикле.
Здесь истинность выражения проверяется каждый раз перед выполнением цикла, и внутренний оператор выполняется, пока выражение истинно. Так как проверка осуществляется в начале, то при начальном ложном логическом выражении внутренний оператор не выполнится ни разу.
Параметр цикла может отсутствовать в самых разнообразных задачах, часто носящих итерационный характер. Но иногда количество повторений неизвестно и в циклах с параметром, например вычисление бесконечных сумм. В численных методах значения вычисляются с конечной точностью, поэтому и количество вычислений конечно: суммирование заканчивается, когда выражение под знаком суммы будет меньше наперед заданного числа, которое условно можно назвать точностью вычислений.
В качестве примера составим программу для вычисления суммы при заданной точности ε = 10-3:
Program Sum2;
Const Eps=1e-3;
Var
i:integer;
S,v:real;
Begin
S:=0;
i:=1;
v:=1; {любое число больше Eps}
While v>Eps do
Begin
v:=(i+1)/(i*i*i+8);
S:=S+v;
i:=i+1
end;
WriteLn (‘Сумма=’,S:6:3)
end.
Заметим, что вывод суммы выполняется в виде числа с фиксированной точкой (для большей наглядности) с тремя знаками в дробной части. Если выводить больше значений, то они недействительные, – числовой мусор; если выводить меньше, то тогда зачем считать с такой точностью?