
2.2. Формулы 125
Наименование
„страж" получает тем самым своё оправда-
ние:
страж оберегает „свою" ветвь от ненужной обработки.
Также и условие альтернативы выполняет „охранительные
функции".
Если ровно один страж выдаёт Т, то, конечно, не
а к х
А.
^
o'thenft
If
then
Dthen
П
then
ft
Рис.
56. Формуляр и дерево Канторовича для охраняемого разбора случаев,
определяющего
функцию
sign.
остаётся никакого выбора, это классическая
детерминирован-
ная ситуация. Если же ни один страж не выдаёт Т, то резуль-
тат вычисления формулы является неопределённым.
Но
и при охраняемом разборе случаев всё ещё имеется
значительная свобода вычислений: порядок, в котором вычис-
ляются стражи и ветви, ограничен лишь тем, что ветвь нельзя
выполнять,
пока не
будет
вычислен её страж и результатом:
этого вычисления не окажется Т.
Простейшая
возможность состоит в том, чтобы сначала вы-
числить все стражи
(друг
за другом или разом), а потом вы-
брать допустимую ветвь. При другом, более экономичном спо-
собе работы произвольно выбирают один страж за другим и
вычисляют их значения; как только появится Т, процесс за-
канчивается вычислением соответствующей ветви. В любом
случае все условия должны иметь определённый результат.
Стражи не только оберегают „свою" ветвь от ненужной
обработки — они защищают её от случайной обработки (так
что их роль не сводится исключительно к экономии работы).
Это верно и в отношении условия альтернативы: вышеприве-
денный
принцип позволяет рассматривать условную формулу
\\
а~^Ъ then а — Ъ
else
b — ai\
и
над N, потому что частично определённую (в N) операцию-
вычитания
нужно
будет
выполнять только тогда, когда она
выполнима.
В
принципе
выполнимость
всех
частично
определённых
опе-
раций
должна
быть
обеспечена
с
помощью
подходящих
стра-
жей, как, скажем, в формуле
if х Ф 0 then sin(x)/x
else
1 fi.