1. Использование в качестве условия выражения не логического типа:
While (n + m) Do
2. Отсутствие в заголовке цикла слова Do:
While (n < 10)
3. Использование после слова Do точки с запятой, которая, как правило, приводит к появлению бесконечного цикла:
While (n < 10) Do;
s := s + n;
n := n + 1;
У циклов с постусловием (циклов типа ДО) проверка условия окончания цикла производится после выполнения операторов, составляющих тело цикла:
Такой цикл повторяется до тех пор, пока условие ложно. Выполнение цикла заканчивается, если операторы цепочки изменяют значения переменных, входящих в условие, и оно становится истинным.
В любом случае этот цикл выполняется хотя бы один раз. Цикл с постусловием превращается в бесконечный, если условие подобрано так, что оно всегда ложно.
Таким образом, условие в данном цикле является условием его окончания, а не продолжения, как в цикле с предусловием.
В Паскале цикл с постусловием реализован оператором цикла Repeat:
где Repeat – служебное слово повторять,
Until – служебное слово до.
Внимание! После слова Repeat точка с запятой не ставится! Перед словом Until точку с запятой можно не ставить.
В отличие от цикла с предусловием, в цикле с постусловием не требуется использование операторных скобок Begin … End.
Действия оператора Repeat:
1. выполняется оператор (цепочка),
2. проверяется выполнение условия, стоящего после слова Until,
3. если оно ложно, то цикл повторяется,
4. если условие становится истинным, то цикл заканчивает работу.
Примеры:
1. вычислить сумму ста первых натуральных чисел:
Пусть s – искомая сумма,
i – очередное число (изменяется от 1 до 100).
Тогда алгоритм решения задачи можно описать следующим образом:
d. обнуляем сумму s ,
e. берем первое число: i = 1,
f. добавляем в сумму очередное число, пока оно не достигнет 100.