Задачи к экзамену
Описание файла
Документ из архива "Задачи к экзамену", который расположен в категории "". Всё это находится в предмете "практикум по rsl" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Задачи к экзамену"
Текст из документа "Задачи к экзамену"
Задача 1. Дана explicit спецификация функции, специфицировать ее в implicit форме.
value
f : Int ><Int >< Int -> write x Int >< Int
f(a,b,c) is if a=b then
(if a+b > c then c else a+b end, a*b*(if c>0 then x:=c; c else 0-c end))
else (a+b, x:=b; a-b)
end
Решение
value
f : Int ><Int >< Int -> write x Int >< Int
f(a,b,c) as (h,t)
post
if a=b then ((if a+b>c then h = c else h = a+b end) /\
(if c>0 then (x=c) /\ (t=a*b*c) else t=0-c end ))
else
h=(a+b) /\ x=b /\ t=a-b
end
Задача 3. Упростить выражение.
Вариант 1
a!(5+b?) || ((x:=(if true |^| false then x:=b?;1 else b!3;x:=2;6 end)+x) ++ (b!4 || y:=b?))
Решение:
true
a!(5+b?) || x:= (x:=b?; 1)+x || y:=4
false
a!(5+b?) || x:=b!3; x:=2; 6 + x || y:=4 is a!8 || x:=8 || y:=4
Ответ:
a!(5+b?) || x:= (x:=b?; 1)+x || y:=4 |^|
a!8 || x:=8 || y:=4
Вариант 2
case (1 |^| b?) of
1 -> x:=a?+1,
2 -> x:=b?,
3 -> y:=a?+3,
4 -> y:=b?+a?,
5 -> x:=y:=a?;y
end ||
a!1 || b!(a?+2) || a!3
Решение:
x:=2 || b!5 |^|
x:=4 || b!3 |^|
y:=6 |^|
y:=1; x:=1
Вариант 3
case (1 |^| b?) of
1 -> x:=a?+1,
2 -> x:=b? |^| a?,
3 -> y:=a?+3,
4 -> y:=b?+a?,
5 -> x:=y:=a?;y
end || a!0 || b!(a?+a?) || a!2 || a!3
Решение:
x:=1 || b!5 |^|
x:=3 || b!3 |^|
x:=4 || b!2 |^|
x:=b? || a!3 |^|
x:=3 |^|
y:=5 |^|
y:=0; x:=0
Вариант 4
(b!4 || y:=b?) || (a!(5+b?) ++ (x:=( x:= (b!2; a? |^| b!3;x:=2;6) ) +x) )
Решение:
left
(b!4 || y:=b?) || a!5+2 ++ x:=(x:=a?)+ x is y:=4 || x:=14
right
(b!4 || y:=b?) || a!5+3 || x:= (x:=2;6)+x)
y:=4 || x:=8 || a!8
Ответ:
y:=4 || x:=14 |^|
y:=4 || x:=8 || a!8
Задача 4. Определить AFDNF критерий полноты тестового покрытия путем перечисления всех возможных дизъюнктов.
Вариант __1_
post
if (a – b > 5) /\ (b < 3) then ...
elsif ((a > b) /\ (b=0)) \/ (b<=3) then ...
else ...
end
pre a+b<=7
m1 a+b<=7 | m2 a – b > 5 | m3 b<3 | m4 a > b | m5 b=0 | m6 b<=3 | a | b | ||
1 | true | true | true | 6 | 0 | m1m2m3 | |||
2 | true | false | true | true | 5 | 0 | m1~m2m4m5 | ||
2 | true | false | false | true | 2 | 2 | m1~m2~m4m6 | ||
2 | true | false | true | false | true | 3 | 2 | m1~m2m4~m5m6 | |
2 | true | true | false | false | true | ||||
2 | true | true | false | true | true | false | |||
3 | true | false | false | false | 3 | 4 | m1~m2m4~m6 | ||
3 | true | false | true | false | false | ||||
3 | true | true | false | false | false | ||||
3 | true | true | false | true | false | false |
Вариант - __2_
post
if (a > 5) /\ (b < 3) then ...
elsif ((a >= b) /\ (b<0)) \/ (b<3) then ...
else ...
end
pre (a>b-1)
m1 a>b-1 | m2 a>5 | m3 b<3 | m4 a>=b | m5 b<0 | m6 b<3 | a | b | ||
1 | true | true | true | 6 | 1 | m1m2m3 | |||
2 | true | false | true | true | 0 | -1 | m1~m2 m4m5 | ||
2 | true | true | false | true | true | ||||
2 | true | false | true | false | true | 3 | 2 | m1~m2m4~m5m6 | |
3 | true | false | true | false | false | 4 | 3 | m1~m2~m4~m5~m6 | |
3 | true | true | false | true | false | false | 6 | 3 | m1m2~m3 m4~m5~m6 |
Вариант - _3__
post
if (a + b = 5) /\ (b < 3) then ...
elsif (b > 3) /\ ~(a > b) then ...
else ...
end
pre a+b<=6
m1 a+b<=6 | m2 a+b=5 | m3 b<3 | m4 b>3 | m5 a>b | a | b | ||
1 | true | true | true | 5 | 0 | m1m2m3 | ||
2 | true | false | true | false | 2 | 4 | m1~m2m4~m5 | |
2 | true | true | false | true | false | 1 | 4 | m1m2~m3m4~m5 |
3 | true | false | false | 6 | 0 | m1~m2~m4 | ||
3 | true | true | false | false | 2 | 3 | m1m2~m3~m4 | |
3 | true | false | true | true | ||||
3 | true | true | false | true | true |
Вариант __4_
post
if (a – b > 5) /\ (b < 3) then ...
elsif ((a > b) /\ (b=0)) \/ (b<=3) then ...
else ...
end
pre a+b<=7
m1 a+b<=7 | m2 a – b > 5 | m3 b<3 | m4 a > b | m5 b=0 | m6 b<=3 | a | b | ||
1 | true | true | true | 6 | 0 | m1m2m3 | |||
2 | true | false | true | true | 5 | 0 | m1~m2m4m5 | ||
2 | true | false | false | true | 2 | 2 | m1~m2~m4m6 | ||
2 | true | false | true | false | true | 3 | 2 | m1~m2m4~m5m6 | |
2 | true | true | false | false | true | ||||
2 | true | true | false | true | true | false | |||
3 | true | false | false | false | 3 | 4 | m1~m2m4~m6 | ||
3 | true | false | true | false | false | ||||
3 | true | true | false | false | false | ||||
3 | true | true | false | true | false | false |
Вариант - __5_