У Клоксин - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ

Здесь есть возможность читать онлайн «У Клоксин - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Книга английских специалистов, содержащая описание основ логического программирования и особенностей языка Пролог – базового языка ЭВМ пятого поколения. Области применения этого языка связаны с разработкой экспертных систем, интеллектуальных баз данных, обработкой естественного языка, разработкой компиляторов ЭВМ. Книга полезна для первого ознакомления с языком Пролог.

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

И снова failзаставляет нас отвергнуть это решение и начать возвратный ход. Заметим, что это было совершенно новое обращение к fail(мы вошли в него заново «сверху»).

(2) REDO: отпрыск(авраам,исаак)

(2) FAIL: отпрыск(авраам,Ответ)

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

(5) CALL: отпрыск(авраам,Y)

Здесь произошло следующее: мы выбрали второе утверждение процедуры потомоки выполнили совершенно новое обращение к отпрыск,соответствующее первой подцели (рис. 8.4). Стрелка теперь снова движется вниз. Продолжаем:

Рис 84 5 EXIT отпрыскавраамизмаил 6 CALL потомокизмаилОтвет Это - фото 30

Рис. 8.4.

(5) EXIT: отпрыск(авраам,измаил)

(6) CALL: потомок(измаил,Ответ)

Это дает решение, с которым мы теперь уже рекурсивно вызываем потомок.Следует новое обращение к потомок.

(7) CALL: отпрыск(измаил,Ответ)

(7) FAIL :отпрыск(измаил,Ответ)

(8) CALL :отпрыск(измаил, Y2)

(8) FAIL :отпрыск(измаил,Y2)

(6) FAIL :потомок(измаил,Ответ)

У Измаила нет детей (в данном примере) поэтому в обоих утверждениях процедуры потомокподцель отпрыскзавершается неудачей, что приводит к неудаче всей цели потомок.

(5) REDO: отпрыск(авраам,измаил)

Мы возвращаемся назад для выбора новой альтернативы.

(5) EXIT: отпрыск(авраам.исаак)

(9) CALL: потомок(исаак,Ответ)

(10) CALL: отпрыск(исаак,Ответ)

(10) EXIT: отпрыск(исаак,исав)

Запускаем новое обращение к потомоки попытка согласовать подцель отпрыскзавершается удачно (рис. 8.5). Продолжаем:

9 EXIT потомокисаакисав 1 EXIT потомокавраамисав 11 CALL fail - фото 31

(9) EXIT: потомок(исаак,исав)

(1) EXIT: потомок(авраам,исав)

(11) CALL: fail

(11) FAIL: fail

(1) REDO: потомок(исаак,исав)

(9) REDO: потомок(исаак,исав)

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

(10) REDO: отпрыск(исаак,исав)

(10) EXIT: отпрыск(исаак,иаков)

(9) EXIT: потомок(исаак,иаков)

(1) EXIT: потомок(авраам,иаков)

Для подцели отпрыскнайдено другое сопоставление, которое порождает другой результат для исходной цели потомок.Уже сейчас можно заметить, что это последний потомок Авраама, однако еще остается выполнить определенный объем работы. Проследим далее за последовательностью событий по мере того, как механизм возврата заставляет нас отступать к началу.

(12) CALL: fail

(12) FAIL: fail

(1) REDO: потомок(авраам,иаков)

(9) REDO: потомок(исаак,иаков)

(10) REDO: отпрыск(исаак,иаков)

(10) FAIL: отпрыск(исаак,Ответ)

(13) CALL: отпрыск(исаак,YЗ)

Теперь мы пытаемся применить второе утверждение процедуры потомок.

(13) EXIT: отпрыск(исаак,исав)

(14) CALL; потомок(исав, Ответ)

Еще одна рекурсия

(15) CALL: отпрыск(исав,Ответ)

(15) FAIL: отпрыск(исав,Ответ)

(16) CALL: отпрыск(исав,Y4)

(16) FAIL: отпрыск(исав,Y4)

(14) FAIL: потомок(исав,Ответ)

(13) REDO: отпрыск(исаак,исав)

(13) EXIT: отпрыск(исаак,иаков)

(17) CALL: потомок(иаков,Ответ)

Пытаемся использовать Иакова.

(18) CALL: отпрыск (иаков,Ответ)

(18) FAIL: отпрыск (иаков, Ответ)

(19) CALL: отпрыск(иаков,Y5)

(19) FAIL: отпрыск (иаков, Y5)

(17) FAIL: потомок(иаков,Ответ)

(13) REDO: отпрыск(исаак,иаков)

(13) FAIL: отпрыск(исаак,YЗ)

(9) FAIL: потомок(исаак,Ответ)

(1) FAIL: потомок(авраам,Ответ) нет

Наконец мы закончили. Надеемся, что этот утомительный пример дал вам возможность понять последовательность событий, происходящих при выполнении Пролог-программы. Вы, вероятно, уже заметили, что для любой цели всегда бывает только один ВЫЗОВ (событие CALL) и одна НЕУДАЧА (событие FAIL), хотя может быть сколько угодно ПЕРЕДЕЛОК (событие REDO) и соответствующих ВЫХОДов (событие EXIT). В следующем разделе мы рассмотрим процесс трассировки для более сложного примера – предиката присоединить.

Упражнение 8.1.В приведенной выше модели ничего не говорится о том, как обрабатывается цель – отсечение '!'. Расширьте эту модель, включив туда учет действия отсечения.

8.4. Трассировка и контрольные точки

Обнаружив, что программа не работает (порождает сообщения об ошибках, просто отвечает 'нет'или выдает неверный ответ) вы, наверное, захотите побыстрее найти ошибки с тем, чтобы исправить их. В этом разделе описывается набор встроенных предикатов, позволяющих «проследить» за выполнением программы. С их помощью вы можете вновь запустить программу на той же задаче и проследить за ее выполнением, чтобы найти место, с которого она начинает работать неверно. При этом вы увидите, когда происходят разные события трассировочной модели, подобно тому, как это было в предыдущем разделе, где мы наблюдали за процедурой потомок. Точный набор возможностей, предоставляемых предикатами отладки, зависит от конкретной реализации Пролога, однако то, что мы собираемся сообщить вам, даст представление об имеющихся средствах, так что вы сможете разобраться в том, что предлагает вам ваша система. В любом случае мы настоятельно советуем ознакомиться с документацией по вашей Пролог-системе, прежде чем начать использование средств отладки.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ»

Представляем Вашему вниманию похожие книги на «ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


libcat.ru: книга без обложки
Алексей Корепанов
Отзывы о книге «ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ»

Обсуждение, отзывы о книге «ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x