Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IIS / Печень О.А / Тема 2 / ЛР 2 4 - Prolog задание 3.doc
Скачиваний:
24
Добавлен:
31.03.2015
Размер:
86.02 Кб
Скачать
  1. Использование отката после неудачи при использовании внутренней цели для организации простейшего интерфейса вывода

Если простейший интерфейс вывода будет реализован как Внутренняя цель программы, то внутренние унификационные процессы Турбо-Пролога закончат поиск решения сразу после первого успешного вычисления цели. Для поиска всех значений Пролог-программа должна заставить повторно работать внутренние унификационные средства Турбо-Пролога.

Одним из способов реализации данной задачи является использование метода отката после неудачи (ОПН), использующий предикат fail. Пример использования этого предиката демонстрирует программа 8.

/* программа 8 */

Include "lab3.Рго"

predicates

query do_answer(namc) goal query.

clauses query :-

makewindow(2,7,15," Запрос коллеги :", 18,0,6,50), cursor 1,10), write("Введи фамилию -> "), readln(Who), makcwindow( 1,7,15," Коллеги :", 1,50,22,29), do_answer(Who). do_answer(X) :- colleague(X.Y), write(" ",X," -&rt; ",Y),nl,fail.

Два предиката этой программы позволяют формировать запрос и получать на него ответ. Текстовая подстановка файла программы б из лабораторной работы 3 обеспечивает доступ ко всем се предикатам и базам данных.

Таким образом, эта программа являет собой пример интерфейса для ввода и вывода данных программы 6.

Программа содержит внутреннюю цель в виде предиката query, который создает па экране окно ввода данных, выдает подсказку, обеспечивает ввод и означивание переменной Who. а также формирует окно вывода данных.

Предикат do_answer(...) обеспечивает запрос на поиск сослуживцев введенного служащего. Действия, выполняемые системой по данному запросу, аналогичны первым 11 шагам, согласно ранее приведенному алгоритму. Однако на 11 шаге система не будет осуществлять принудительный возврат, и решение задачи остановится.

Чтобы этого не случилось, в программу введен предикат fail, который всегда вызывает состояние неудачи, что заставляет систему выполнять, откат после неудачи к предыдущей подцели.

  1. Порядок выполнения лабораторной работы

Целью лабораторной работы является:

  1. Познакомиться с процессами унификации и поиска с возвратом.

  2. Изучить правила унификации термов.

  3. Изучить работу системы Турбо-Пролог при выполнении запроса.

  4. Ознакомиться с методом отката после неудачи.

Содержание лабораторной работы:

  1. Изучение предоставленного теоретического минимума.

  2. Выполнение в среде Turbo-Prolog заданий в соответствии с указаниями в лабораторной работе.

  3. Демонстрация работы примеров в среде Turbo-Prolog преподавателю и защита выполненной работы

Защита лабораторной работы

Для защиты лабораторной работы необходимо:

  1. Предоставить работающие в среде Turbo-Prolog примеры и тексты программ, результаты выполнения заданий 1, 2, 3.

  2. Результаты исследования программы 8 при наличии и отсутствии предиката fail в программе.

  3. Модифицированный вариант программы 8 для случая, когда окно вывода занимает целый экран, а окно ввода присутствует на экране только на момент ввода.

  4. Ответить на вопросы преподавателя в рамках предоставленного в лабораторной работе теоретического минимума.