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

end {if}

В этой форме условия трех альтернатив просматриваются последовательно сверху вниз и выполняется первая альтернатива, условие которой выполнено.

Обобщим теперь эту запись на большее число альтернатив следующим образом:

if

B1 ® S1 ;

B2 ® S2 ;

. . .

Bk ® Sk

end {if}

В этом обобщении последовательно сверху вниз просматриваются логические выражения Bi и для того i, где первым будет получено значение T, будет выполнен оператор Si . Причем обязательно хоть одно Bi должно принять значение T. Эту обобщенную форму условного оператора обозначим IF. Отсюда получаем.

Определение 11.1. Семантика оператора сase:

wp(ñase, R)=($ i: 1£i£k: Bi ) Ù (" i: 1£i£k: Bi Þ wp(Si , R))

Отсюда должно быть видно, что:

Всегда на текущем состоянии выполняется хотя бы одно Bi . Другими словами, предусловие этого оператора должно имплицировать любое Bi .

Если на текущем состоянии выполняется Bi , то соответствующий Si перерабатывает это состояние в такое состояние, где должно выполняться постусловие R.

Рассмотрим пример. Написать предусловие для оператора

Sñase :

ñase a of

1: b:=c+a;

2: b:=a+1;

3: b:=a-c

end

такое, что если этот оператор начинает работать в состоянии, удовлетворяющем этому предусловию, то он обязательно закончит свою работу и после ее выполнения мы получим состояние, удовлетворяющее условию R º b>1.

Другими словами, надо вычислить

wp(Sñase , b>1).

Выпишем в соответствии с определением

wp(Scase , b>1) = ((a=1)Ú(a=2)Ú(a=3)) Ù

((a=1) Þ wp(b:=c+a, b>1)) Ù

((a=2) Þ wp(b:=a+1, b>1)) Ù

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