Тц - один простой или составной оператор

Лекция 16

4.9.4. Оператор цикла с параметром.

Часто параметр цикла целого типа и его надо изменять с шагом 1 в сторону увеличения или уменьшения. Такая ситуация имеет место например, при обработке массивов, когда в качестве параметра цикла используется индекс элемента массива. Для оформления таких циклов в ТР есть специальный оператор. Который называется "оператором цикла с параметром" (он позволяет получить более короткую запись цикла в программе).

Форма записи цикла с параметром имеет вид:

For n : = b1 To b2 Do Тц ;

где For (для), To (до), Do (выполнять) – зарезервированные слова;

n - параметр цикла (переменная целого типа);

B1, b2 - выражения целого типа;

Тц - один простой или составной оператор.

Пусть значение b1 равно а1, а значение b2 равно а2, тогда эту запись можно прочитать так: для n начиная с а1 выполнять Тц до тех пор пока n<= а2 , увеличивая параметр цикла каждый раз на единицу.

Принцип действия.

А) Вычисляются значения выражений b1 и b2 (один раз до цикла);

Б) n получает значение выражения b1 и осуществляется проверка:

В) если n <= значения b2, то выполняется тело цикла, иначе выход из цикла;

г) значение n увеличивается на 1 и осуществляется возврат к шагу В).

Как только n станет > b2 цикл завершается и управление передается оператору, расположенному после Тц.

Пример записи цикла с помощью конструкции For приведен на рис. 4.16.1.


Рис.4.16.1

Так как изменение параметра цикла (К : = К + 1) автоматически учитывается в цикле For, то записывать его в теле цикла не следует (поэтому в данном случае тело цикла содержит только один оператор).

Правило: если тело цикла содержит более одного оператора (оператор изменения параметра цикла не учитывается), то при записи тела цикла надо использовать составной оператор. Пример записи цикла For с использованием составного оператора приведен на рис.4.16.2 (вычисление таблицы значений функции).


Рис.4.16.2.

Если в цикле с параметром параметр цикла должен уменьшаться на 1, то используется конструкция цикла вида

For n : = a1 DOWNTO a2 DO Тц;

Пример записи такой конструкции приведен на рис.4.16.3.


Рис .4.16.3.

 

Оператор цикла с постусловием.

В цикле с постусловием проверка условия окончания цикла осуществляется после выполнения тела цикла. Форма записи цикла с постусловием имеет вид

Repeat <тело цикла> until <условие>;

Здесь Repeat (повторять) и until (пока) – зарезервированные слова; <тело цикла> произвольная последовательность операторов; <условие> - выражение логического типа. Это выражение можно перевести на русский язык так: Повторять <тело цикла> до тех пор пока не будет выполнено <условие>.

Порядок действий: выполняются операторы тела цикла, после чего вычисляется выражение <условие>: если оно имеет значение False, то снова выполняются операторы тела цикла.

. Пример записи цикла Repeat приведен на рис.4.16.4.


Рис.4.16.4

 

Специальный выход из цикла.

Цикл может быть прерван в любой момент времени. Такой выход из цикла называется специальным. Он осуществляется с помощью оператора Goto.

Пример оформления цикла со специальным выходом (решение нелинейного уравнения методом простой итерации с контролем количества итераций) приведен на рис.4.16.5


 

Рис.4.16.5.

 

Тело цикла может в свою очередь содержать циклы и любые другие конструкции. Но вложенные циклы не должны быть пересекающимися. Пример оформления вложенных циклов (вычисление произведений ненулевых элементов строк двумерного массива А) приведен на рис.4.16.6.


---------------------------------------Рис.4.16.6.

 

Оператор выбора (Case).

Оператор выбора предназначен для оформления конструкции "Выбор" (рис.4.16.7.) структурного программирования. Принцип действия этой конструкции следующий: из указанного набора операторов выполняется оператор, метка варианта (mвх) которого совпадает с значением селектора варианта (СВ).


Рис.4.16.7.

Для оформления в программе этой конструкции имеется специальный оператор "Case" ( иногда его называют оператором варианта). Возможности этого оператора несколько шире (за счет дополнительного ключевого слова ELSE). Общая форма записи оператора Case приведена на рис.4.16.7.

На рис.4.16.7. обозначено:

- Case (случай,выбор), Of (из), Else (иначе), End - зарезервированные слова;

- Св - селектор варианта (переменная или выражение порядкового типа);

- mв1, mв2,… - метки варианта;

- Оператор1, оператор2, ….- один простой или составной оператор.

Принцип действия:

- вычисляется значение выражения СВ;

- осуществляется переход к блоку, метка варианта которого равна значению СВ;

- выполняется оператор помеченный этой меткой и осуществляется выход из этой конструкции.

Если значение СВ не совпадает ни с одной из меток варианта, то выполняется оператор записанный после Else. Фрагмент с Else может отсутствовать.

Пример записи оператора Case приведен на рис.4.16.8.


Рис.4.16.8.

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

Правила:

- Метки варианта относятся только к конкретному оператору Case, их не надо указывать в разделе меток;

- Один оператор может быть помечен несколькими метками, разделителем между метками является символ ",";

- Селектор варианта (Св) может иметь любой порядковый тип;

- Все метки варианта должны быть уникальными и иметь порядковый тип совместимый с типом Св;

- Меткой варианта может быть константа или диапазон выбора.

Пример на данные правила приведен на рис.4.16.9.

Если в качестве Св используются данные символьного типа, то строчные и прописные буквы понимаются как различные.

Пример на рис.4.16.10.

 

 


Рис.4.16.9. Рис.4.16.10.

Операторы входящие в Case могут быть помечены обычными метками. Эти метки должны быть объявлены в разделе меток. Метки варианта должны предшествовать обычным меткам.

Входить в Case можно только через заголовок.