Реферат: Семантика оператора case
Преобразуем каждый из предикатов (1)-(3) в соответствии с определением семантики оператора присваивания.
Получим:
(a=1) Þ (c+a>1) º c>0
(a=2) Þ (a+1>1) º 3>1 º T
(a=3) Þ (a-c>1) º c<2
В итоге с использованием правил эквивалентных преобразований из таблицы 5.8 получим
((a=1) Ù (c>0)) Ú (a=2) Ú ((a=3) Ù (c<2))
Семантика оператора цикла.
Здесь нам надо определить, как оператор цикла в языке Pascal меняет состояние вычислительного процесса. Другими словами, если задано постусловие R, то каково должно быть для него предусловие wp, чтобы в результате выполнения оператора получить R.
Операторы цикла в любом языке программирования реализуют операцию композиции повторения (см. лекция 3). В языке Pascal есть три вида оператора цикла:
while B do S;
for i:=E1 to E2 do S; (for i:=E1 downto E2 do S)
repeat S1 ; S2 ; … ; Sk until B;
где B - логическое выражение,
E1 , E2 - выражения,
S1 ; S2 ; … ; Sk - операторы.
С циклом вида (1) мы уже встречались в примере 9.1 вычисления n членов гармонического ряда. Фрагмент программы (строки 5-8) показан на рис. 11.1
{Вычисление суммы ряда}
{Инициализация цикла}
s:=0;
i:=1;
{Вычисление суммы первых n членов гармонического ряда}
while i£n do begin s:=s+1;
i:=i+1 end {while}
Рис. 11.1.
На рис. 9.3 были показаны все состояния вычислительного процесса программы Harmonic для n=5. Фактически каждая итерация этого цикла представляет из себя выполнение оператора if_endif на рис. 11.2, а операторы в строках 5,6 устанавливают значения для s и i, необходимые для начала цикла.
if
B1 ® s:=s+1/i; i:=i+1;
. . . . .
B5 ® s:=s+1/i; i:=i+1;