- •Лабораторная работа №2
- •Теоретическая часть
- •Основные фазы программирования на языке пролог
- •2. Описание базы знаний
- •3. Формулировка целей
- •4. Моделирование рассуждений
- •5. Пример программирования простых баз данных с использованием правил
- •Практическое задание
- •Адлер самолёт
- •V а g
- •Контрольные вопросы
Лабораторная работа №2
Тема: Создание программ на логическом языке в среде Visual Prolog.
Цель: Научиться писать простейшие программы на языке Пролог.
Теоретическая часть
Основные фазы программирования на языке пролог
Программирование на языке Пролог состоит из следующих этапов:
объявления некоторых фактов об объектах и отношениях между ними;
определения некоторых правил об объектах и отношениях между ними;
формулировки вопросов об объектах и отношениях между ними.
2. Описание базы знаний
В логической модели знаний, которая используется в языке Пролог, база знаний (БЗ) состоит из фактов и правил.
Описание фактов – достаточно простая задача, так как факт определяет свойство объекта или отношение (связь) между объектами. Любое имя, используемое в Турбо-Прологе, должно состоять не более чем из 250 символов, первый из которых при этом должен обязательно быть строчной буквой (кроме имён переменных) желательно латинского алфавита (от a до z). Пробелы в записи имени недопустимы, однако можно использовать подчерк (_) в качестве разделителя компонент.
Наибольшую трудность представляет описание правил. Правила используются в тех случаях, если необходимо показать, что некоторый факт зависит от других фактов (условий). Правила обладают большей общностью, чем факты. Это объясняется тем, что в правилах обычно содержаться переменные. Важно помнить, что переменная используется для обозначения не одного конкретного объекта, а различных объектов. Область действия переменной – одно правило. Кроме того, переменная обозначает один и тот же объект по всему правилу. Вот почему в процессе логического вывода все вхождения одной переменной в правиле заменяются одним и тем же значением. Имена переменных должны задаваться с заглавной буквы или с символа подчёркивания «_». Существует и особый вид переменной, которая называется анонимной и обозначается символом «_» (и только!). Она используется в качестве аргумента предиката в случае, когда конкретное значение переменной несущественно. Значения таких переменных не выводятся на печать. Следует заметить, что если в одном правиле используется несколько анонимных переменных, то все они разные.
Например, если нас интересует, является ли кто-либо мамой, но нам не нужно знать их детей (см. лабораторную работу №1), то нужно задать цель:
mother(Х,_).
Пролог при этом выдаст имена всех матерей, которые найдёт в базе данных согласно правилу:
mother(X,Y):-parent(X,Y),woman(X).
Именно благодаря правилам и переменным система логического вывода позволяет выводить такие значения, которые в явном виде в БЗ отсутствуют.
3. Формулировка целей
Существует два вида целей:
подтвердить справедливость факта. Ответом системы на такие запросы выступает логическое Yes или No. В естественном языке такие цели соответствуют конструкции вопроса типа: «Действительно ли, что … ?»;
перечислить все значения переменных, указанных в запросе. В естественном языке аналогом этих целей выступают вопросы, начинающиеся со слов Что? Кто? Сколько? Где? и т.д., ответы на которые требуют уточнения кое-каких деталей касательно объекта, указанного в вопросе.
При формулировке правил и целей допускается использование отрицания, конъюнкции, дизъюнкции, а также операций сравнения (<,<=,>,>=,<>,=).