Найти сумму ста первых элементов натурального ряда чисел:
Program p7_1;
Label m;
Var s,i: integer;
Begin
S:=0; i:=1;
m: s:=s+i:
i:=i+1:
if i<= 100 then goto m;
Writeln(‘Сумма=’,s:4);
End.
По способу действия циклы подразделяются на два вида; циклы с предусловием и циклы с постусловием.
Оператор цикла с параметром (цикл с предусловием)
for i:=m1 to (downto) m2 do S;
где i – параметр цикла; m1 и m2 начальное и конечное соответственно значение параметра цикла i; S – оператор тела цикла.
Работа оператора:
1) параметру цикла i присваивается начальное значение m1;
2) текущее значение параметра цикла сравнивается с конечным значением m2 и, если оно меньше или равно m2, то выполняются операторы тела цикла (S), в противном случае происходит выход из цикла;
3) параметр цикла i увеличивается на шаг и повторяется п. 2.
Пример (предыдущая задача)
Program p7_2;
Var s,i: integer;
Begin
S:=0;
for i:=1 to 100 do s:=s+i;
Writeln(‘Сумма=’,s:4);
End.
Оператор цикла с предусловием
while ЛВ do S;
В операторах цикла с предусловием сначала проверяется значение логического выражения ЛВ и в случае его истинности осуществляется выполнение операторов тела цикла. Если значение ЛВ – ложно, то происходит выход из цикла.
Пример (предыдущая задача)
Program p7_3;
Var s,i: integer;
Begin
S:=0; i:=1;
While i<=100 do
begin
s:=s+i:
i:=i+1;
end;
Writeln(‘Сумма=’,s:4);
End.
Оператор цикла с постусловием
Repeat
Оп1;
Оп2;
….
Оп k
until ЛВ;
В операторах цикла с постусловием сначала осуществляется выполнение операторов тела цикла, а затем проверяется значение логического выражения ЛВ. В случае его истинности происходит выход из цикла. Если значение ЛВ – ложно, то опять выполняются операторы тела цикла.
Примеры реализации циклических алгоритмов с известным и неизвестным числом повторений:
Пример (предыдущая задача)
Program p7_4;
Var s,i: integer;
Begin
S:=0; i:=1;
Repeat
s:=s+i:
i:=i+1;
until i>100;
Writeln(‘Сумма=’,s:4);
End.
Пример на цикл с неизвестным числом повторений.
Определить, при каком k выполнится следующее условие:
, при k=1, 2, 3..
Program p7_5;
Var eps, x,y: real;
k: integer;
Begin
Write(‘Введите х и точность:’);
Readln(x, eps);
k:=1;
repeat
y:=x/(k*k*k);
k:=k+1;
until abs(y)<=eps;
Writeln(‘k=’, (k-1):6);
end.