Оператор WHILE
Оператор FOR
for <count> := <Нач_Значение> to <Кон_Значение> do <Оператор>;
for <count> := <Нач_Значение> downto <Кон_Значение> do <Оператор>;
Счетчик count – локальная переменная перечислимого типа.
Нач_Значение и Кон_Значение – выражения того же типа, что и счетчик count.
Пример 1. Вычислить сумму
Листинг 9. Сумма ряда
program Pr9;
{$APPTYPE CONSOLE}
const
n=20;
var
S,x,a : real;
i,Sign : integer;
begin
x:=0.2; Sign:=1; a:=1; S:=a;
for i:=1 to n do
begin // составной оператор
Sign:=-Sign;
a:=Sign*a*x/i;
S:=S+a;
end;
Writeln(‘S = ’, S:8:2);
Readln;
end.
while <УСЛОВИЕ> do <ОПЕРАТОР>;
где УСЛОВИЕ - выражение логического типа. Цикл while выполняется до тех пор, пока УСЛОВИЕ = true.
Пример 2. Вычислить сумму
Листинг 10. Сумма ряда
program Pr10;
{$APPTYPE CONSOLE}
const
n=20;
var
S,x,a : real;
i,Sign : integer;
begin
x:=0.2; Sign:=1; a:=1; S:=a; i:=0;
while i < n do
begin // составной оператор
i:=i+1;
Sign:=-Sign;
a:=Sign*a*x/i;
S:=S+a;
end;
Writeln(‘S = ’, S:8:2);
Readln;
end.
Пример 3. Вычислить сумму
Листинг 11. Сумма ряда
program Pr11;
{$APPTYPE CONSOLE}
const
n=20;
Eps=1.0e-6;
var
S,x,a : real;
i,Sign : integer;
begin
x:=0.2; Sign:=-1; a:=1; S:=a; i:=0;
while Abs(a) > Eps do
begin
i:=i+1; Sign:=-Sign; a:=Sign*a*x/i;
S:=S+a;
end;
Writeln(‘S = ’, S:8:2);
Readln;
end.

где УСЛОВИЕ - выражение логического типа. Цикл repeat…until выполняется до тех пор, пока УСЛОВИЕ = false.
Листинг 12. Сумма ряда
x:=0.2; Sign:=1; a:=1; S:=a; i:=0;
repeat
i:=i+1;
Sign:=-Sign; a:=Sign*a*x/i;
S:=S+a;
until Abs(a)<=Eps;
Пример 4. Методом деления отрезка пополам с точностью Eps=10-6 решить уравнение ex-2=0.
Листинг 13. Метод деления пополам
program Pr13;
{$APPTYPE CONSOLE}
const
Eps=1.0e-6;
var
x,a,b : real;
function F(x: real): real;
begin
Result:=Exp(x)-2;
End;
begin
a:=0; b:=10;
repeat
x:=(a+b)/2;
y:=F(x);
if F(a)*F(x)<0 then b:=x else a:=x;
until Abs(b-a) < Eps;
Writeln(‘x = ’, (a+b)/2:8:2);
Readln;
end.
Пример 5. Вычислить сумму цифр числа.
Листинг 14. Сумма цифр числа
var
n,Sum: integer;
begin
Write(‘N=’); Readln(N);
Sum:=0;
repeat
Sum := Sum + N mod 10;
N := N div 10;
until N=0;
Writeln(‘Sum = ’, Sum);
Readln;
End.
Пример 5. Вычислить максимальное значение функции (x^2-3x+2)/Sqrt(x^3-1) в узловых точках на интервале [a,b], если он разбит на n частей.
Листинг 15. Максимум функции
const
n=20;
var
i: integer;
X,Y,h,MaxValue: real;
function F(x: real): real;
begin
Result := (x*x-3*x+2)/Sqrt(x*x*x-1);
end;
begin
Write(‘A=’); Readln(A);
Write(‘B=’); Readln(B);
h := (B-A)/n;
x := A;
MaxValue := F(x);
while x<B do
begin
X := x+h; y := F(x);
if y > MaxValue then MaxValue := y;
end;
Writeln(‘MaxValue = ’, MaxValue:8:2);
Readln;
End.