Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012_METODICh_POSOBIE_PASCAL.doc
Скачиваний:
18
Добавлен:
15.09.2019
Размер:
2.97 Mб
Скачать
  1. Оператор циклаWhile.

Оператор цикла WHILE, известный так же как оператор цикла с предусловием, имеет следующий вид.

while p do s;

Работа оператора определяется следующей схемой:

При выполнении этого оператора сначала вычисляется некоторое логическое выражение р (условие), принадлежащее типу Boolean, в случае истинности которого выполняется оператор s (являющийся, как правило, составным). После этого вычисление условия, его проверка и выполнение оператора s повторяются до тех пор, пока выражение р не становится равным FALSE. Затем управление передается следующему (после WHILE) оператору программы.

Если условие р равно FALSE с самого начала, оператор s, который называется телом цикла, не выполнится ни разу. Если условие р тождественно TRUE (while true do s), цикл будет бесконечным. Очевидно, для того чтобы тело цикла выполнилось всего несколько раз (чтобы количество итераций было больше нуля, но меньше бесконечности), значение условия должно каждый раз преобразовываться в теле цикла.

Для того чтобы понять разницу между операторами цикла WHILE и FOR, рассмотрим соответствующие фрагменты программ, выводящие на экран строки звездочек.

Цикл WHILE Цикл FOR

Line:=l; for Line:=l to n do

while Line<n do WriteLn(‘**********’);

begin

WriteLn(‘**********’);

Line:= Line+1

end;

Если переменная Line объявлена (в разделе описания переменных) как принадлежащая типу Integer, оператор FOR выведет на экран п строк звездочек. Реализация задачи с помощью оператора FOR выглядит проще, поскольку здесь нет нужды в операторе присваивания Line : =1 и Line : = Line+1.

  1. Оператор цикла 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 точка с запятой необязательна.