
Лабораторные работы по ЛП
Лабораторная работа №1 Построение информационно- справочных систем
При выполнении работы студенты должны разобраться с механизмом работы Пролога на примере создания простых информационно–справочных систем (ИСС).
Пример. Требуется осуществить подбор автомобиля, описанного 4 атрибутами: маркой, цветом, ценой, годом выпуска, по вводимым с клавиатуры 2 критериям - году выпуска и цене.
Назначение предикатов:
автомобиль (марка, цвет, цена, год_выпуска) – используется для определения фактов, описывающих характеристики автомобилей, информация о которых содержится в базе;
start – цель программы. Формирует запрос и организует общий вычислительный процесс.
DOMAINS
модель=string
цвет=symbol
цена=real
год_выпуска=integer
PREDICATES
автомобиль(модель, цвет, цена, год_выпуска)
start
CLAUSES
автомобиль("Ассеnt",красный,330000, 2002).
автомобиль("Ford Focus",зеленый,480000,2003).
автомобиль("Волга 3110",зеленый,180000, 2002).
автомобиль("ВАЗ 2199",голубой,220000, 2002).
автомобиль("ВАЗ 2110",красный,240000,2003).
автомобиль("Sonata",белый,520000, 2005).
start:-write(" Критерии для поиска"),nl,
write("Введите верхнюю границу цены – "),readreal(MyPrice),
write("Введите нижнюю границу года выпуска – "),readint(MyYear),
автомобиль(Name,Color,Price,Year), Price<MyPrice, Year>MyYear,
nl, write(Name),nl, write(Color), nl;
write("Автомобиля с такими параметрами нет!"), nl.
GOAL
start.
Объяснение решения этой задачи приводится в файле «Интерфейс VisualProlog»
Варианты заданий
В перечисленных ниже вариантах среди заданных атрибутов выберите не менее 2-х для поиска. Количество фактов в БД – не менее 10. Постарайтесь создать программу с выводом всех вариантов ответа, а не одного, как в примере. С этой целью разберитесь с контрольным вопросом № 5.
1. Создать ИСС, которая подскажет породу собак по заданным признакам. Атрибуты: служебные или охотничьи, короткая или длинная шерсть, вес, рост, длинные или короткие уши и т.д.
2. Создать ИСС для выбора типа самолета. Атрибуты: военный или гражданский, грузовой или пассажирский, грузоподъемность, высота подъема, скорость, тип двигателя и т.д.
3. Создать ИСС для выбора названия монографии по программированию. Атрибуты: системное или прикладное, описание утилит, описание языков программирования, справочное или подробное описание, год выпуска и т.д.
4. Создать ИСС для определения типа морского судна. Атрибуты: военное, грузовое или пассажирское, назначение, водоизмещение, скорость и т.д.
5. Создать ИСС для выбора компьютера. Атрибуты: тип( сервер, рабочая станция), память, процессор, стоимость и т.д.
6. Создать ИСС, описывающую результат сдачи сессии студенческой группой и определяющую, например, предметы, по которым получены удовлетворительные и неудовлетворительные оценки.
7. Создать ИСС для работников страховой компании, перечисляющую клиентов, которые должны сделать очередной взнос. Атрибуты: дата страховки, номер страхового свидетельства, предмет страховки, сумма страховки, дата и сумма очередного взноса.
8. Создать ИСС, позволяющую получить список, например, птенцов водоплавающих птиц (до 3 мес.) в зоопарке. Атрибуты: млекопитающее, птица, порода, возраст.
9. Создать ИСС, позволяющую выбрать заболевания по набору 2 симптомов. Атрибуты: температура, боль в горле, повышенное давление, учащенный пульс и т.п.
10. Создать ИСС, выдающую сведения о лучших фильмах года в заданном жанре(комедия, триллер, фантастика и т.п.). Атрибуты: название, жанр, режиссер, сценарист, год выпуска, киностудия, страна - производитель.
11. Создать ИСС, позволяющую получить рекомендации по выбору страны и университета для продолжения учебы за границей по избранной специальности на следующем курсе. Атрибуты: страна, университет, специальность, курс, стоимость обучения, условия проживания и т.д.
12. Создать ИСС риэлтерской фирмы, выдающую клиенту список адресов продаваемых квартир по заданным площади и стоимости.
Контрольные вопросы:
1.Заданы следующие факты и правило
a(n1,n2).
a(n3,n4).
b(n5).
b(n6).
с:- a(X,Y), b(X).
Возможно ли доказательство цели c и как по шагам оно выполняется? Если доказательство невозможно, то что надо изменить или добавить в программе?
2. Что содержит каждый раздел программы на Visual Prolog?
3. Для чего используется символ «;» в правиле start?
4. После предиката “write(Color)” и перед символом “;” в тело правила start вставляется заведомо ложный предикат, например, 3>5. Как изменится вывод? Почему?