28. Основные операторы циклов и ветвления

26.08.2014 14:37 Александр
Печать

Если в программе возникает необходимость неоднократного выполнения некото­рых операторов, то используются операторы повтора (цикла). В языке Паскаль раз­личают три вида операторов цикла: while, repeat, for. Они используются для орга­низации циклов различных типов. Выражение, управляющее повторениями, долж­но иметь булевский тип.

Если число повторений оператора (составного оператора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используются операторы while, repeat. Оператор for используется, если число повторений заранее известно.

Оператор while

Оператор while (пока) часто называют оператором цикла с предусловием за то, что проверка условия выполнения тела цикла производится в самом начале оператора.

 

Синтаксическая диаграмма для данного оператора выглядит следующим обра­зом:

Форма записи:

While < условие продолжения пговторений> do

<тело цикла>

Условие - булевское выражение, тело цикла - простой или составной опе­ратор. Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True, тело цикла выполняется и снова вычисляется выражение условия. Если результат равен False, происходят выход из цикла и пере­ход к первому после while оператору.

Оператор повтора repeat

Оператор повтора repeat аналогичен оператору while, но отличается от него, во-первых, тем, что условие проверяется после оче­редного выполнения операторов тела цикла (очередной итерации) и таким образом гарантируется хотя бы однократное выполнение цикла, а во-вторых, тем, что крите­рием прекращения цикла является равенство выражения константе True. За это цикл repeat часто называют циклом с постусловием, или циклом "ДО", так как он прекращает выполняться, как только значение выражения условия, записанного после слова until, равно True (истина).

Оператор повтора repeat состоит из заголовка repeat, тела и условия окончания until.

 

Синтаксическая диаграмма для данного оператора выглядит следующим обра­зом:

Формат записи:

Repeat

<оператор>

<оператор>

Until

<условие окончания цикла>

Операторы, заключенные между словами repeat и until, являются телом цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Именно поэтому цикл, организованный с помощью оператора repeat, в любом случае выполнится хотя бы один раз. Если результат булевского выражения равен False, то тело цикла активизируется еще раз; если результат True, происходит вы­ход из цикла.

Оператор повтора for

В случаях, когда число повторений может быть зара­нее известно, для организации циклической обработки информации применяется оператор повтора for. Часто этот оператор повтора называют оператором цикла с параметром, так как число повторений задается переменной, называемой пара­метром цикла, или управляющей переменной.

Оператор повтора for состоит из заголовка и тела цикла.

Синтаксическая диаграмма для данного оператора выглядит следующим обра­зом:

Как видно из диаграммы, он может быть представлен в двух форматах:

где S1 и S2 - выражения, определяющие соответственно начальное и конечное значения параметра цикла.

Тело цикла может быть простым или составным оператором. Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все зна­чения параметра цикла от начального до конечного.

Заголовок оператора повтора for определяет:

диапазон изменения значений управляющей переменной (параметра цикла) и одновременно число повторений оператора, содержащегося в теле цикла;

 

направление изменения значения параметра цикла (возрастание -to или убывание - downto).

При первом обращении к оператору for вначале вычисляются выражения S1, S2 и осуществляется присваивание <параметр циклa>: = Sl.

После этого циклически повторяются следующие действия.

1. проверяется условие <параметр цикла>:< = S2.

2. если условие выполнено, то оператор for продолжает работу (выполняется оператор в теле цикла), если условие <параметр цикла>:< = S2 не выполнено, то оператор for завершает работу, и управление в программе передается на оператор, следующий за циклом.

3. значение управляющей переменной изменяется на +1 (to) или -1 (downto) и далее с п. 1. Обратите внимание, что шаг изменения управляющей переменной - единица.

На использование управляющей переменной (параметра цикла) в цикле for на­лагаются следующие ограничения.

1. в качестве параметра должна использоваться простая переменная, опи­санная в текущем блоке.

2. управляющая переменная должна иметь дискретный тип.

3. начальные и конечные значения диапазона должны иметь тип, совместимый с типом управляющей переменной. При этом допустим любой скалярный тип, кро­ме вещественного.

4. в теле цикла запрещается явное изменение значения управляющей перемен­ной (например, оператором присваивания).

 

5. после завершения оператора значение управляющей переменной становится неопределенным, если только выполнение оператора не было прервано оператором перехода.