|
|||
Определение оператора CASE.. Оператор FOR.13.1. Определение оператора CASE.
Синтаксические правила для оператора CASE представлены ниже
<оператор CASE> ::= CASE <выражение> OF <список вариантов> END <список вариантов>::= <список вариантов>, <вариант> | <вариант> <вариант> ::= <список констант> : <выражение> <список констант> ::= <список констант>, <константа> | <константа>
Для оператора CASE, как и для оператора IF может быть определено значение как объединение функций. Пусть E будет выражение возвращающее значение порядкового типа, и C1, C2, C3 не равные друг другу константы того же типа и S1, S2 – операторы. Тогда оператор CASE S:
CASE E OF C1, C2: S1; C3: S2; END
имеет значение:
S = {<u, S1(u)>: E(u) = C1(u) OR E(u) = C2(u)} È {<u, S2(u)>: E(u) = C3(u) }
Обобщение до большего количества меток и операторов очевидно. Необходимо обратить внимание, что если ни один из вариантов не имеет значение E, функция S не определена.
17.2. Оператор FOR.
Циклическое управление для оператора FOR заключается в прохождении через набор значений порядкового типа и текущее значение из этого набора доступно для вычисления внутри оператора.
Пусть V будет переменная некоторого порядкового типа , а A и Z – выражения того же типа. Оператор FOR FOR V := A TO Z DO S выполняет оператор S количество раз, заданное значениями A и Z до того как цикл начнется. Предположим, что значением A является p, а значением Z является q перед выполнением цикла. Когда S выполняется первый раз, значением V является p, второй раз – SUCC(p), SUCC(SUCC(p)) и так далее, пока значение V последовательно не достигнет qв последнем выполнении S. Таким образом, количество выполнений будет q – p + 1 при условии если это значение как минимум 1, если нет, то есть если p > q, S не выполняется вообще. Оператор FOR также может быть записан, чтобы выполнить то же количество итераций но в обратном порядке: FOR V := Z TO A DO S Где значения последовательно принимаемые V q, PRED(q), PRED(PRED(q)), …, p.
V называется контрольной переменной. В конце цикла значение V неопределено.
|
|||
|