пятница, 16 сентября 2016 г.

введение в Visual Prolog




Решение задачи средствами языка Visual Prolog осуществляется путем логического вывода необходимых сведений из уже известных.
Программа на VP представляет собой конечную последовательность определенных фактов, относящихся к определенной предметной области и правил вывода логических заключений из этих фактов.
Программа состоит из следующих блоков, начало которых обозначается различными ключевыми словами:
domains – раздел описания доменов (начинается со строчной буквы!), которые позволяют задавать разные имена различным видам данных, чтобы они не выглядели одинаково и программист помнил что и в каком порядке используется для обработки
predicates – раздел определения фактов и правил. Объявление предиката начинается с имени предиката (начинается с буквы, можно использовать знак «_», но нельзя знаки «–« , «*» , пробел), а затем в () перечисления доменов (стандартных, т.е. типов и описанных ранее в разделе доменов)
clauses – раздел записи фактов, отношений фактов и правил. Правило создается с помощью логических выражений. В VP дизъюнкция обозначается «;», конъюнкция «,», если «:-». Каждое правило и факт заканчивается точкой.
goal – раздел запросов, как и в правилах использует переменные, логические операции и имена фактов и правил.
Для более комфортного запуска программ на VP рекомендуется использовать утилиту среды визуальной разработки Test Goal (Ctrl+G), создав специальный TestGoal – проект. Выполните следующую последовательность операций:
  1. Создайте новый проект Project – New Project.
  2. В появившемся диалоговом окне Application Expert введите следующие данные
Рис. 1.1. Диалоговое окно Application Expert\General


Рис. 1.2. Диалоговое окно Application Expert\Target


  1. После нажатия кнопки Create следует установить требуемые опции компилятора для созданного TestGoal-проекта:
  • OptionsProjectCompiler Option.
  • Откройте вкладку Warnings. Установите переключатель Nondeterm, чтобы компилятор все определенные пользователем предикаты как недетерминированные.
  • Снимите флажки Non Quoted Symbols, Strong Type Conversion Check, Check Type of Predicates. Это будет подавлять некоторые возможные предупреждения компилятора, которые не важны для выполнения несложных программ.
Теперь все программы следует открывать в запущенном командой ProjectOpen project проекте командой FileNew.

Работа с фактами, правилами и переменными. Применение отсечения ненужных решений

Задача 1.
Пусть заданы факты о книгах, их авторах и количестве страниц. Необходимо составить правило о том, какой роман мож­но считать большим, и реализовать это.


domains
% Описание доменов пользователя
заглавие, автор = symbol
страниц = integer
predicates
% Описание предикатов пользователя
книга(заглавие, страниц)
написал(автор, заглавие)
большой_роман(заглавие)
clauses
% Факты
написал(горький, "МАТЬ").
написал(шолохов, "ТИХИЙ ДОН").
книга("ТИХИЙ ДОН",1250).
книга("МАТЬ", 310).


/* Правило, определяющее, какая книга считается большим романом */


большой_роман(Заглавие) :-
написал(_, Заглавие), %Автор в этом случае безразличен
книга(Заглавие, Страниц),
Страниц > 300.


Goal написал(Кто,Что).


На этот вопрос prolog выдает ответ:
Кто=горький Что="МАТЬ"
Кто=шолохов Что="ТИХИЙ ДОН"
2 Solutions


Или такой запрос:
Goal большой_роман(Заглавие).


В нашей базе данных хранятся два романа, которые можно счи­тать большими, поскольку их объем превышает 300 страниц. Поэтому ТП выдаст следующее решение:
Заглавие="МАТЬ"
Заглавие="ТИХИЙ ДОН"
2 Solutions


Примечание: Строка со знаком % или заключенная символами /* */ считается комментарием


Запуск цели осуществляется командой Ctrl+G или кнопкой G на панели инструментов.

Комментариев нет:

Отправить комментарий