Семантика оператора “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)}.
Список литературы
Для подготовки данной работы были использованы материалы с сайта