ЛАБОРАТОРНАЯ РАБОТА №2
Тема: Приемы работы с отладчиком AMZI Prolog
Цель работы: Освоить основные приемы управления отладчиком Amzi! Prolog.
Логические ошибки при выполнении программ могут быть неочевидными. Основным средством их отыскания является пошаговое прощупывание выполнения программы. Для этого инструментальные системы включают в себя средства отладки программ.
Пакет Amzi! Prolog включает отладчик, который позволяет проводить пошаговое выполнение всей или части программы (трассировку), причем программист может управлять уровнем контроля промежуточных действий.
Включение и выключение режима отладки выполняется с помощью команд меню Listener.
а) Переход в режим отладки
Отладчик вызывается и используется в режиме интерпретации. Чтобы перевести интерпретатор в отладочный режим, можно использовать любой из трех способов:
(1) выбрать пункт меню Listener|Debug on,
(2) использовать комбинацию клавиш Ctrl+D.,
(3) выполнить запрос ?-debug.
При этом откроется дополнительное окно для вывода отладочной информации, а приглашение в окне интерпретатора примет вид ??–.
б) Выход из режима интерпретации
Вернуться в режим обычной интерпретации можно
(1) либо нажав кнопку Stop в окне отладчика,
(2) либо выключить режим отладки с помощью пункта меню Listener|Debug off,
(3) либо выполнить запрос ??-nodebug.
Замечание.
Последовательное переключение между окнами редактора текстов, интерпретатора и отладчика удобно выполнять с помощью комбинации клавиш Ctrl+F6. Однако этот способ не работает, когда процесс процесса отладки начат, но еще не завершен.
ЗАДАНИЕ 1(переход в отладочный режим)
1. Запустите интерпретатор и попробуйте разные способы перехода в режим отладки и выхода из него. При включенном режиме отладки выполнить переключение между окнами интерпретатора и отладчика.
2. Ознакомится со структурой окна отладчика (назначение отдельных управляющих элементов этого окна будет рассмотрено далее).
Модель черного ящика и порты входа и выхода
Выполнение программ на Прологе существенно отличается от традиционных представлений, связанных с выполнением алгоритма. В Прологе вычисления основываются на согласовании некоторой цели (факта, истинность которого нужно доказать). Эти вычисления реализуются как поиск, а поиск не всегда идет в удачном направлении. Если он зашел в тупик, то происходит отказ от одного или нескольких последних выполненных действий, чтобы выйти из этого тупика. Т.е. из текущего состояния программа возвращается в одно из предыдущих состояний. Поэтому при трассировке программы необходимо знать не только согласуемую в данный момент цель, но и направление вычислительного процесса (вперед или назад).
Для наглядного представления процесса выполнения Пролог-программы используется модель черного ящика. Каждый рассматриваемый ящик соответствует определенной цели и имеет входы и выходы для потока вычислений, которые называются портами.
Каждый ящик имеет четыре порта, из которых два являются входными (call и redo), а два — выходными (exit и fail).
Порты имеют следующее назначение.
§ Порт вызова call — используется для входа в ящик, когда Прологом делается первая попытка доказать данную цель (трассировка в прямом направлении).
§ Порт выхода exit —используется для выхода из ящика, когда цель успешно согласована (доказана) (трассировка в прямом направлении);
§ Порт неудачи fail — используется для выхода из ящика, когда цель согласовать (доказать) не удалось (трассировка в обратном направлении).
§ Порт повторного входа redo — используется для входа в ящик, когда Пролог уже однажды согласовал цель, однако из-за неудачи при дальнейших вычислениях потребовалось вернуться к данной цели и поискать для нее другое доказательство.
Схема связи портов последовательно доказываемых целей выглядит примерно так:
![]() |