- •Методические указания к выполнению лабораторных работ
- •Лабораторная работа «Установка и проверка работы Visual Prolog»
- •ПрОграммирование в лоГике
- •Описание окон Visual Prolog, перечень окон
- •Задание Создание проекта и настройка компилятора
- •Запуск и тестирование работы программы
- •Вопросы для самоконтроля
- •Лабораторная работа «Создание программы с использованием предложений, предикатов, доменов и целей. Создание составных целей»
- •Файлы используемые в проекте
- •Структура программы на Visual Prolog
- •Создание программы на языке Visual Prolog
- •1. В первую очередь необходимо определить факты.
- •2. Необходимо определить правила
- •3. После определения предложений необходимо сформулировать цель на языке Пролог
- •3. Далее в разделе предикатов необходимо описать пользовательские предикаты. Это можно сделать двумя способами
- •Задание Создание программы с использованием предложений, предикатов, доменов и целей
- •Организация запросов
- •Вопросы для самоконтроля
- •Лабораторная работа «Создание составных целей с конъюнкцией и дизъюнкцией»
- •Сложная цель с конъюнкцией и дизъюнкцией
- •Задание Внесение правил
- •Настроить проект как в лабораторной работе №1. * применить к каждой лабораторной работе
- •Организация запросов
- •Лабораторная работа «Использование отладчика приложения для составления целевого дерева»
- •Унификация и поиск с возвратом
- •Поиск с возвратом
- •Детальный поиск с возвратом
- •Задание
- •Создание программы
- •Использование отладчика приложения (Debugger)
- •Вопросы для самоконтроля
- •Лабораторная работа «Управление поиском решения»
- •Управление поиском решений
- •Прерывание поиска с возвратом (отсечение)
- •Использование предиката Fail
- •Предотвращение поиска с возвратом к предыдущей подцели в правиле
- •Использование предиката Not
- •Задание Создание программы поиска с предикатами !, not
- •Лабораторная работа «Организация пользовательского меню»
- •Детерминизм и отсечение
- •Использование правил для условного ветвления
- •Задание
- •Вопросы для самоконтроля
- •Лабораторная работа «Составные объекты»
- •Простые и составные объекты
- •Простые объекты данных
- •Составные объекты данных и функторы
- •Унификация составных объектов
- •Объявление составных доменов
- •Задание
- •Создание программы
- •Вопросы для самоконтроля
- •Лабораторная работа «Списки»
- •Задание
- •Вопросы для самоконтроля
- •Используемая литература
1. В первую очередь необходимо определить факты.
В Прологе отношение между объектами называется фактом (fact). В естественном языке отношение устанавливается в предложении. В логике предикатов, используемой Прологом, отношение соответствует простой фразе (факту), состоящей из имени отношения и объекта или объектов, заключенных в круглые скобки. Как и предложение, факт завершается точкой (.).
Для решения поставленной задачи необходимо определить факты и записать их на языке Visual Prolog:
Ани девочка - girl (Ani)
Все сыновья мальчики - can (boy)
Цветы это красиво – kp (float)
Лене нравятся цветы - like (lina, float)
Том любит маму -
Долли любит сына - love (dolli, can)
Объекты lina и tom и т.д. начинаются со строчной буквы, т. к. они являются идентификаторами, имеют постоянное значение.
2. Необходимо определить правила
Правила позволяют вам вывести один факт из других фактов. Другими словами, можно сказать, что правило — это заключение, для которого известно, что оно истинно, если одно или несколько других найденных заключений или фактов являются истинными.
Необходимо определить и записать на языке Visual Prolog правила (зависимые отношения):
Лене нравится все что нравится Тому like (lina, A):-like (tom, A)
Здесь использовалась переменная А. Переменные всегда начинаются с заглавной буквы или символа подчеркивания. В Прологе переменные позволяют вам записывать общие факты и правила и задавать общие вопросы.
Символ :- имеет смысл "если", и служит для разделения двух частей правила: заголовка и тела.
Всем девочкам нравятся красивое - like (girl, Kp):-kp(Kp)
Здесь использовалась переменная Kp
3. После определения предложений необходимо сформулировать цель на языке Пролог
Однократно дав языку Пролог несколько фактов, мы можем задавать вопросы, касающиеся отношений между ними. Это называется запросом (query) системы языка Пролог. Мы можем задавать Прологу такие же вопросы, которые мы могли бы задать вам об этих отношениях. Основываясь на известных, заданных ранее фактах и правилах, вы можете ответить на вопросы об этих отношениях, в точности так же это может сделать Пролог.
Девочкам нравятся цветы?
like (girl,float).
Ответ: yes
3. Далее в разделе предикатов необходимо описать пользовательские предикаты. Это можно сделать двумя способами
1. Присвоить имена объектам фактов и правил в разделе predicates: girl (name) love (name, name) like (name, name) Далее прописать в разделе domains типы объектов предикатов: name = (symbol) |
2. Прописать в разделе predicates типы объектов предикатов: girl (symbol) love (symbol, symbol) like (symbol, symbol)
|
Получим следующую программу на языку Пролог:
predicates
like(symbol, symbol)
love (symbol, symbol)
kp (symbol)
girl(symbol)
can (symbol)
clauses
girl(ani).
girl(lina).
can (boy).
kp(float).
like (lina, float).
like(tom, mama).
like (girl, Kp):-kp(Kp).
love (dolli, can).
goal
like (girl,float).
