Автор работы: Пользователь скрыл имя, 19 Февраля 2011 в 15:30, лабораторная работа
Цель: Ознакомиться со средой MuLisp. Изучить базовые функции Лиспа, символы и их свойства, а также средства для работы с числами.
1.Основные положения программирования на Лиспе.
2.Загрузка системы, системный редактор.
3.Базовые функции языка. Символы, свойства символов.
4.Средства языка для работы с числами.
5.Задание к лабораторной работе.
6.Вопросы.
:выводы
'((жив птица))))
(setq prav5 (make-prav :имя 'prav5
:условия '((жив ест мясо))
:выводы
'((жив хищник))))
(setq
*правила* '(prav1 prav2 prav3 prav4 prav5) ;список, хранящий
правила системы
(defun проверь-правило (правило)
;проверяет применимо ли правило
(подмнож (prav-условия правило) *факты*))
(defun подмнож (подмнож множ)
;проверяет, является ли множ подмнож
(equal подмнож (intersection1 подмнож множ)))
(defun добавь-выводы (правило)
;расширяет список фактов правилами вывода
(do ((выводы (prav-выводы правило))) ;инициализация начального значения
((null выводы) *факты*) ;условие окончания
(if (member (car выводы) *факты*) nil ;проверка - входит «голова»
(progn (prin1 "Согласно правилу:") ;выводов в список фактов
(prin1 (prav-name правило))
(push (car выводы) *факты*)))
(setq выводы (cdr выводы)))) ;шаг изменения
*
Для проверки работоспособности программы необходимо выполнить следующую последовательность команд:
MuLisp-87.com Common.lsp - Загрузка системы
(load structur.lsp) - подключение приложения для работы со структурами
(load rash.lsp) - подключение расширения, которое мы рассмотрим позже
(load
exsis.lsp) - подключение
тестируемой программы
В начале работы с программой необходимо инициализировать список фактов
(SETQ *факты* ‘(начальные факты))
где
начальные факты - условия из какого-либо
правила
Пример2.
Пример
представления знаний с помощью фреймов.
В примере упоминаются три фрейма - МЕРОПРИЯТИЕ,
СОБРАНИЕ и СОБРАНИЕ1. Фрейм МЕРОПРИЯТИЕ
- наиболее общий, фрейм СОБРАНИЕ - более
конкретный, описывающий вид МЕРОПРИЯТИЯ,
а фрейм СОБРАНИЕ1 - наиболее уточненный
фрейм, описывающий конкретное СОБРАНИЕ.
Фрейм СОБРАНИЕ называется субфреймом
фрейма МЕРОПРИЯТИЕ, а СОБРАНИЕ1 - субфрейм
фрейма СОБРАНИЕ.
(собрание
(разновидность (мероприятие)) имена и значения слотов
(время
(среда 14.00))
(место
(зал заседаний))
)
(собрание1
(разновидность (собрание))
(присутствуют ((Вася) (Петя) (Маша)))
)
Реализация
фрейм-программы на Лиспе.
;EXSIS2 - реализация фрейм-программы на Лиспе.
(setf (get ‘собрание ‘разновидность) ‘мероприятие)
(setf (get ‘собрание ‘время) ‘(среда 14.00))
(setf (get ‘собрание ‘место) ‘(зал заседаний))
(setf (get ‘собрание1 ‘разновидность) ‘собрание)
(setf
(get ‘собрание1 ‘присутствуют) ‘((Вася)
(Петя) (Маша)))
;функция - определяющая наследуемые свойства
(defun наследование (фрейм имя_слота)
(cond ((get фрейм имя_слота)) ;имеется во фрейме данный слот?
;если да, то вернуть его значение.
(t (cond ((get фрейм ‘разновидность) ;иначе - проверить наличие
;слота разновидность. В случае его присутствия - рекурсивно применить
;функцию к верхним фреймам
4. Задания к лабораторной работе.
1.Переведите следующие списочные записи в точечные:
2. Переведите следующие точечные записи в списочные:
3. Напишите функцию:
4.
Напишите функцию, аналог функции putassoc
которая физически изменяет а-список (putassoc1 ключ
данные а-список).
5. Расширьте возможности программы EXSIS.LSP:
6.
Подобным образом измените программу EXSIS1.LSP.
7. Разработайте базу знаний и правила базы знаний РАСПИСАНИЕ ЗАНЯТИЙ используя:
5. Вопросы.
1. В чем особенности точечной нотации?
2. Назовите структурированные типы данных, их особенности?
3. Способы представления знаний?
4.
Их достоинства и недостатки?
Лабораторная работа № 6.
Тема: Изучение учебной версии языка Лисп - dlisp. Расширение библиотеки функций dlisp.
Цель:
Ознакомиться с учебной версией Лиспа
- dlisp.
Изучить ее возможности и особенности.
Расширить библиотеку функций dlisp.
1. Интерфейс пользователя.
Запуск системы осуществляется командой:
DLISP.EXE
При загрузке системы начинает работать редактор, он чистит экран, рисует рамку и выдает на экран главное меню:
Файл. Имеет следующие опции: новый, открыть, сохранить, сохранить как, выход.
Просмотр: экран вывода, экран интерпретатора.
Редактор.
Поиск: поиск, повторить поиск, замена.
Запуск: выполнить, перезапустить, продолжить.
Отладка: шаг, трассировка, контрольная точка, очистить все.
Параметры: режим экрана, проверка синтаксиса.
Справка.
Затем система ждет, пока пользователь не выберет одну из опций.
Редактор работает с файлами, имеющими расширение LSP и находящимися в той же директории, что и файл DLISP.EXE
Результаты вычислений выводятся на специальный экран. Для просмотра этих результатов необходимо выбрать опцию «Просмотр» главного меню, а в ней - «экран вывода». Чтобы вернуться назад необходимо нажать любую клавишу.
Для переключения в режим диалога используют клавиши SHIFT+TAB.
Для
повтора предыдущей команды используют
клавишу F3.
2. Функции, поддерживаемые dlisp.
Dlisp поддерживает несколько различных типов данных:
* списки
* символы
* строковые константы
* действительные числа
* целые числа
По синтаксису и соглашениям Dlisp близок к MuLispу, более того, он является небольшой его частью.
Dlisp содержит некоторое число
заранее определенных функций. Каждая
функция вызывается как список, первым
элементом которого является имя
функции, а остальными - аргументы этой
функции (если они есть). Многие из функций
- стандартные функции LISP, их можно найти
в каждом руководстве по языку.
Функции MuLispа поддерживаемые dlispом и определенные нами в предыдущих лабораторных работах.
(+ <число> <число>...)
(- <число> <число>...)
(* <число> <число>...)
(/ <число> <число>...)
(= <атом> <атом>...)
(/= <атом1> <атом2>)
(< <атом> <атом>...)
(<= <атом> <атом>...)
(> <атом> <атом>...)
(>= <атом> <атом>...)
(and <выражение>...)