Цикл REPEAT - цикл с постусловием
Завершает тройку циклов цикл с постусловием - REPEAT (англ. "повтор"). Примечательно, что этого цикла во многих языках программирования нет - есть только FOR и WHILE. Между тем, цикл с постусловием очень удобен.
Работает цикл точно так же, как и WHILE, но с одним лишь отличием, следующим из его названия - условие цикла располагается после тела цикла, а не до него.
Общий вид:
REPEAT
{действия}
UNTIL {условие выхода из цикла };
Есть несколько моментов, на которые стоит обратить внимание. Во-первых, в качестве условия задаётся уже условие выхода из цикла , в то время как в цикле WHILE задаётся условие продолжения цикла . Во-вторых, при наличии нескольких команд, которые помещаются в тело цикла , заключать их в блок BEGIN .. END не нужно - зарезервированные слова REPEAT .. UNTIL сами составляют аналогичный блок.
Цикл с постусловием , в отличие от цикла с предусловием, всегда выполняется хотя бы один раз! Но, как и цикл WHILE, при неверно написанном условии цикл станет "вечным".
Решение задачи с помощью цикла REPEAT
program sum;
var
s,a:byte;
n:longint;
begin
write('n = '); readln(n);
s := 0; a := 0;
repeat
s := s + n mod 10; {Суммируемцифры}
a := a + 1; {определяем количество цифр}
n := n div 10; {Уменьшаем разряд,
определяем условие выхода из цикла}
until n = 0;
writeln('Сумма цифр числа равна ', s);
writeln('Количество цифр в числе ', a);
end.