Семантика оператора “case”

Информация - Компьютеры, программирование

Другие материалы по предмету Компьютеры, программирование

правильность этой программы.

Определение 11.1. Назовем процесс формулировки пред и постусловий как для программы вцелом, так и для отдельных ее частей, вплоть до опраторов, процессом спецификации программы.

Определение 11.2. Набор пред и постусловий в порядке их выполнения, как для программы вцелом, так и для отдельных ее частей, вплоть до операторов, назовем спецификацией программы.

Теперь мы можем сказать, что на рис. 11.1 представлена программа с рис. 9.2 со спецификацией.

На рис. 11.2 показана программа и ее спецификация для примера 10.1. В отличие от программы на рис. 11.1, в этой программе, после проверки корректности исходных данных, мы сначала выдаем сообщение об ошибке и только потом приступаем к обработке. В программе на рис. 11.1 сделано наоборот.

Итак, мы обнаружили с Вами три разных формы представления, вообще говоря, одной и той же программы:

для пользовтеля, кто будет читать и стараться понять как работает эта программа;

для компьютера, который будет выполнять эту программу;

для того, кто будет проверять правильность этой программы.

Program Factorial (input, output);

{ Предусловие:(n N)(n 0)

Постусловие:(Fctrl=) }

vari , n , fctrl: integer;

begin{ T }

write(Введите значение n = );

readln( n ); { n N }

if n < 0 then { n < 0 }writeln (Ошибка: n не может быть < 0)

else

begin{ n 0 }

if n = 0 then {n=0} fctrl:=1 {n=0fctrl=1(i не определенно)}

else

begin{ n > 0 }

fctrl : =1 ;

{n=0 fctrl=1}

for i : =2 to n do fctrl : = fctrl i

{i: 2 i n : k : 1k<i : k};

{ n>0 fctrl=(i : 1i<n : i) }

writeln ( При n = , n , n! = , fctrl )

end

{ n 0 fctrl= n! };

end

end {Program}

Рис. 11.2.

Упражнения:

 

{?}

1. if a=1 then b:=a else b:=a+1;

{b=1}

{i=n j=m}wp (S5 , a > 0 b > 0) = ?

S5: if a > b then a:=a-b else

if b < a then b:=b-a;2. if i=0 then j:=0 else j:=r;

{?}wp (S6 , x y) = ?

S6: if x > y then begin t:=x;x:=y;y:=t

end; {i=n j=m}

if i=0 then j:=0;

 

{?}Вычислить:

wp(x:=2y+3, х=13)

wp(x:=х+y, х<2y)

wp(j:=j+1, 0<j (i: 0 i j: b[i]=5))

wp(x:=хy , хy=c)4. if w r then begin r:=r-w;

q:=q+1;

end ;

{q w+r = x r 0}case c of

+ : p:=p+1;

- : m:=m+1;

(, ) : b:=b+1;

,/ : p:=b+1;

end

{p>0, m>0, b=0}Цикл.

Проверка цикла.

Доказать, что Р до входа в цикл

i: 1 i n : {Pi} S {P}

PBBR

Доказать,что в следующих циклах Р - инвариант и цикл заканчивается в нужном состоянии R:

1.

{0 n }

i:=0 ;

{P: 0 i n x b [0: i-1]}

while (i < n) and (x b[i]) do i:=i+1;

{R: (0 i n x= b[i])( i = n x b [0: i-1])}

2.

{0 < n }

i:=1 ;

{P: 0 < i n (p: i=2p)}

while 2i n do i:=2i ;

{R: 0 < i n< 2i (p: i=2p)}.

Список литературы

Для подготовки данной работы были использованы материалы с сайта