Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по языку Пролог.doc
Скачиваний:
84
Добавлен:
28.06.2014
Размер:
507.39 Кб
Скачать

6. Трассировка и отладка пролог программ

В этой главе обсуждаются различные инструменты Турбо Пролога, предназначенные для отладки программ. Эти средства делятся на четыре основные категории: синтаксический контроль, средство трассировки, директивы компилятора и сообщения об ошибках во время исполнения.

Синтаксический контроль: синтаксический контроль Турбо Пролога

работает в совокупности со встроенным редактором. Когда вы пытаетесь компилировать программу, исходный код которой содержит синтакси­ческую ошибку, система выдаст сообщение об ошибке в окне редактора и расположит курсор на месте ошибки.

Трассировка: Турбо Пролог также поддерживает много различных средств трассировки, что позволяет:

  • выполнять вашу программу по шагам;

  • устанавливать точки трассировки для пошагового выполнения некоторых частей программы;

  • трассировать только те предикаты, которые вы указали;

  • выполнять трассировку в режиме оптимизации;

  • включать и выключать трассировку в диалоговом режиме;

  • направлять трассировку в диалоговом режиме для вывода на печать или в файл.

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

предупреждения, если ваша программа содержит неопределенные предложения;

список предикатов в вашей программе, а также их область действия, размер, типы аргументов и поток параметров, если они используются и являются определенными.

Ошибки времени выполнения: четвертым средством Турбо Пролога для нахождения ошибок в ваших кодах является сообщение об ошибках времени выполнения. После того как ваша программа успешно скомпи­лирована, ошибки могут возникнуть только при ее работе. Если это произойдет, то программа сообщит номер ошибки времени выполнения и место ее возникновения.

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

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

6.1. Синтаксическая проверка

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

При выводе сообщения о синтаксической ошибке в коде вашей прог­раммы Турбо Прологом наряду с номером ошибки выдается сообщение об ошибке (если присутствует файл PROLOG.ERR ). Если сообщение об ошиб­ке остается для вас неясным или хотите узнать больше о различных случаях, в которых возникает данная ошибка, нажмите клавишу F1. При этом вы получите дополнительную информацию по данной конкретной проблеме. Большинство сообщений об ошибках снабжены дополнительным справочным текстом, в котором объясняется, в каком случае может возникать подобная ошибка и каким образом можно ее устранить. Подробные описания сообщений об ошибках Турбо Пролога содержится в Приложении "Сообщения об ошибках" в "Справочном руководстве по Турбо Прологу"[ 4 ].

Когда вы отредактируете программу и захотите продолжить компи­ляцию, нажмите клавишу F10. При этом Турбо Пролог возобновит компи­ляцию программы. Если имеются другие ошибки, то он снова вернет управление редактору. В противном случае трансляция будет завершена и система спросит вас что делать дальше.

Пример. Загрузите следующую программу в редактор Турбо Пролога и откомпилируйте ее.

domains

list = integer*

predicates

make_list (integer, list, list) goal

make_list (1, [1,23, New_List). clauses

make_list (Head, List, [Head,List]).

Такие ошибки, как в этой программе, программистам очень трудно обнаружить. Их также трудно обнаружить при трассировке. Однако этот тип ошибок можно просто обнаружить с помощью средства проверки соот-ветствия типов.