- •Лабораторная работа №1 Освоение начальных навыков программирования на языке Лисп и создание собственных функций
- •Реализация в Mulisp
- •Реализация в LispWorks
- •Лабораторная работа №2 Обработка строк, работа со списками
- •Реализация в Mulisp
- •Реализация на Common Lisp для LispWorks Вариант 1
- •Вариант 2
- •Реализация для LispWorks Вариант 1
- •Лабораторная работа №3 Построение простейших экспертных систем
- •Реализация в Mulisp
- •Вариант 2
- •Вариант 3
- •Лабораторная работа №4 Моделирование работы машины Тьюринга
Вариант 2
Для описания записи используется структуры.
(defvar books)
(setq books (list
'("R.Forsyth" "Expert systems" "Chapman and Hall" 1987)
'("J.Doores" "Prolog" "Sigma Press" 1980)
'("D.Marscellus" "Expert systems" "Prentice Hall" 1994)
'("K.M.Yin" "Using Turbo Prolog" "Que Corporation" 1993)
'("J.R.R. Tolkien" "The return of the king" "Rainbow" 1990)
'("J.R.R. Tolkien" "The two towers" "Rainbow" 1994)
'("R.Jordan" "The fires of heaven" "ACT" 1997)
'("R.Jordan" "The dragon reborn" "ACT" 1997)))
(defstruct book (autor "" :type string)
(title "" :type string)
(publishing "" :type string)
(year 0 :type fixnum))
(defun sp (books)
(setq x (car books))
(setq autor (car x))
(setq title (cadr x))
(setq publishing (caddr x))
(setq year (cadddr x) )
(cond
((null books) nil)
(t ( cons (make-book :autor autor :title title :publishing publishing :year year ) (sp (cdr books ))))))
(defun start ()
( setq setbook (sp books))
(print "Введите автора->") (setq autor (read))
(print "Введите год издания ->") (setq year (read))
(setq res (and
(select-by-book setbook #'book-autor autor :test #'string=)
(select-by-book setbook #'book-year year )))
(print "Результат")
(cond ((null res) (print "Совпадений нет") nil )
(t(setq x res))))
(defun select-by-book (listofbook slot value &key (test #'eql))
(remove value listofbook :test-not test :key slot))
CL-USER > (start)
"Введите автора->" "R.Jordan"
"Введите год издания ->" 1997
"Результат"
(#S(BOOK :AUTOR "R.Jordan" :TITLE "The fires of heaven" :PUBLISHING "ACT" :YEAR 1997) #S(BOOK :AUTOR "R.Jordan" :TITLE "The dragon reborn" :PUBLISHING "ACT" :YEAR 1997))
Вариант 3
Для описания записи используется списки.
(defvar books
(list '("R.Forsyth" "Expert systems" "Chapman and Hall" 1987)
'("J.Doores" "Prolog" "Sigma Press" 1980)
'("D.Marscellus" "Expert systems" "Prentice Hall" 1994)
'("K.M.Yin" "Using Turbo Prolog" "Que Corporation" 1993)
'("J.R.R. Tolkien" "The return of the king" "Rainbow" 1990)
'("J.R.R. Tolkien" "The two towers" "Rainbow" 1994)
'("R.Jordan" "The fires of heaven" "ACT" 1997)
'("R.Jordan" "The dragon reborn" "ACT" 1997)))
(defun select-by-book (val1 val2 books)
(cond ((null books) nil)
(t (cond ((And (equal (caar books) val2) (eq (nth 3 books) val1)) (cons (car books) (select-by-book val1 val2 (cdr books) ))(print-list (car books))
(t (select-by-book val1 val2 (cdr books)))))))
(defun print-list (stl)
(format t "Книги: ~%~{~{~10t~a~%~}~%~}" stl))
(defun start()
(print "Введите автора->") (setq autor (read))
(print "Введите год издания ->") (setq year (read))
(select-by-book year autor books))
Задания для самостоятельного решения:
1. Создать ЭС, которая будет распознавать породу собак по заданным признакам. Характеристики для оценки: короткая или длинная шерсть, вес, рост, хороший или плохой характер, длинные или короткие уши и т.д.
2. Создать ЭС для определения типа самолета. Характеристики для оценки: военный или гражданский, грузовой или пассажирский, грузоподъемность, высота подъема, скорость, тип двигателя и т.д.
3. Создать ЭС для выбора технической литературы по программированию. Характеристики для оценки: системное или прикладное, описание утилит, описание языков программирования, справочное или подробное описание и т.д.
4. Создать ЭС для определения типа морского судна. Характеристики для оценки: военное, грузовое или пассажирское, назначение, водоизмещение, скорость и т.д.
5. Составить программу, моделирующую работу склада комплектующих деталей для вычислительной техники. В программе должна быть предусмотрена возможность получения полных сведений о всех комплектующих и их количестве, по заданному типу ЭВМ и виду неисправности – сведений о наличии деталей.
6. Составить программу, моделирующую работу отдела кадров. В программе должна быть предусмотрена возможность получения ответа на запрос (сведения не менее чем о 10 специальностях): какие специалисты и какой квалификации нужны; выдача всех специальностей, для которых существует возрастной ценз, и его значения; выдача всех специальностей с окладом, больше указанного.
7. Составить программу, моделирующую работу страховой компании (сведения не менее чем о 10 клиентах). В программе должна быть предусмотрена возможность получения по фамилии клиента информации о дате страховки, номере страхового свидетельства, предмете страховки; выдачи сведений о клиенте и суммы выплат по страховым случаям.
8. Создать ЭС для выбора технической литературы по дискретной математике. Характеристики для оценки: какой раздел, теоретический или прикладной подход и т.д.
9. Составить программу, описывающую результат сдачи сессии студенческой группой (информация не менее чем о 10 студентах). В программе должна быть предусмотрена возможность получения фамилий всех студентов, имеющих результаты без троек; фамилий всех задолжников с указанием предметов, по которым получены неудовлетворительные оценки.
10. Создать ЭС, позволяющую осуществить выбор программного обеспечения для решения задач геометрического моделирования. Характеристики для оценки: назначение, тип программного обеспечения, графические возможности и т.д.
11. Создать ЭС, позволяющую идентифицировать животное в зоопарке. Характеристики для оценки: млекопитающее, травоядное, шерсть, наличие копыт, рогов, водоплавающее и т.д.
12. Создать ЭС, позволяющую определить заболевание по набору симптомов. Характеристики для оценки: температура, внешние проявления, самочувствие и т.д.
13. Создать ЭС, позволяющую подобрать необходимый набор лекарств для лечения при заданных симптомах, противопоказаниях и т.п.
14. Составить программу, моделирующую работу кредитного отдела банка. В программе должна быть предусмотрена возможность получения следующих данных: какая фирма и когда взяла кредит; названия фирм и суммы, которые следует вернуть в указанном месяце. Должна содержаться информация не менее чем о десяти фирмах.
15. Создать ЭС для выбора необходимой технической литературы. Набор характеристик: по гуманитарным или точным наукам, конкретный предмет, для какой цели и т.д.
16. Создать ЭС, позволяющую получить рекомендацию по выбору художественной литературы для чтения. Набор характеристик: жанр, страна автора, стиль и т.п.
17. Создать ЭС для определения неисправностей в автомобиле и получения рекомендаций по их устранению. Набор характеристик: неисправность, в какой части, особенности проявления неисправности и т.д.
18. Создать ЭС для определения неисправностей в вычислительной технике и получение рекомендаций по их устранению. Набор характеристик: внешние проявления, в какой части и т.п.
19. Создать ЭС для определения породы птиц. Характеристики для оценки: цвет перьев, умеет петь, говорить, плавать, форма клюва и т.д.
20. Создать ЭС для выбора автомобиля. Характеристики для оценки: тип кузова, скорость, расход бензина и т.д.
21. Составить программу, моделирующую работу справочного бюро автостанции (определить не менее пяти маршрутов, по каждому из которых отправить два–три автобуса в разное время). Должна быть реализована возможность получения следующей информации: по заданному маршруту определить все автобусы и время их отправления; по заданному интервалу времени определить число отходящих автобусов и маршруты их следования; найти автобус, идущий в нужное время в заданном направлении.
22. Создать ЭС для осуществления выбора подписных изданий. Характеристики для оценки: газета или журнал, тематическая направленность, привлекаемые авторы, цена и т.д.
23. Создать ЭС для определения морского животного. Характеристики для оценки: вес, чем питается, при какой температуре живет и т.д.
24. Составить программу, содержащую сведения о лучшей десятке фильмов. Данные для построения вывода: название, режиссер, сценарист, год выпуска, киностудия, страна производитель. В программе должна быть реализована возможность получения следующей информации: по порядковому номеру – фамилия режиссера, название фильма, страны производителя; все фильмы одного года выпуска или одной киностудии; все фильмы одной страны.
25. Создать ЭС, позволяющую осуществить выбор технической литературы по языкам программирования. Характеристики для оценки: тип языка (процедурный, функциональный, логический и т.п.), механизм функционирования, среда функционирования, объем требуемой памяти для размещения полной версии и т.д.
26. Создать ЭС, позволяющую получить рекомендации по выбору музыкальных CD дисков. Набор характеристик: музыкальное направление, исполнитель, на каком языке исполняются тексты песен, страна производитель CD и т.п.
27. Создать ЭС, позволяющую осуществить выбор фантастической литературы. Характеристики для оценки: к какому направлению относится (научная, фэнтези, хоррор и т.п.), автор, язык оригинала, год издания, объем в страницах и т.д.
28. Составить программу, моделирующую расписание занятий. Считать, что каждый день проводится по три пары. Должна быть реализована возможность получения следующей информации: по заданному номеру пары и дню недели получить название дисциплины и фамилию преподавателя; по фамилии преподавателя получить название проводимых им пар, время и место их проведения.
29. Составить программу, моделирующую каталог библиотеки (15 – 20 наименований). В программе должна быть реализована возможность получения следующей информации: по заданному автору получить название всех его книг, год их издания, издательство, тираж и количество экземпляров каждой из них в библиотеке; определить все книги, изданные в одном году, в одном издательстве.
