Cтраница 2
Постарайтесь понять, как пролог-система, используя программу, приведенную на рис. 1.8, выводит ответы на указанные ниже вопросы. Попытайтесь нарисовать соответствующие диаграммы вывода по типу тех, что изображены на рис. 1.9 - 1.11. Будут ли встречаться возвраты при выводе ответов на какие-либо из этих вопросов. [16]
![]() |
Двухступенчатая функция. [17] |
В процессе достижения цели пролог-система осуществляет автоматический перебор вариантов, делая возврат при неуспехе какого-либо из них. Такой перебор - полезный программный механизм, поскольку он освобождает пользователя от необходимости программировать его самому. [18]
При загрузке программы в Пролог-систему утверждения с функтором - - преобразуются в утверждения стандартного Пролога. Пролога, заголовок которого соответствует левой части грамматического правила, а тело состоит из символов правой части, представляющих собой соединенные подцели. Правило Пролога снабжается двумя аргументами. Первый аргумент заголовка правила представляет анализируемую цепочку. Он передается в качестве первого аргумента первой подцели. В каждой подцели первый аргумент представляет цепочку, оставленную неразобранной предыдущими подцелями, а второй аргумент - остаток этой цепочки после ее разбора данным компонентом. Второй аргумент заголовка правила - это цепочка, которая остается после того, как будет согласована последняя подцель. [19]
Пользователь может легко задавать пролог-системе вопросы, касающиеся отношений, определенных в программе. [20]
Как эти термы интерпретируются пролог-системой. [21]
Процесс, в результате которого пролог-система устанавливает, удовлетворяет ли объект запросу, часто довольно сложен и включает в себя логический вывод, исследование различных вариантов и, возможно, возвраты. Все это делается автоматически самой пролог-системой и по большей части скрыто от пользователя. [22]
Процедурная семантика определяет, кок пролог-система отвечает на вопросы. Ответить на вопрос - это значит удовлетворить список целей. Этого можно добиться, приписав встречающимся переменным значения таким образом, чтобы цели логически следовали из программы. [23]
Данный пример показывает, как пролог-система может пытаться решить задачу таким способом, при котором решение никогда не будет достигнуто, хотя оно существует. Такая ситуация не является редкостью при программировании на Прологе. [24]
Механизм Пролога представляет собой некоторую Пролог-систему, способную выполнять цели языка Пролог. Хотя мы и не намерены при связывании изменять базовое поведение механизма Пролога ( поиск по стратегии сначала вглубь, унификация, бэктрекинг), однако в этом механизме могли быть расширены некоторые средства с целью их адаптации к среде конкретной системы баз данных. [25]
![]() |
Множество предопределенных операторов. [26] |
Для удобства некоторые операторы в пролог-системах определены заранее, чтобы ими можно было пользоваться сразу, без какого-либо определения их в программе. [27]
Данный пример демонстрирует простой способ ввести пролог-систему в бесконечный цикл. [28]
В большинстве реализаций Пролога программа создается вне Пролог-системы, при этом используется некоторый текстовый редактор как часть операционной системы компьютера. Затем дается команда на запуск Пролог-системы, вслед за которой ей дается команда на загрузку предварительно созданной программы. В различных системах детали этого процесса кое-чем различаются. Типичная последовательность действий описана в разд. [29]
Если на вопрос существует несколько ответов, пролог-система найдет столько из них, сколько пожелает пользователь. [30]