2. Выработать навыки работы с интерактивной системой Visual Prolog.
3. Научиться оформлять отношения между данными на языке Пролог на примере родственных отношений между членами семьи.
Создание простейших программ
Prolog является языком, основанным на программировании логики (PROgramming in LOGic). Вместо детальных инструкций, предписывающих как решать ту или иную задачу, программист на языке Prolog уделяет основное внимание описанию задачи.
В среде Visual Prolog используется подход, получивший название «визуальное программирование», при котором внешний вид и поведение программ определяются с помощью специальных графических средств проектирования без традиционного программирования на алгоритмическом языке.
Visual Prolog автоматизирует построение сложных процедур и освобождает программиста от выполнения тривиальных операций. С помощью Visual Prolog проектирование пользовательского интерфейса и связанных- с ним окон, диалогов, меню, линии уведомлений о состояниях и т.д. производится в графической среде. С созданными объектами сразу же могут работать различные Кодовые Эксперты (Code Experts), которые используются для генерации базового и расширенного кодов на языке Prolog, необходимых для обеспечения их функционирования.
Visual Prolog 7 4 Hello World
В Visual Prolog входят интерактивная среда визуальной разработки (VDE — Visual Develop Environment), которая включает текстовый и различные графические редакторы, инструментальные средства генерации кода, конструирующие управляющую логику (Experts), а также являющийся расширением языка интерфейс визуального программирования (VPI — Visual Programming Interface), Пролог-компилятор, набор различных подключаемых файлов и библиотек, редактор связей, файлы, содержащие примеры и помощь.
Visual Prolog поддерживается различными ОС, в том числе MS-DOS PharLap-Extended DOS, всеми версиями Windows, 16- и 32-битовыми целевыми платформами OS/2, а также некоторыми другими системами, требующими графического пользовательского интерфейса.
В зависимости от выбранного интерфейса разработчику обеспечивается доступ к множеству генераторов кода (Code Expert), всевозможным ресурсным редакторам и особым дополнительным VPI-предикатам, определениям и библиотекам. Ресурсные редакторы применяются для создания, компоновки и редактирования окон, диалогов, меню, панелей инструментов, строк помощи, строковых таблиц, ярлыков, курсоров, битовых карт и оперативной помощи. Генераторы кода на основе подобных структур создают необходимый первичный Prolog-код. В результате появляется первичный код («скелет»), готовый для компиляции, редактирования связей и выполнения.
Интерфейс Visual Prolog включает: главное меню, панель инструментов, окно проекта. Если во время последнего использования системы Visual Prolog там был открытый проект, то система автоматически вновь откроет этот проект.
На рис.1 изображен внешний вид среды Visual Prolog после запуска. В окне проекта отображаются модули открытого проекта route.prj: karta.pro, route.pro, VPITools.pro.
How to install Visual Prolog and use PIE
рис.1. Среда разработки Visual Prolog 6.1
Левая панель кнопок в окне проекта позволяет выбирать нужный компонент проекта: модуль, окно, меню и т.д. С помощью кнопок правой панели выбранный компонент можно редактировать(кнопка Edit), удалять(кнопка Delete), а также добавлять новый(кнопка New).
Пункт меню File содержит команды для работы с файлами. Чтобы создавать новое окно редактирования, можно использовать команду File — New. Эта команда создаст новое окно редактора с заголовком «NONAME».
В меню Edit представлены команды, позволяющие редактировать текст программы. Встроенный редактор системы по интерфейсу похож на обычный текстовый редактор. Можно производить вырезку, копирование и вставку текста, операции Отмена/Восстановление, которые можно активизировать из меню Edit. Также меню Edit показывает «горячие клавиши», связанные для этих действий.
Пункт меню Project содержит команды для работы с проектом: создать новый, открыть, запустить и т.д. Запуск проекта на исполнение выполняется нажатием кнопки на панели инструментов (или F9, или с помощью команд меню Project — Run).
Команды меню Options позволяют выполнять настройку проекта, устанавливать необходимые параметры.
Программа на ПРОЛОГе состоит из предложений, которые могут быть фактами, правилами или запросами. Как правило, программа состоит из четырех разделов.
DOMAINS – секция описания доменов(типов). Секция применяется, если в программе используются нестандартные домены.
PREDICATES – секция описания предикатов. Секция применяется, если в программе используются нестандартные предикаты.
CLAUSES – секция предложений. Именно в этой секции записываются предложения: факты и правила вывода.
GOAL – секция цели. В этой секции записывается запрос.
Среда Visual Prolog позволяет протестировать программу без создания проекта. Для этого используется утилита Test Goal. Достаточно создать новый файл, набрать текст программы и активизировать Test Goal нажатием кнопки на панели инструментов. Автономно исполняемый файл при этом не создается.
Утилита Test Goal компилирует только тот код, который определен в активном окне редактора (код в других открытых окнах или модулях проектов, если они есть, игнорируются). Test Goal находит все возможные решения задачи и автоматически выводит значения всех переменных.
Пример 1.
Имеется база данных, содержащая следующие факты:
1) верно ли, что Марина является родителем Саши;
Источник: megalektsii.ru
Создание нового проекта в Visual Prolog
Для Visual Prolog 5.2 создавать проект необязательно.
Для Visual Prolog 7.3 создавать проект обязательно, причём в этом случае придётся переделать программу на Visual Prolog 5.2 под синтаксис Visual Prolog 7.3.
Создание консольного проекта
Запустите среду программирования Visual Prolog.
Создайте консольное приложение: Project → New → Console application (radio button).
Введите имя проекта на английском языке (в национальных алфавитах изредка бывают проблемы). Это же будет имя созданной EXE-программы.
Нажмите кнопку Ok. Будет создан консольный проект.
Запустите проект на выполнение кнопкой «Е» на панели инструментов (меню Buid → Execute).
Начнётся компиляции проекта. Первая компиляция будет идти долго, но следующие компиляции пройдут быстрее, так как будет перекомпилироваться только тот файл, в котором сделаны изменения.
После компиляции проект будет запущен выполнение. Если это был просто «пустой» проект, то на экране быстро появится и закроется окно консоли, так как в коде нет никаких действий, кроме инициализации консоли.
Откройте исходный код проекта main.pro. Определён один предикат run, который инициализирует консоль:
implement main open core constants className = «main». classVersion = «». clauses classInfo(className, classVersion). clauses run():- console::init(), /* инициализация консоли */ succeed(). % place your own code here end implement main goal mainExe::run(main::run).
Для задержки закрытия окна можно вывести на экране строку («Hello World») и далее вставим предикат ввода строки (он будет ждать нажатия Enter).
run():- console::init(), % инициализация консоли console::write(«Hello World!»),% вывод строки _ = console::readLine(). % пауза, ожидания ввода строки с Enter
Чтобы консольное окно не закрывалось, можно запустить проект из меню: Build → Run in Window (Alt-F5). В этом случае Visual Prolog создаёт BAT-файл (Capdos.bat) типа:
«C:Visual Prolog 6helloExehello.exe» pause
Недостаток этого способа — надо всегда запускать BAT-файл, а не EXE-файл.
В папке EXE находятся готовые файлы проекта:
Источник: verim.org
Определение отношений в программе
Приложение Prolog Inference Engine (PIE) входит в собрание примеров Visual Prolog Examples, которые поставляются вместе с системой Visual Prolog ( ). Оно представляет собой интерпретатор реализации языка Пролог, синтаксис которой близок к реализации Эдинбургского Пролога. Для запуска приложения необходимо открыть проект в среде разработки Visual Prolog.
Для этого нужно запустить файл vip.exe, выбрать команду меню Project > Open, нажать кнопку Browse… окна Visual Prolog Environment (рис. 1.1) и открыть файл Visual rolog Examplespiepie.vipprj. После этого следует выбрать команду меню Build > Execute (см. замечание в конце главы). В дальнейшем можно сразу запускать Exe-файл приложения PIE.
увеличить изображение
Рис. 1.1. Среда разработки Visual Prolog. Окно Visual Prolog Environment
Информация об открываемых (и вновь созданных) проектах отображается в окне Visual Prolog Environment. Открывать проекты повторно можно прямо из списка проектов.
В следующей программе определяются предикаты летает/1 , животное/1 и птица/1 .
летает(«синица»). % факты летает(«лебедь»). летает(«аэроплан»). животное(«лебедь»). животное(«синица»). животное(«тигр»). птица(«пингвин»). птица(«страус»). птица(X):- животное(X), летает(X). % правило ?- птица(A). % запрос
Пример 1.1. «Птицы»
Упражнение 1.
- Какие элементы принадлежат отношению «птица», определенному в программе «Птицы» (см. листинг 1.1)?
- Запустите приложение PIE, поместите в него программу «Птицы» и найдите ответ на запрос к программе. Для этого откройте новый файл, поместите в него текст программы (факты и правила), сделайте активным окно с программой и выберите команду меню Engine > Reconsult. В окне Dialog введите запрос птица(A) .
Поставьте курсор после знака точки и нажмите клавишу Enter (рис. 1.2). Ответ на запрос появится в этом же окне.
Рис. 1.2. Приложение PIE
Для имен переменных в PIE следует использовать буквы латинского алфавита, для предикатов и констант можно использовать кириллицу. На языке Visual Prolog можно использовать кириллицу и для имен переменных.
В следующей программе в виде фактов определяются отношения «родитель», «супруг», «мужчина» и «женщина». С их помощью в виде правил определяются отношения «отец» и «мать».
родитель(«Иван», «Мария»). родитель(«Анна», «Мария»). родитель(«Мария», «Павел»). родитель(«Мария», «Петр»). супруг(«Иван», «Анна»). супруг(«Павел», «Юлия»). мужчина(«Иван»). мужчина(«Павел»). мужчина(«Петр»). женщина(«Мария»). женщина(«Анна»). женщина(«Юлия»). отец(F, C):- родитель(F, C), мужчина(F). мать(M, C):- родитель(M, C), женщина(M).
Пример 1.2. «Родственные отношения»
Упражнение 2.
Запустите в PIE программу «Родственные отношения» (см. листинг 1.2). Задайте следующие вопросы программе:
- Частный простой запрос (является ли Иван родителем Петра?):
Источник: intuit.ru