Выражение, контролирующее повторения, должно быть булевским. Оно вычисляется перед выполнением последовательности операторов. Эта последовательность выполняется до тех пор, пока выражение имеет значение True. Если выражение имеет значение False в самом начале, то последовательность операторов не выполнится ни разу.
Пример {вычисление h(n)=1+1/2+1/3+…+1/n}
Program exwhile;
var n: integer;
H: real;
begin
read(n); write(n);
h:=0;
while n>0 do
begin
h:=h+1/n; n:=n-1
end;
writeln(h)
end.