LecTP05 (1127835), страница 3
Текст из файла (страница 3)
function G(n: integer): integer;
определены с помощью операционной семантики равенствами:
F(0)=1,
G(0)=2,
F(n)=G(n-1),
G(n)=F(n-1) + G(n-1).
Найти значения F(3) и G(3).
-
Формальные языки E и T определены над алфавитом
{'a', '*', '&', '<', '>'}
с помощью денотационной семантики равенствами
E= T '*' T E '&' T
T= 'a' 'a*' '<' E '>'
Какие из следующих строк
'*a&*a*&a*'
'*a&<a&a*>'
'*<*a*&a>&<*a*>*'
принадлежат языку E и какие не принадлежат.
-
Формальные языки E и T определены над алфавитом
{'a', '#', '*', '(', ')'}
с помощью денотационной семантики равенства
E= T '#' T '(' E ')' '*' T
T= 'a' 'a#' E
Какие из следующих строк
'(#a)*##a
'##(a)#*a#'
'(a)*#(a#)*a#'
принадлежат языку E и какие не принадлежат.
5.4. Тип R определен с помощью следующей аксиоматической семантики.
Описания:
type R= record P1, P2, P3: CHAR end;
function READ(S: R): CHAR; {READ: R -> CHAR}
function SHIFT(S: R): R; {SHIFT: R -> R}
function ADD(S: R, C: CHAR): R; {ADD: R * CHAR -> R} function REMOVE(S: R): R; {REMOVE: R -> R}
var X, Y, Z: CHAR;
U: R;
Аксиомы:
SHIFT(ADD(ADD(ADD(U, X), Y), Z)) =
ADD(ADD(ADD(U,Y), Z), X);
REMOVE(U) = SHIFT(ADD(U, '#'));
READ(SHIFT(ADD(U, X))) = X;
Найти значение:
READ(SHIFT(SHIFT(REMOVE(ADD(ADD(U, 'a'), 'b'))))) =
Литература к лекции 5.
5.1. В.Н. Агафонов. Спецификация программ: понятийные средства и их организация. - Новосибирск: Наука (Сибирское отделение), 1987.
5.2. Ian Sommerville. Software Engineering. - Addison-Wesley Publishing Company, 1992.
5.3. Д. Скотт. Теория решеток, типы данных и семантика / Данные в языках программирования. - М.: Мир, 1982. - С. 25-53.
5.4. К. Хоор. О структурной организации данных / У. Дал, Э. Дейкстра, К. Хоор. Структурное программирование. - М.: Мир, 1975. - С. 98-197.