информационно-новостной портал
Главная / Статьи / Информатика / Программирование /

Отладка программ (ошибки, модель отладки).

После написания программы рекомендуется:  1.проверить, что в конце каждого предложения стоит точка;  2.проверить имена и кол-во  арг-ов у каждого предиката, включая встроенные, так как неверное имя или пропущенный аргумент дает заведомо неуспешную цель;  3.проверить введенные операторы, их приоритет и ассоциативность, используя display, в сложных случаях поставить скобки.

  Наиболее типичным ошибки:  

1.после создания или изменения программы не выполняется ее преобразование во внутреннее представление с помощью reconsult.    2.рассмотрены не все случаи для завершения рекурсии или указаны неправильные условия.   

3.программа содержит циклические рекурсии. 

4.указано неверное кол-во аргументов у функтора, что приведет к неудаче при поиске правила для обработки структуры.

  Рез-ом применения программ, содержащих ошибки, обычно является зацикливание или переполнение стека, отрицательные ответы или конкре-тизация переменных не теми ответами, которые ожидались.

  Для отладки программ применяется трассировка. В процессе выпол-я программ на языке Пролог могут происходить следующие 4 события: call,exit,fail,redo.  

Событие call фиксирует начало попытки Пролога согласовать цель с БД. Печатается ель.  Событие exit фиксирует момент, когда некоторая цель только что согласована с БД. Печатается согласованная цепь.   Событие redo фиксирует момент, когда система возвращается к цепи, пытаясь пов-торно согласовать ее с БД. Печатается согласованная цепь.  Событие fail фиксирует момент, когда попытка согласовать цель с БД заканчивается неудачно. Печатается цель.

  Режим трассировки включается с помощью предиката trace, а выключ-ся notrace. При наступлении события Пролог печатает цель и ожидает ввода команды. Можно ввести одну из следующих команд: h[elp]-помощь; пробел – переключить окна; c[reep] или Enter – идти к следующему событию; s[kip]

или Esc – не останавливаться до наступления события exit или fail для текущей цели (рекомендуется использовать для уже отлаженных предика-тов); a[bort] – завершить выполнения программы.    В Прологе существует также другие команды и дополнительные предикаты для отладки по контрольным точкам.
Просмотров: 869 | Дата добавления: 08.02.2016