- •Лабораторная работа № 4 Программирование интеллектуальных систем на языке Пролог Работа с простейшими программами в системе Турбо-Пролог
- •Введение
- •Include "dos_file_name"
- •Загрузка системы Турбо-Пролог, ввод и запуск программ
- •Работа с Пролог-программами в режиме диалога
- •Трассировка программ в среде системы Турбо-Пролога
- •Работа с программами, содержащими внутреннюю цель
- •Простейшая программа ввода-вывода данных
- •Построение простейшего интерфейса для вывода результатов запросов
- •Include "lab1_2.Pro"
- •Порядок выполнения лабораторной работы
Загрузка системы Турбо-Пролог, ввод и запуск программ
Войдите в свой рабочий каталог и, находясь в нем, загрузите систему программирования Турбо-Пролог. Далее, пользуясь сведениями, полученными ранее:
1. ознакомьтесь с опциями главного меню и изучите их назначение;
2. установите режим компиляции в память компьютера;
3. сконфигурируйте, если необходимо, размеры и цветовые палитры всех окон;
4. определите пути доступа к файлам, установив нужные для вас каталоги;
5. выполненные установки запишите в файл конфигурации.
Войдите в режим редактирования системы Турбо-Пролог, воспользовавшись командой "Ред" главного меню, и введите программу 1 из раздела 3 вводной части. Закончив ввод, выйдите из редактора в главное меню системы, нажав клавишу "Esc".
Запустите программу на выполнение, выбрав команду "Вып" главного меню. В данной программе нет секции goal, т.е. в программе отсутствует внутренняя цель, определяющая решение конкретной задачи. Такие программы могут использоваться только в среде системы Турбо-Пролога. Поэтому, после ее запуска на выполнение системой активизируется окно "Диалог" и появляется приглашение на ввод внешней цели (GOAL:)
Работа с Пролог-программами в режиме диалога
Внешние цели - это запросы к программе, формируемые пользователем в окне "Диалог". Введите запрос
GOAL: likes(Who,"пиво").
Объясните: что обозначает данный запрос, к каким элементам языка Турбо-Пролога следует отнести такие объекты запроса, как "пиво". Who и likes.
Активизируйте введенный Вами запрос. Для этого надо после окончания его набора нажать клавишу "Enter". До нажатия "Enter" запрос можно редактировать. В ответ на Ваш запрос в окне "Диалог" должны появиться сообщения.
Who=Петр Who=Иван 2 GOAL:
Объясните полученный результат и смысловое назначение выводимых в окне "Диалог" сообщений.
Система запоминает последний из введенных запросов. Для того, чтобы вызвать повторно предыдущий запрос, следует нажать функциональную клавишу F8. Вызовите повторно предыдущую цель и отредактируйте ее так, чтобы она имела вид
GOAL: likes(Who,"пиво","Марья").
Запустите ее на выполнение и объясните полученный результат.
Аналогичные действия проделайте по вводу и запуску запроса вида:
GOAL: likes(Иван, Х)
Объясните полученный результат, внесите изменения в запрос, чтобы он удовлетворял синтаксису языка Турбо-Пролог и повторно запустите запрос на выполнение.
Измените описание предиката так, чтобы было ясно, между какими объектами реального мира отношение likes устанавливается. В частности, для рассматриваемого примера, отношение likes определяется между некоторым лицом (person) и некоторым другим лицом или вещью (thing). Для учета введенного дополнения, измените в секции predicates описание предиката на новое
likes(person,thing)
и запустите программу на выполнение.
При этом система выдаст сообщение об ошибке и в окне редактирования курсором будет отмечено то место, где транслятор обнаружил ошибку. Текст сообщения об ошибке "Необъявленный домен или ошибка в написании" дает подсказку о том, что перейдя к использованию нестандартных (т.е. определенных пользователем) доменов мы забыли объявить их типы.
Так как областью изменения обоих, вновь определяемых, доменов являются символьные данные (точнее данные типа строки символов), то в программу должна быть добавлена секция domains, где должны быть объявлены нестандартные домены и их типы. Для данной программы она может иметь один из двух возможных видов:
domains
person = string thing = string
или
domains
person,thing = string
Введите эти добавления в программу, запустите ее на выполнение и задайте любой, из ранее вводимых запросов. Результат должен соответствовать предыдущему.