Если какое-то действие или несколько действий необходимо выполнить много раз, но заранее неизвестно сколько раз и это зависит от какого-то условия, то тогда следует воспользоваться циклом с предусловием, имеющим вид:
WHILE <условие> DO <оператор>
Конструкция читается: пока выполняется условие делать ...
Условие - это логическое выражение, истинность которого проверяется в начале каждой итерации.
Оператор, следующий за ключевым словом DO называется телом цикла. На месте тела цикла может быть записан составной оператор BEGIN ... END.
В этом случае цикл с предусловием будет иметь вид:
WHILE <условие> DO
BEGIN
<операторы>
END
Перед каждым новым выполнением тела цикла проверяется условие и если оно истинно (TRUE), то выполняется тело цикла, а иначе цикл заканчивается и выполняется команда, следующая за данной алгоритмической конструкцией.
Рассмотрим пример.
program SUM1;
uses Crt;
var N,sum,I,M:integer;
begin { - начало тела главной программы}
clrscr; writeln;
writeln('<<< вычисления суммы квадратов первых N чисел >>>');
writeln('<<< до тех пор пока сумма не превысит число М >>>');
writeln;
write('М = ? '); readln(M);
sum:=0;
N:=1;
while sum<M do
begin
sum:=sum+N*N;
N:=N+1
end;
sum:=sum-N*N; N:=N-1;
writeln('Сумма квадратов ',N:4,' первых чисел равна ',sum);
readln
end.