Оператор цикла REPEAT
Оператор цикла REPEAT, известный как оператор цикла с постусловием, имеет такой вид:
repeat S until P;
Работа оператора определяется следующей схемой:
При выполнении этого оператора сначала выполняется тело цикла (S), затем вычисляется некоторое логическое выражение P(условие), принадлежащее типу Boolean, в случае ложности которого вновь выполняется тело цикла. Затем выполнение тела цикла, вычисление условия P и его проверка повторяются до тех пор, пока выражение Pне становится равным TRUE. После этого управление передаётся следующему (за REPEAT) оператору в программе.
Оператор REPEAT отличается от оператора WHILE, во-первых, тем, что здесь условие проверяется после выполнения тела цикла. Иными словами, гарантируется хотя бы однократное его выполнение. Во-вторых, оператор REPEAT выполняется до тех пор, пока условие равно FALSE, и управление передается следующему (за REPEAT) оператору, когда условие становится равным TRUE (для оператора WHILE имеет место обратная зависимость).
Даже если условие р равно TRUE с самого начала, тело цикла выполнится хотя бы раз. Если условие р тождественно FALSE (repeat s until false), цикл будет бесконечным. Для того чтобы понять разницу между операторами цикла WHILE и REPEAT, рассмотрим соответствующие фрагменты программ, вычисляющих степени числа 3 в диапазоне между 1 и 300.
Цикл WHILE Цикл REPEAT a: =3: a: =3; while a< 300 do repeat begin WritteLn (a); WritteLn (a); a: =a*3 a: =a*3 until a> =300; End;
Прежде всего бросается в глаза, что условия повторения цикла для двух случаев противоположны. Это объясняется тем, что в операторе WHILE цикл выполняется, пока условие не примет значение FALSE, а в операторе REPEAT – пока условие не примет значение TRUE. Так же следует обратить внимание на то, что тело цикла REPEAT не требуется заключать в операторные скобки BEGIN… END. Если в операторе WHILE после ключевого слова DO выполняется единственный оператор (и если требуется циклически выполнять несколько действий, приходится несколько операторов объединять в составной оператор), то в операторе REPEAT между ключевыми словами REPEAT и UNTIL можно ввести любое количество операторов, без необходимости заключать их в операторные скобки. Наконец в операторе REPEAT после последнего оператора в теле цикла нет точки с запятой. Это ещё одна особенность оператора REPEAT—перед ключевым словом UNTIL точка с запятой необязательна.
|