Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Задания к лабораторной работе.




1. Запишите следующие лямбда-вызовы с использованием формы LET и вычислите их на машине:

a) ((LAMBDA (x y) (LIST x y)

‘(+ 1 2) ‘c);

b) ((LAMBDA (x y) ((LAMBDA (z) (LIST x y z)) ‘c)

‘a ‘b);

c) ((LAMBDA (x y) (LIST x y))

((LAMBDA (z) z) ‘a)

‘b).

2. Напишите с помощью композиции условных выражений функции от четырех аргументов AND4(x1 x2 x3 x4) и OR4(x1 x2 x3 x4), совпадающие с функциями AND и OR от четырех аргументов.

3. Пусть L1 и L2 - списки. Напишите функцию, которая возвращала бы T, если N-ые два элемента этих функций соответственно равны друг другу, и NIL в противном случае.

4. Написать условное выражение (используя COND), которое:

a) дает NIL, если L атом, и T в противном случае;

b) выдает для списка L,состоящего из трех элементов, первый из этих трех, который является атомом, или список, если в списке нет элементов атомов.

5. С помощью предложений COND или CASE определите функцию, которая возвращает в качестве значения столицу заданного аргументом государства.

6. Напишите с помощью условного предложения функцию, которая возвращает из трех числовых аргументов значение большего, меньшего по величине числа.

7. Запрограммируйте с помощью предложения DO функцию факториал.

8. Запишите с помощью предложения PROG функцию (аналог встроенной функции LENGTH), которая возвращает в качестве значения длину списка (количество элементов на верхнем уровне).

9. Используя функцию COND, напишите функцию, которая спрашивает у пользователя ФИО двух студентов из группы (список группы составлен раньше) для которых:

а) сравнивает год рождения и выдает результат (кто старше или что они ровесники);

б) сравнивает средний бал и выдает сообщение о результатах сравнения;

с) проверяет родственные связи (если одни и те же родители, то они родственники) и выдает об этом сообщение.

10. Напишите подобные функции, но уже используя функцию IF.

Для двух последних заданий вывод информации осуществить при помощью функций PRINT, PRIN1, PRINC.

 

Center - находит среднее из трех чисел:

(DEFUN center (x y z)

(COND ((> x y) (IF (< x z) (PROGN (PRINT x)

(PRINT «среднее (1)»))

(IF (> y z) (PROGN (PRINT y)

(TERPRI)

(PRINT «среднее (2)»))

(PROGN (PRIN1 z)

(PRIN1«среднее (3)»)))))

((< x y) (IF (< y z) (PROGN (PRIN1 y)

(TERPRI)

(PRIN1 «среднее (4)»))

(IF (> x z) (PROGN (PRINC x)

(PRINC «среднее (5)»))

(PROGN (PRINC z)

(TERPRI)

(PRINC «среднее (6)»)))))

(T (PRINC «ошибка ввода»))))

Вопросы.

1. Для чего используется предложение LET?

2. В чем его отличие от предложения LET*?

3. Чем различаются функции COND и IF?

4. Каковы возвращаемые ими значения?

5. Чем различаются функции PROG1 и PROGN?

6. Почему не желательно использовать операторы передачи управления? Чем их можно заменить?

 

Лабораторная работа №4.

Тема: Рекурсия в Лиспе. Функционалы и макросы.

Цель: Изучить основы программирования с применением рекурсии. Научиться работать с функционалами и макросами.

Рекурсия. Различные формы рекурсии.

Применяющие функционалы.

Отображающие функционалы.

Макросы.

Задание к лабораторной работе.

Вопросы.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...