Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пролог бомбы часть 1 (27-39).doc
Скачиваний:
2
Добавлен:
26.09.2019
Размер:
120.32 Кб
Скачать

27.Управление программой. Внутренние подпрограммы унификации Пролога.

Турбо-Пролог - это осуществленная компанией Borland International реализация языка программирования высокого уровня Пролог компиляторного типа.

Пакет компилятора Турбо-Пролог состоит из двух дистрибутивных дисков и Руководства пользователя, насчитывающего свыше 200 страниц. Один диск имеет имя PROGRAM DISK, другой - LIBRARY&SAMPLE PROGRAMS.

Турбо-Пролог (как и другие реализации Пролога) имеет внутренние подпрограммы для выполнения сопоставления и связанных с ним процессов. Эти неотъемлемые части языка называются внутренними подпрограммами унификации. Эти подпрограммы выполняют сопоставление целей и подцелей с фактами и головами правил для того, что чтобы доказать (или вычислить) эти цели или подцели.

Эти же подпрограммы также определяют сгенерированы ли новые подцели правой часть правила.

Для завершения сопоставления внутренние унификационные подпрограммы должны сопоставить следующий объект справа. Если константы несопоставимы, следовательно эта попытка неуспешна, тогда внутренние унификационные подпрограммы опять повторяют попытку для следующего предиката (до их совпадения).

Внутренние унификационные подпрограммы просматривают всю программу слева направо, пробуя сопоставить каждый факт или правило с целью. Только предикаты с соответствующими объектами проверяются на сопоставимость с целью.

Следует понять, что механизм внутренней унификации обработал сверху

до низу (или слева направо) все подходящие факты и правила. После того как сопоставимый предикат был найден, объекты этого предиката сопоставлялись слева направо пока это сопоставление не становилось либо успешным, либо неуспешным. Если сопоставление заканчивалось неуспешно, то проверялись следующие факты или правила до тех пор, пока либо одно из сопоставлений заканчивалось успешно, либо все релевантные факты и правила оказывались опробованными и неуспешными.

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

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

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

28.Структура программ на Прологе. Предикаты и утверждения.

Любая программа, написанная на Турбо-Прологе, состоит из пяти разделов: описания доменов, раздел базы данных, раздел описания предикатов, раздел описания цели и раздел описания утверждений.

Ключевые слова domains, database, predicates, goal и clauses отмечают начала соответствующих разделов.

Назначение этих разделов таково:

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

- раздел database содержит утверждения базы данных, которые являются предикатами динамической базы данных. Если программа такой базы данных не требует, то этот раздел может быть опущен. Возможности динамической базы данных описываются в

гл. 9 данной книги.

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

- в разделе goal на языке Турбо-Пролога формулируется назначение создаваемой программы. Составными частями при этом могут являться некие подцели, из которых формируется единая цель программы.

- в раздел clauses заносятся факты и правила, известные априорно. О содержимом этого раздела можно говорить как о данных, необходимых для работы программы.

Арность обозначает число объектов утверждения.

owns(person,book,book) предикат

owns(sam,"Hobbit","Lord of the Rings") утверждение

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