Реферат: Семантика оператора case
где "j: 1£j£n: Bj = i=j.
Рис. 11.2.
Оператор IF, представленный на рис. 11.2, надо выполнять до тех пор, пока для очередного значения i истинен хоть один Bi º i=n. Как только при очередном выполнении IF ни одно из условий не будет выполнено, то более повторять выполнение этого IF не надо.
Обозначим
BB=B1 Ú B2 Ú B3 Ú ... Ú Bk ,
тогда оператор IF на рис. 9.2 надо выполнять до тех пор, пока выполняется BB.
Теперь рассмотрим циклы вида (2). Для этого вернемся к примеру 10.1, программа для которого представлена на рис. 10.1. Интересующий нас в данный момент фрагмент дан на рис. 11.3.
begin fctrl:=1;
for i:=2 to n do fctrl:=fctrl*i
end {if n=0}
Рис. 11.3
Здесь был использован цикл вида (2). Все состояния вычислительного процесса, соответствующие этому циклу, были пока
заны на рис. 10.2. Там же, в колонке, где указан номер итерации, указано и условие, при выполнении которого надо выполнять тело цикла на данной итерации.
Рассмотрим оператор IF на рис. 11.4.
i:=2 ; if
B1 ® fctrl:=fctrl*i; i:=i+1;
B2 ® fctrl:=fctrl*i; i:=i+1;
. . . . .
B5 ® fctrl:=fctrl*i; i:=i+1
endif
где "k: 1£ k £5 Bk º i=k.
Рис. 11.4
Если его выполнять до тех пор, пока выполняется BB, то мы получим конструкцию, эквивалентную той, что показана на рис. 11.3 с той оговоркой, что значение параметра цикла i после выхода из цикла на рис. 11.3 считается не определенным. Для того, чтобы убедиться в эквивалентности этих конструкций, достаточно построить вычислительный процесс, соответствующий циклическому выполнению IF с рис. 11.4 и сравнить его с вычислительным процессом на рис.10.2.
Таким образом, мы видим, что циклы вида (2) тоже сводятся к последовательному выполнению операторов типа IF, пока выполняется условие BB.
Рассмотрим теперь циклы вида (3):
repeat S until B.
На интуитивном уровне действие операторов цикла этого вида можно описать так: после каждого выполнения оператора S надо проверять условие B. Если оно не выполняется, то надо выполнить S еще раз, если выполняется, то цикл заканчивается. Другими словами, оператор цикла вида (3) можно выразить оператор цикла вида (1) следующим образом:
repeat S until B;
º