В циклах FOR, REPEAT и WHILE можно использовать процедуры прерываний - BREAK и CONTINUE.
Процедура BREAK осуществляет немедленный выход из цикла, не дожидаясь выполнения условия о выходе из него. Процедура CONTINUE позволяет начать новую итерацию цикла, даже если предыдущая еще не закончена.
Пример. Найти первое отрицательное число во входном потоке из вещественных чисел (не более 100).
Program contine;
Var
i: Integer;
a: Real;
Begin
For i:=1 to 100 do
Begin
read (a);
If a >= 0 then сontinue; {пpи выполнении условия изменяется паpаметp цикла и цикл повторяется сначала}
WriteLn ( ' Первое отрицательное число = ' , a);
Break {выход из цикла}
end
end.
Примеры и задания для циклов с постусловием
Пример 1.Вычислить 15 значений для двух функций: y1(x) = tg(x) и y2(x) = ctg(x) на интервале a ≤ x ≤ b, при
a = 0.6*Pi, b = 0.7*Pi.
Для вычислений функций разработана СА (рис. 10) и следующая программа:
Program func;
Const n = 14;
a = 0.6*Pi;
b = 0.7*Pi;
Var x, y1, y2, dx: real;
Begin
dx:=abs((a-b)/n);
x:=a;
Repeat
y1:=sin(x)/cos(x);
y2:=1/y1;
writeln('x=', x:6:4,' y1= ', y1:7:4,' y2=', y2:7:4);
x:=x+dx
Untilx>b;
End.
Пример 2. Вычислить сумму s = 1+1/4+1/9+1/16 +...
с точностью до E = 0.00001 (рис. 11).
PROGRAM summa;
CONST
E = 0.00001; {точность}
VAR
s, r: REAL; { s – сумма, r – слагаемое}
i: INTEGER; { i – счетчик слагаемых}
BEGIN
s:=0;
i:=1;
REPEAT
r: = 1/sqr(i); {вычисление слагаемого}
s := s + r;
I := I + 1 {счет слагаемых}
UNTIL r<E; {сравнение слагаемого с Е}
WRITELN ( 'Сумма = ' , s:9:5); {вывод суммы}
END.