Главная / Программирование /
Введение в программирование на Лиспе / Тест 8
Введение в программирование на Лиспе - тест 8
Упражнение 1:
Номер 1
Укажите, какие функции являются псевдо-функциями Лисп-системы:
Ответ:
 (1) (cond)
 
 (2) (union)
 
 (3) (setq)
 
Номер 2
Укажите, какие функции являются псевдо-функциями Лисп-системы:
Ответ:
 (1) (let)
 
 (2) (intesection)
 
 (3) (print)
 
Номер 3
Что такое псевдо-функция:
Ответ:
 (1) это функция, которая выполняется ради воздействия на систему 
 (2) это функция, которая выполняется ради получения значений 
 (3) это функция, в качестве аргументов которой могут выступать другие функции 
Упражнение 2:
Номер 1
Какой из результатов вычисления формы (union '(1 2 3) '(1 2 5))
будет получен (учесть порядок следования элементов итогового списка). Функция Union
имеет следующее определение:
(DEFUN UNION (X Y)
(COND
((NULL X) Y)
((MEMBER (CAR X) Y) (UNION (CDR X) Y) )
(T (CONS (CAR X) (UNION (CDR X) Y))) )) )
))
Ответ:
 (1) (1 2 3 5)
 
 (2) (3 2 5 1)
 
 (3) (1 2 5 3)
 
 (4) (3 1 2 5)
 
Номер 2
Какой из результатов вычисления формы (union '(a b c) '(с a b))
будет получен (учесть порядок следования элементов итогового списка). Функция Union
имеет следующее определение:
(DEFUN UNION (X Y)
(COND
((NULL X) Y)
((MEMBER (CAR X) Y) (UNION (CDR X) Y) )
(T (CONS (CAR X) (UNION (CDR X) Y))) )) )
))
Ответ:
 (1) (a b с)
 
 (2) (с a b)
 
 (3) (a b a b)
 
 (4) (a с b)
 
Номер 3
Какой из результатов будет получен при вычисления формы (union '(a b c) '(1 a a)),
функция union
имеет следующее определение:
(DEFUN UNION (X Y)
(COND
((NULL X) Y)
((MEMBER (CAR X) Y) (UNION (CDR X) Y) )
(T (CONS (CAR X) (UNION (CDR X) Y))) )) )
))
Ответ:
 (1) (1 a b c)
 
 (2) (с a a b 1)
 
 (3) (b с 1 a a)
 
 (4) (a с b 1)
 
Упражнение 3:
Номер 1
Укажите, какая из приведенных ниже форм является специальной:
Ответ:
 (1) (Atom x)
 
 (2) (Eq x1 x2)
 
 (3) (Cond (x (cons 1 (cdr x)) ))
 
 (4) T
 
Номер 2
Укажите, какая из приведенных ниже форм являются специальными:
Ответ:
 (1) (defun f(x) (car x))
 
 (2) (Atom '(x y))
 
 (3) T
 
 (4) nil
 
Номер 3
Укажите, какая из приведенных ниже форм является специальной:
Ответ:
 (1) (cond ((Eq x y) (print x)) (T (print y)) )
 
 (2) (Eq (x y))
 
 (3) (eval '(car x))
 
 (4) nil
 
Упражнение 4:
Номер 1
Какой из результатов вычисления формы (intersection '(1 2 3) '(4 5 3))
является верным. Функция intersection
имеет следующее определение:
(DEFUN INTERSECTION (X Y)
(COND
((NULL X) NIL)
((MEMBER (CAR X) Y) (CONS (CAR X) (INTERSECTION (CDR X) Y)) )
(T (INTERSECTION (CDR X) Y))
))
Ответ:
 (1) (1 2 3 4 5)
 
 (2) (1 2 4 5)
 
 (3) (3)
 
Номер 2
Какой из результатов вычисления формы (intersection '(a b c) '(a b d))
является верным. Функция intersection
имеет следующее определение:
(DEFUN INTERSECTION (X Y)
(COND
((NULL X) NIL)
((MEMBER (CAR X) Y) (CONS (CAR X) (INTERSECTION (CDR X) Y)) )
(T (INTERSECTION (CDR X) Y))
))
Ответ:
 (1) (d c)
 
 (2) (b a)
 
 (3) (a b)
 
Номер 3
Какой из результатов вычисления формы (intersection '(a b c) '(с a b))
является верным. Функция intersection
имеет следующее определение:
(DEFUN INTERSECTION (X Y)
(COND
((NULL X) NIL)
((MEMBER (CAR X) Y) (CONS (CAR X) (INTERSECTION (CDR X) Y)) )
(T (INTERSECTION (CDR X) Y))
))
Ответ:
 (1) (a b с)
 
 (2) (с a b)
 
 (3) Nil
 
Упражнение 5:
Номер 1
Какое из представленных ниже выражений содержит ошибки:
Ответ:
 (1) (a b c d . e)
 
 (2) (a b .( c d) e)
 
 (3) (((a . b) . c) d . e)
 
Номер 2
Какие из представленных ниже выражений содержат ошибки:
Ответ:
 (1) (a . b c d e)
 
 (2) (a . b .( c d e))
 
 (3) (((a . b) . c) d e)
 
Номер 3
Какие из представленных ниже выражений содержат ошибки:
Ответ:
 (1) (a b c d e . nil)
 
 (2) (a b ( c d . e))
 
 (3) (((a . b) . c) d e)
 
Упражнение 6:
Номер 1
Какая из представленных ниже пар форм имеет одинаковые результаты при их вычислении:
Ответ:
 (1) (apply (f x y))
и (funcall f x y)
 
 (2) (apply (f x y))
и (funcall (f x y))
 
 (3) (eval '(f 'x 'y))
и (eval '(f x y))
 
 (4) (eval '(f x y))
и (funcall f 'x 'y)
 
Номер 2
Какая из представленных ниже пар форм дает одинаковые результаты при их вычислении:
Ответ:
 (1) (eval f (x y))
и (apply (f x y))
 
 (2) (eval (f x y))
и (funcall f x y)
 
 (3) (eval '(f x y))
и (funcall f x y)
 
 (4) (eval '(f 'x 'y))
и (funcall f x y)
 
Номер 3
Какая из представленных ниже пар форм имеет одинаковые результаты при их вычислении:
Ответ:
 (1) (append f (x y))
и (funcall f (x y))
 
 (2) (apply f (x y))
и (funcall f x y)
 
 (3) (eval f (x y))
и (funcall f x y)
 
 (4) (eval '(f x y))
и (funcall f x y)
при учете, того, что (defun f(x y) (cons x y))
был вызван ранее  
Упражнение 7:
Номер 1
Что означает запись (let ((a (cons x y))) a)
:
Ответ:
 (1) замена в последующих выражениях списков "x"
и "y"
на список "a"
 
 (2) присваивание локальной переменной "a"
результата консолидации (cons x y)
 
 (3) замена в выражениях (аргументах Let
) повторяющегося подвыражения "(cons x y)"
на "a"
без воздействия на результат вычисления последующих форм 
Номер 2
Что означает запись (let ((a (car x)) (b (car y))) a b):
Ответ:
 (1) замена в последующих выражениях повторяющихся подвыражений "a"
и "b"
на "(car x)"
и "(car y)"
 
 (2) замена в выражениях (аргументах Let
) повторяющихся подвыражений "(car x)"
и "(car y)"
на "a"
и "b"
 
 (3) замена в последующих выражениях повторяющихся голов " x"
и "y"
на "a"
и "b"
 
Номер 3
В каких случаях можно использовать инструкцию Let
:
Ответ:
 (1) вынос из определения совпадающих подвыражений 
 (2) задание глобальной переменной значения 
 (3) вывод на экран результата выполнения функции, идущей в качестве аргумента Let 
Упражнение 8:
Номер 1
Каким образом низкоуровневая подпрограмма может быть включена в Лисп-систему:
Ответ:
 (1) создание низкоуровневой программы в Лисп-системе пользователем 
 (2) создание низкоуровневой программы возможно вне систем программирования, но никак не внутри системы 
 (3) создание низкоуровневой программы в другой системе и ее перенос в Лисп систему 
Номер 2
Каким образом низкоуровневая программа может быть включена в Лисп-систему:
Ответ:
 (1) создание низкоуровневой программы в Лисп-системе пользователем 
 (2) лисп система не поддерживает работу с языком Ассемблер 
 (3) путем трансляции Лисп-кода в код ассемблера Лисп-программы с дальнейшим использованием 
Номер 3
Каким образом низкоуровневая программа может быть включена в Лисп-систему:
Ответ:
 (1) никаким 
 (2) создание низкоуровневой программы в Лисп-системе пользователем 
 (3) создание низкоуровневой программы возможно вне систем программирования, но никак не внутри системы 
Упражнение 9:
Номер 1
Какой результат будет получен при вычислении формы (cons '(car '(A B) (car '(C D))))
:
Ответ:
 (1) (A . C)
 
 (2) ((car '(A B)) . C)
 
 (3) сообщение об ошибке 
Номер 2
Какой результат будет получен при вычислении формы (cons '(car '(A B)) '(car '(C D)))
:
Ответ:
 (1) (A . C)
 
 (2) сообщение об ошибке 
 (3) ((car '(A B)) . (car '(B C)))
 
Номер 3
Какой результат будет получен при вычислении формы (funcall (cons 'car '('(C D)))):
Ответ:
 (1) C
 
 (2) (car '(C D))
 
 (3) сообщение б ошибке 
Упражнение 10:
Номер 1
Какое из представленных ниже выражений содержит ошибки:
Ответ:
 (1) (1 2 3 4 5)
 
 (2) (1 . (2 3 . (4 5)))
 
 (3) (((1 . 2) . (3 . 4 . 5))
 
Номер 2
Какие из представленных ниже выражений содержат ошибки:
Ответ:
 (1) (1 2 3 . 4 5 )
 
 (2) (1 2 3 4 . (5))
 
 (3) (((1 . nil) . nil) 3 4 5)
 
Номер 3
Какие из представленных ниже выражений содержат ошибки:
Ответ:
 (1) ((1) (2) (3 4) . (5))
 
 (2) (1 2 3 . (4 . nil) 5)
 
 (3) ((1 . nil) (2. nil) (3 . nil) (4 . nil) (5 . nil) . nil)