Функ и лог программирование. отчет. Отчет по лабораторной работе по дисциплине Функциональное и логическое программирование
Скачать 18.3 Kb.
|
Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра автоматизации обработки информации (АОИ) РАЗРАБОТКА ПРОГРАММЫ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА ЛИСП Отчет по лабораторной работе по дисциплине «Функциональное и логическое программирование»
Томск 2022 Оглавление1 Цели и задачи работы 3 2 Основная часть 4 2.1 Задание 4 2.2 Решение 4 3 Выводы 6 Список использованных источников 7 1 Цели и задачи работыВыполнение лабораторной работы по данной дисциплине имеет целью закрепление теоретического материала, получение навыков в функциональном программировании с использованием языка Лисп. 2 Основная часть2.1 Задание1. Задание состоит из трех задач, в которых необходимо составить программы на Лиспе. В первой задаче требуется применение простой рекурсии. При составлении программ (если не оговорено противное) можно использовать все встроенные функции Лиспа. Отладку программ можно осуществлять с помощью функции трассировки (trace <имя функции>), для отключения трассировки функции используйте (untrace <имя функции>). Во второй и третьей задачах для программирования требуется использовать локальные или вспомогательные функции. В третьей задаче требуется использовать функционалы. При составлении программ (если не оговорено противное) можно использовать все встроенные функции языка Лисп. Тексты всех программ, если вы мыслите в духе функционального программирования, буквально состоят из нескольких строчек. Вариант 3 1. Напишите функцию, вычисляющую последний элемент списка. 2. Напишите функцию, которая делает из списка множество, т. е. удаляет все повторяющиеся элементы. 3. Напишите функцию (exists p x), которая проверяет, существует ли элемент списка x, удовлетворяющий предикату p (p – функция или функциональное имя). 2.2 РешениеРешение задачи 1 (defun lst(x) (cond ((null x) nil) ((null (cdr x)) (car x)) (t (lst (cdr x))))) > (lst '(a b c d)) D Решение задачи 2 (defun toset(x) (cond ((null x) x) ((member (car x) (cdr x)) (toset (cdr x))) (t (cons (car x) (toset (cdr x)))))) > (toset '(a g b h s w j f w b s u)) (A G H J F W B S U) Решение задачи 3 (defun exists(p x) (cond ((null x) nil) ((funcall p (car x)) t) (t (exists p (cdr x))))) > (exists 'zerop '(6 5 4 2 1 0 9)) T > (exists 'zerop '(6 5 4 2 1 4 9)) NIL 3 ВыводыВ процессе выполнения данной работы были получены практические навыки в решении задач по функциональному программированию с использованием языка Лисп. Все поставленные задачи решены. Список использованных источников1. Салмина, Н. Ю. Функциональное программирование и интеллектуальные системы : учеб. пособие / Н. Ю. Салмина. – Томск : ФДО, ТУСУР, 2016. – 100 с. 2. Зюзьков, В. М. Функциональное программирование : учеб. пособие / В. М. Зюзьков. – Томск : Томский межвузовский центр дистанционного образования, 2005. – 140 с. 3. Зюзьков, В. М. Логическое и функциональное программирование : учеб.-метод. пособие / В. М. Зюзьков. – Томск : Томский межвузовский центр дистанционного образования, 2000. – 72 с. |