Иногда при решении задач возникает необходимость выполнить тело цикла хотя бы один раз, а потом исследовать условие повторять ли его еще раз. Эту задачу выполнит другой вид цикла Repeat.
repeat
операторы
until <условие>;
Есть небольшое отличие в организации цикла repeat по сравнению с while: для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin ... end. Зарезервированные слова repeat и until действуют как операторные скобки.
Алгоритм работы оператора:Конструкция repeat ... until работает аналогично циклу while. Различие заключается в том, что цикл while проверяет условие до выполнения действий, в то время как repeat проверяет условие после выполнения действий. это гарантирует хотя бы одно выполнение действий до завершения цикла.
Пример:a) repeat b) repeat
read (Number); i := i+1;
Sum := Sum+Number; writeln (Sqr(i))
until Number=-1 until Number=-1
Program Prostoe;
Uses
Crt;
Var
i, {возможный делитель}
Number : integer; {исследуемое число}
Begin
ClrScr;
writeln (‘Какое число должно быть проверено? ‘);
read (Number);
i := 1;
repeat
i := i+1;
until Number mod i = 0;
if Number=i then
writeln (Number,’ является простым‘)
else writeln (Number,’ делится на ‘,i);
readln;
End.
Program P68;
{ Paritatea numerelor citite de la tastature }
var i : integer;
begin
writeln('Dati numere оntregi:');
repeat
readln(i);
if odd(i) then writeln(i:6, ' - numre impar')
else writeln(i:6, ' - numre par');
until i=0;
readln;
end.
Program P69;
var x, epsilon,
y1, y2 : real;
begin
write('x='); readln(x);
write('epsilon='); readln(epsilon);
y2:=1;
repeat
y1:=y2;
y2:=y1/2+x/(2*y1);
writeln(y2);
until abs(y1-y2)<=epsilon;
readln;
end.