Файл: Задание Написать выражение на языке лисп по индивидуальному заданию. Продемонстрировать преобразование для данного выражения в среде интерпретатора LispWorks..docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.02.2024

Просмотров: 9

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

  1. Задание

Написать Λ-выражение на языке ЛИСП по индивидуальному заданию.

Продемонстрировать Λ-преобразование для данного Λ-выражения в среде интерпретатора LispWorks.

Написать пользовательскую функцию DEFUN на языке ЛИСП для выражения. Интерпретировать написанную функцию в среде интерпретатора LispWorks.

Продемонстрировать вызовы пользовательской функции в среде интерпретатора LispWorks.


  1. Исходные данные


Имеется исходная формула:


Рисунок 1. Исходная формула.


  1. Опишем Λ-выражение.


Код, позволяющий вносить в программу исходные данные:
(lambda (b x)

(cond ((< x 0) (- b (* x x)))

((= x 0) b)

((> x 0) (+ b (* x x)))))


  1. Продемонстрируем Λ-преобразование для данного Λ-выражения в среде интерпретатора LispWorks.


Проверим, первое условие x < 0. Для этого передадим значение x которое меньше, чем 0, например -3. В таком случае 2 – (-3 * -3) = 1 – 9 = -7. Значение верно.




Проверим второе условие x = 0, для этого передадим числа x = 0, b = 2 чтобы соблюсти условие. В таком случае результат должен быть равен 2.

Проверим условие x > 0, для этого передадим числа x = 4, b = 2 чтобы соблюсти условие. В таком случае 2 + 4 * 4 = 2 + 16 = 18. Значение верно.




  1. Напишем пользовательскую функцию DEFUN на языке ЛИСП для выражения.


Код, позволяющий вносить в программу исходные данные:
(defun f (b x)

(if (< x 0)

(- b (* x x))

(if (= x 0)

b

(+ b (* x x)))))


  1. Продемонстрируем вызовы пользовательской функции в среде интерпретатора LispWorks.


Продемонстрируем вызов функции на двух примерах. Вариант (f 0 -5) вернет значение 25. Этот вызов проверяет, что
функция правильно обрабатывает случай, когда b = 0 и x < 0.
(f -3 4) вернет значение 13. Этот вызов проверяет, что функция правильно обрабатывает отрицательные значения b и положительные значения x.



  1. Вывод.

Мы описали заданную формулу и писали ее в виде функции prolog, провели тестирование и убедились в работоспособности программы.