Реферат: Семантика оператора 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)) Ù