игра брюс 2048
Главная / Программирование / Введение в программирование на Лиспе / Тест 4

Введение в программирование на Лиспе - тест 4

Упражнение 1:
Номер 1
Каким образом в Лиспе изображаются имена переменных и функций:

Ответ:

 (1) с помощью списков 

 (2) с помощью знака апострофа " ' " перед именем функции или переменной 

 (3) с помощью атомов 


Номер 2
Данные какого вида и типа могут выступать в качестве аргументов функции в Лиспе:

Ответ:

 (1) числа и строки 

 (2) любая форма произвольной длины и сложности 

 (3) только атомы 


Номер 3
Передача интерпретатору формы (f 'x 3) означает то, что:

Ответ:

 (1) вызывается функция f для двух аргументов 'x и 3, данные " x " и "3" подаются в функцию в качестве значений аргументов 

 (2) вызывается функция f, аргументом которой является результат вызова функции x с аргументом 3 

 (3) это форма блокирована для вычисления 


Упражнение 2:
Номер 1
Какая из перечисленных ниже форм вычислима:

Ответ:

 (1) (Cons (A B С) 'B) 

 (2) (Atom (Quote A B C)) 

 (3) (EQ (Atom (quote A)) (Atom '(Abc))) 


Номер 2
Какая из перечисленных ниже форм вычислима:

Ответ:

 (1) (Eq (A) (B)) 

 (2) (Atom (quote (A B C))) 

 (3) (Cons '(a) ;(a b c)) 


Номер 3
Какая из перечисленных ниже форм вычислима:

Ответ:

 (1) (Cons (Quote (A B С)) 'B) 

 (2) (Atom Cons (Quote A B C)) 

 (3) (Eq 'A B) 


Упражнение 3:
Номер 1
Какие события происходят в системе при вычислении интерпретатором формы ((lambda (x y) (cons x y)) 'A 'B):

Ответ:

 (1) в системе создается функциональный объект с именем Lambda 

 (2) данная форма останется доступной в системе с возможностью многократного ее вызова с различными значениями переменных X и Y 

 (3) переменная X связывается со значением A, Y – с B, выполняется однократное вычисление безымянной функции, строящей пару (A . B) 


Номер 2
Что происходит при вычислении интерпретатором формы ((lambda (x) (cons x x)) 'A):

Ответ:

 (1) в системе создается функциональный объект с именем Lambda 

 (2) переменная X связывается со значением A, выполняется однократное вычисление безымянной функции, строящей пару (A . A) 

 (3) данная форма останется доступной в системе с возможностью многократного ее вызова с различными значениями переменной X 


Номер 3
Что происходит при вычислении формы (defun f(x)(cons x x)):

Ответ:

 (1) имя функции f связывается с ее определением, и будет доступно далее при работе с интерпретатором 

 (2) имя функции f связывается с ее определением и будет доступно только один раз после вычисления указанной формы 

 (3) имя функции f связывается с ее определением, но данная форма не вычислима, т.к. не указано значение переменной x 


Упражнение 4:
Номер 1
Какое из выражений синтаксически корректно и не вызовет ошибку при интерпретации:

Ответ:

 (1) ((lambda (x) (cons (cdr x) (car x))) '(a b c)) 

 (2) ()defun f(x y) (cons (cdr x) (car y )) 

 (3) ((lambda (x) (cons (cdr 'x) (car 'x))) '(a b c)) 

 (4) ((defun (x) (cons (cdr x)) '(a b с)) 

 (5) (defun f (cons (cdr x) (car x ))) 


Номер 2
Какое из выражений синтаксически корректно и не вызовет ошибку при интерпретации:

Ответ:

 (1) ((lambda (x y) (cons (cdr y) (car x))) '(a b c) '(a)) 

 (2) ((defun f(x) (cons (cdr x) (car x )) '(a b c))) 

 (3) ((defun (x y) (cons (cdr x)) '(a b с)) 


Номер 3
Какое из выражений синтаксически корректно и не вызовет ошибку при интерпретации:

Ответ:

 (1) ((defun (x , y) (cons (cdr x) y)) 

 (2) ((lambda (x) (cons (cdr x) (car x))) '(a b c)) 

 (3) (defun f(x) (atom (car x ))) 


Упражнение 5:
Номер 1
В каком порядке будет проходить вычисление формы ((lambda (x) (car (cons (cdr x) x))) '(1 2 3)):

Ответ:

 (1) связывание переменной x со значением (1 2 3), вычисление головы списка, вычисление хвоста списка, соединение хвоста и остального списка, результат ((2 3) (1 2 3)) 

 (2) построение формы (car (cons (cdr x) x)) ,подстановка в нее значения '(1 2 3) (связывание с переменной x), вычисление хвоста списка, консолидация со списком, вычисление головы итогового списка, результат (2 3) 

 (3) связывание переменной x со значением (1 2 3), вычисление хвоста списка, консолидация с исходным списком, вычисление головы итогового списка, результат (2 3) 


Номер 2
Какая из приведенных ниже функций является рекурсивной с правильным выходом из рекурсии:

Ответ:

 (1) (defun f (x) (f (car x))) 

 (2) (defun f (x) (cond ((Atom x) x)(T (f (car x))))) 

 (3) (defun f (lambda (x) (cond (T ( * x (f (- x 1 ))) ) ) )) 


Номер 3
Какая из последовательностей действий на первом шаге рекурсии, выполняемых интерпретатором при вычислении выражения (Факториал 1) , где факториал:
			
(DEFUN Факториал  (LAMBDA (N)
     (COND ((= N 0 ) 1 )
           (T  ( *  N  (Факториал (- N 1 )))  )  
)      )       )
     
			

является верной:


Ответ:

 (1) выбор определения функции { (COND ((= N 0 ) 1 ) (T ( * N (Факториал (- N 1 ))) ) }, выделение параметров {n = 1}, немедленный выбор второй ветви cond {(T ( * N (Факториал (- N 1 ))) ) }, вычисление этого предиката и переход ко второму шагу рекурсии 

 (2) выбор определения функции { (COND ((= N 0 ) 1 ) (T ( * N (Факториал (- N 1 ))) ) }, выделение параметров {n = 1}, перебор предикатов, вычитание единицы {N=N-1} , вычисление первого предиката {((= N 0 ) 1 ), ответ 1}. 

 (3) выбор определения функции { (COND ((= N 0 ) 1 ) (T ( * N (Факториал (- N 1 ))) ) }, выделение параметров {n = 1}, перебор предикатов, выбор первой ветви {((= N 0 ) 1 )} , вычисление функции =, вычисление предиката (Nil 1), т.е. переход ко второй ветви, выбор второй ветви cond {(T ( * N (Факториал (- N 1 ))) ) }, вычисление этого предиката и переход ко второму шагу рекурсии 


Упражнение 6:
Номер 1
Как правильно будет выглядеть эквивалент  условного выражения языка Паскаль  "if (a=b) then print ('a равно b') else print ('a не равно b')" на языке Лисп:

Ответ:

 (1) (cond ((eq a b) (print "a равно b")) (T (print "a не равно b"))) 

 (2) (cond ((= a b) (print "a равно b")) (T (print "a не равно b"))) 

 (3) (cond ((= a b) print "a равно b") ("a не равно b")) 


Номер 2
Как правильно будет выглядеть эквивалент  условного выражения языка  Паскаль"if ((a + b) = 3) then print (a) else print (b)" на языке Лисп:

Ответ:

 (1) (cond ((= (+ a b) 3) print a) (else print b)) 

 (2) (cond ((= (+ a b) 3) (print a)) (T (print b))) 

 (3) (cond (( a + b) = 3) (print a)) (T (print b))) 


Номер 3
Как правильно будет выглядеть эквивалент  условного выражения языка Паскаль "if (a>b) then print (a) else print (b)" на языке Лисп:

Ответ:

 (1) (cond ((> a b) print a) (else print b)) 

 (2) (cond ((> a b) (print a)) (T (print b))) 

 (3) (cond ((< a b) (print a)) ((> a b) (print b))) 


Упражнение 7:
Номер 1
Являются ли приведенные ниже описания функции взятия второго элемента (необязательно атома) списка семантически и синтаксически верными. Указать верное описание:

Ответ:

 (1) (defun f(x) (f (caar x))) 

 (2) (defun F(x) (cond (F (car x)) ((atom x) x) )) 

 (3) (defun F(x) (cond (((atom x) x) (T (F (car x)) )) ) 


Номер 2
Являются ли приведенные ниже описания функции взятия правого элемента (атома ) списка (списочной нотации) семантически и синтаксически верными. Указать верное описание:

Ответ:

 (1) (defun f(x) (f (cdr x))) 

 (2) (defun F(x) (cond (F (cdr x)) ((atom x) x) )) 

 (3) (defun F(x) (cond ((Null (cdr x)) (car x)) (T (F (cdr x)) )) ) 


Номер 3
Являются ли приведенные ниже описания функции взятия левого элемента списка семантически и синтаксически верными. Указать верное описание:

Ответ:

 (1) (defun f(x) (f (car x))) 

 (2) (defun F(x) (cond (F (car x)) ((atom x) x) )) 

 (3) (defun F(x) (cond (((atom x) x) (T (F (car x)) )) ) 


Упражнение 8:
Номер 1
Какая из перечисленных ниже форм может быть переменной:

Ответ:

 (1) (Abс) 

 (2) Abc 

 (3) A(1)2 


Номер 2
Какая из перечисленных ниже форм может быть переменной:

Ответ:

 (1) (var A) 

 (2) 123A 

 (3) A123 


Номер 3
Какая из перечисленных ниже форм может быть переменной:

Ответ:

 (1) (A) 

 (2) 'A 

 (3) Adcdefj 


Упражнение 9:
Номер 1
Каким будет результат вычисления формы (cons (cdr '(A B C)) (car '((D)))):

Ответ:

 (1) ((car '(A B C)) (D)) 

 (2) ( (B C) D) 

 (3) (B C (D)) 


Номер 2
Каким будет результат вычисления формы (cons (car '(A B)) '((D))):

Ответ:

 (1) (A (D)) 

 (2) (A . ((D . Nil) . Nil)) 

 (3) (A D) 


Номер 3
Что получится в результате вычисления формы (cons (car '(A B C)) 'D):

Ответ:

 (1) ((car '(A B C)) D) 

 (2) (A D) 

 (3) ((A) D) 

 (4) (A . D) 


Упражнение 10:
Номер 1
Какая из данных форм вычислима: 

Ответ:

 (1) ((lambda (x y) (eq 'x 'y)) A 'A) 

 (2) ((lambda (z) (cons z 'x)) '(AB)) 

 (3) ((lambda (x) (eq x 0)) (a b)) 


Номер 2
Какая из данных форм вычислима: 

Ответ:

 (1) ((lambda (x) (atom 'x)) 1) 

 (2) ((lambda (z) (cons z x)) '(A) 'B)) 

 (3) ((lambda (x y) (cons x 'a)) '(a b)) 


Номер 3
Какая из данных форм вычислима: 

Ответ:

 (1) ((lambda (x y) (eq 'x 'y)) 'A 'A) 

 (2) ((lambda (z) (cons z 'x)) (AB)) 

 (3) ((lambda (x y) (cons x 'a)) '(a b)) 




Главная / Программирование / Введение в программирование на Лиспе / Тест 4