Главная / Программирование /
Основы функционального программирования / Тест 7
Основы функционального программирования - тест 7
Упражнение 1:
Номер 1
Какая из перечисленных команд SECD
не меняет размер стека результатов?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a . s) e (ADD1 . c) d -> (a+1 . s) e c d
 
 (3) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (4) (a b . s) e (EQ . c) d -> (t . s) e c d
, где t
- логическое значение. 
Номер 2
Какая из перечисленных команд SECD
сохраняет размер стека результатов?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a . s) e (SUB1 . c) d -> (a-1 . s) e c d
 
 (3) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (4) (a b . s) e (EQ . c) d -> (t . s) e c d
, где t
- логическое значение. 
Номер 3
Какая из перечисленных команд SECD
не влияет на размер стека результатов?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (3) ((a . b) . s) e (CAR . c) d -> (a . s) e c d
 
 (4) (a b . s) e (EQ . c) d -> (t . s) e c d
, где t
- логическое значение. 
Упражнение 2:
Номер 1
Какая из перечисленных команд SECD
уменьшают размер стека результатов (S)
?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (3) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
 (4) (a . s) e (ATOM . c) d -> (t . s) e c d
 
Номер 2
Какая из перечисленных команд SECD
укорачивает стек результатов (S)
?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
 (3) (a . s) e (ATOM . c) d -> (t . s) e c d
 
 (4) (a b . s) e (EQ . c) d -> (t . s) e c d
, где t
- логическое значение. 
Номер 3
Какая из перечисленных команд SECD
увеличивают размер стека результатов (S)
?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (3) (a . s) e (ATOM . c) d -> (t . s) e c d
 
Номер 4
Какая из перечисленных команд SECD
удлиняет стек результатов (S)
?
Ответ:
 (1) s e (LD n . c) d -> (x . s) e c d
, где x
- это значение (N-th n e )
 
 (2) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (3) (a . s) e (ATOM . c) d -> (t . s) e c d
 
Упражнение 3:
Номер 1
Какая из перечисленных команд SECD
изменяет состояние дампа (D)
?
Ответ:
 (1) s e (JOIN) (c . d) -> s e c d
 
 (2) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (3) (a . s) e (ATOM . c) d -> (t . s) e c d
 
Номер 2
Какая из перечисленных команд SECD
изменяет состояние дампа (D)
?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (3) (t . s) e (SEL c1 c0 . c) d -> s e ct (c . d )
 
Номер 3
Какая из перечисленных команд SECD
изменяет состояние дампа (D)
?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (x) e (RTN) (s e c . d) -> (x . s) e c d
 
 (3) (a . s) e (ATOM . c) d -> (t . s) e c d
 
Упражнение 4:
Номер 1
Какая из перечисленных команд понадобятся при компиляции выражения (CADR n)
?
Ответ:
 (1) s e (LD n . c) d -> (x . s) e c d
, где x
- это значение (N-th n e )
 
 (2) s e (JOIN ) (c . d) -> s e c d
 
 (3) s e (LDF f . c) d -> ((f . e) . s) e c d
 
Номер 2
Какая из перечисленных команд нужна при компиляции выражения (CADR n)
?
Ответ:
 (1) s e (JOIN ) (c . d) -> s e c d
 
 (2) ((a . b) . s) e (CAR . c) d -> (a . s) e c d
 
 (3) s e (LDF f . c) d -> ((f . e) . s) e c d
 
Номер 3
Какая из перечисленных команд используется при компиляции выражения (CADR n)
?
Ответ:
 (1) s e (JOIN ) (c . d) -> s e c d
 
 (2) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
 (3) s e (LDF f . c) d -> ((f . e) . s) e c d
 
Упражнение 5:
Номер 1
Какое выражение не может быть исходным для кода программы на языке абстрактной машины (LD @n CDR CAR)
?
Ответ:
 (1) (CADR n )
 
 (2) (EQ (ATOM n) ' CAR )
 
 (3) (CAR (CDR n))
 
Номер 2
Для какого выражения не может быть результатом компиляции на язык абстрактной машины кода программы вида (LD @n CDR CAR)
?
Ответ:
 (1) (CADR n )
 
 (2) (CONS (QUOTE CAR) (QUOTE CDR))
 
 (3) (CAR (CDR n))
 
Номер 3
Какое выражение не эквивалентно коду программы на языке абстрактной машины (LD @n CDR CAR)
?
Ответ:
 (1) (CADR n )
 
 (2) (COND ((EQ n 0 )(CAR l )) (T (CONS (SUB1 n ) (CDR l ) )) ))
 
 (3) (CAR (CDR n))
 
Упражнение 6:
Номер 1
Какое выражение может быть исходным для объектного кода ( LD @n CDR CAR )
?
Ответ:
 (1) (CADR n )
 
 (2) (EQ (CAR n) 'QUOTE )
 
 (3) (COND ((EQ n 0 )(CAR l )) (T (CONS (SUB1 n ) (CDR l ) )) ))
 
Номер 2
Какое выражение эквивалентно объектному коду ( LD @n CDR CAR )
?
Ответ:
 (1) (CAR (CDR n))
 
 (2) (EQ (CAR n) 'QUOTE )
 
 (3) (COND ((EQ n 0 )(CAR l )) (T (CONS (SUB1 n ) (CDR l ) )) ))
 
Номер 3
Какое выражение может при компиляции дать объектный код ( LD @n CDR CAR )
?
Ответ:
 (1) (LET ((a (CDR n)))(CAR a))
 
 (2) (EQ (CAR n) 'QUOTE )
 
 (3) (COND ((EQ n 0 )(CAR l )) (T (CONS (SUB1 n ) (CDR l ) )) ))
 
Упражнение 7:
Номер 1
Какой код может быть результатом компиляции выражения (CADR n )
?
Ответ:
 (1) ( LD @n CDR CAR )
 
 (2) ( LD @n CAR LDC QUOTE EQ )
 
 (3) ( LD @n LDc 0 EQ SEL (LD @l CAR JOIN ) (LD @n SUB1 LD @l CDR CONS JOIN ))
 
Номер 2
Какая команда машины SECD
заведомо не понадобятся при компиляции выражения (CADR n)
?
Ответ:
 (1) s e (LD n . c) d -> (x . s) e c d
, где x
- это значение (N-th n e )
 
 (2) s e (JOIN ) (c . d) -> s e c d
 
 (3) ((a . b) . s) e (CAR . c) d -> (a . s) e c d
 
 (4) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
Номер 3
Какая команда машины SECD
не нужна при компиляции выражения (CADR n )
?
Ответ:
 (1) s e (LD n . c) d -> (x . s) e c d
, где x
- это значение (N-th n e )
 
 (2) ((a . b) . s) e (CAR . c) d -> (a . s) e c d
 
 (3) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
 (4) s e (LDF f . c) d -> ((f . e) . s) e c d
 
Упражнение 8:
Номер 1
Какие из перечисленных команд SECD
не меняют размер стека результатов?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a . s) e (ADD1 . c) d -> (a+1 . s) e c d
 
 (3) (a . s) e (SUB1 . c) d -> (a-1 . s) e c d
 
 (4) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (5) ((a . b) . s) e (CAR . c) d -> (a . s) e c d
 
 (6) (a b . s) e (EQ . c) d -> (t . s) e c d
, где t
- логическое значение 
Номер 2
Какие из перечисленных команд SECD
уменьшают размер стека результатов?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) (a . s) e (ADD1 . c) d -> (a+1 . s) e c d
 
 (3) (a . s) e (SUB1 . c) d -> (a-1 . s) e c d
 
 (4) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (5) ((a . b) . s) e (CAR . c) d -> (a . s) e c d
 
 (6) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
 (7) (a . s) e (ATOM . c) d -> (t . s) e c d
 
 (8) (a b . s) e (EQ . c) d -> (t . s) e c d
, где t
- логическое значение 
Номер 3
Какие из перечисленных команд SECD
увеличивают размер стека результатов?
Ответ:
 (1) s e (LDC q . c) d -> (q . s) e c d
 
 (2) s e (LD n . c) d -> (x . s) e c d
, где x
- это значение (N-th n e )
 
 (3) (a . s) e (ADD1 . c) d -> (a+1 . s) e c d
 
 (4) (a b . s) e (CONS . c) d -> ((a . b) . s) e c d
 
 (5) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
 (6) (a . s) e (ATOM . c) d -> (t . s) e c d
 
Упражнение 9:
Номер 1
Какие из перечисленных команд понадобятся при компиляции заданного выражения: (CADR n )
?
Ответ:
 (1) s e (LD n . c) d -> (x . s) e c d
, где x
- это значение (N-th n e )
 
 (2) s e (JOIN ) (c . d) -> s e c d
 
 (3) ((a . b) . s) e (CAR . c) d -> (a . s) e c d
 
 (4) ((a . b) . s) e (CDR . c) d -> (b . s) e c d
 
 (5) s e (LDF f . c) d -> ((f . e) . s) e c d
 
Номер 2
Какое выражение не может быть исходным для заданного кода абстрактной машины ( LD @n CDR CAR )
?
Ответ:
 (1) (CADR n )
 
 (2) (EQ (CAR n) 'QUOTE )
 
 (3) (COND ((EQ n 0 )(CAR l )) (T (CONS (SUB1 n ) (CDR l ) )) ))
 
Номер 3
Какое выражение может быть исходным для объектного кода ( LD @n CDR CAR )
?
Ответ:
 (1) (CADR n )
 
 (2) (EQ (CAR n) 'QUOTE )
 
 (3) (COND ((EQ n 0 )(CAR l )) (T (CONS (SUB1 n ) (CDR l ) )) ))