Реферат: Семантика оператора case

Однако, как мы уже установили, оператор цикла вида (1) выражается через повторные выполнения оператора IF в соответствующей форме. Здесь уместно вспомнить, что при построении операции композиции повторения мы использовали операцию композиции выбора также.

Мы приходим к выводу, что все наши три вида операторов цикла сводятся к повторному выполнению соответствующего оператора IF. Назовем эту конструкцию, лежащую в основе всех этих операторов цикла, циклом вида DO. Ее вид представлен на рис. 11.5.

DO

if

B1 ® S1 ;

B2 ® S2 ;

. . .

Bn ® Sn

endif

ENDO

Рис 11.5. Цикл вида DO.

Еще раз напомним, как он работает. Последовательно просматриваются сверху вниз условия Bi , и для первого выполненного условия выполняется надлежащий оператор Si . После этого опять cверху вниз, начиная с первого, просматриваются условия Bi . Выполнение оператора if заканчивается, когда при очередном просмотре ни одно Bi не будет выполняться.

Итак, для определения семантики трех видов оператора цикла нам достаточно определить семантику оператора DO! Теперь, придя к пониманию того, что в основе всех циклов лежит конструкция DO, попытаемся выписать ее семантику, то есть определить вид предиката

wp(DO, R)

Для любого цикла нам важно обеспечить выполнение двух условий:

Оператор цикла обязательно заканчивается.

Работа этого оператора заканчивается в состоянии, удовлетворяющим постусловию R.

Обозначим C0 (R) предикат следующего вида:

C0 (R)=ØBBÙR,

где BB - конъюнкция условий в операторе DO, а R - постусловие.

Очевидно, что C0 (R) выражает условия 1,2 для оператора цикла, т.е. что цикл заканчивается (это описывает условие ØBB) и заканчивается в состоянии R (это описывает второй конъюнкт R).

Обозначим

C1 (R)= C0 (R) Ú wp(IF, C0 (R)),

где wp(IF, C0 (R)) - предусловие для оператора IF в операторе DO такое, что за одну итерацию цикла DO оператор IF переработает это состояние в состояние, удовлетворяющее условию C0 (R), т.е. что цикл заканчивается и заканчивается в состоянии R.

Таким образом, условие C1 (R) описывает состояние, на котором цикл DO закончится не более чем за одну итерацию в состоянии, удовлетворяющем R. Теперь обобщим предикат C1 (R) для случая не одной итерации цикла, а k итераций,

Ck (R)= C0 (R) Ú wp(IF, Ck-1 (R)), где k>0 .

Этот предикат выражает условие, что либо на текущем состоянии цикл заканчивается (член C0 (R)), либо за одну итерацию цикла мы получим состояние, начиная с которого цикл закончится не более чем за k-1 итерацию (член wp(IF, Ck-1 (R))).

Таким образом, нижеприведенный предикат:

$ k: k³0: Ck (R) (11.1)

К-во Просмотров: 1415
Бесплатно скачать Реферат: Семантика оператора case