Переменные в Прологе инициализируются при сопоставлении с константами в фактах и правилах.
До инициализации переменная свободна, после присвоения ей значения она становится связанной. Переменная остается связанной только то время, которое необходимо для получения решения по запросу, затем Пролог освобождает ее и ищет другое решение. Переменные в Прологе предназначены для установления соответствия между термами предикатов, действующих в пределах одной фразы (предложения), а не местом памяти для хранения данных. Переменная начинается с прописной буквы или знаков подчеркивания. В Прологе программист свободен в выборе имен констант, переменных, функций и предикатов. Исключения составляют резервированные имена и числовые константы. Переменные от констант отличаются первой буквой имени: у констант она строчная, у переменных – заглавная буква или символ подчеркивания. Область действия имени представляет собой часть программы, где это имя имеет один и тот же смысл: · для переменной областью действия является предложение (факт, правило или цель), содержащее данную переменную; · для остальных имен (констант, функций или предикатов) – вся программа. Специальным знаком «_» обозначается анонимная переменная, которая используется тогда, когда конкретное значение переменной не существенно для данного предложения. Анонимные переменные не отличаются от обычных при поиске соответствий, но не принимают значений и не появляются в ответах. Различные вхождения знака подчеркивания означают различные анонимные переменные. Отношения между объектами в Прологе называются фактами. Факт соответствует фразе Хорна, состоящей из одного положительного литерала. Факт – это простейшая разновидность предложения Пролога. Любой факт имеет значение истинности «И» и определяет отношение между термами. Факт является простым предикатом, который записывается в виде функционального терма, состоящего из имени отношения и объектов, заключенных в круглые скобки, например: мать( мария, анна). отец( иван, анна). Точка, стоящая после предиката, указывает на то, что рассматриваемое выражение является фактом. Вторым типом предложений Пролога является вопрос или цель. Цель – это средство формулировки задачи, которую должна решать программа. Простой вопрос (цель) синтаксически является разновидностью факта, например: Цель: мать (мария, юлия). В данном случае программе задан вопрос, является ли мария матерью юлии. Если необходимо задать вопрос, кто является матерью юлии, то цель будет иметь следующий вид: Цель: мать( X, юлия). Сложные цели представляют собой конъюнкцию простых целей и имеют следующий вид: Цель: Q1, Q2,…,Qn, где запятая обозначает операцию конъюнкции, а Q1, Q2,…,Qn – подцели главной цели. Конъюнкция в Прологе истинна только при истинности всех компонент, однако, в отличие от логики, в Прологе учитывается порядок оценки истинности компонент (слева направо). Пример 1. Пусть задана семейная БД при помощи перечисления родительских отношений в виде списка фактов: мать( мария, анна). мать(мария, юлия). мать( анна, петр). отец( иван, анна). отец( иван, юлия). Тогда вопрос, является ли иван дедом петра, можно задать в виде следующей цели: Цель: отец( иван, X), мать(X, петр). На самом деле БД Пролога включает не только факты, но и правила. Для получения ответа БД просматривается по порядку, то есть в порядке следования фактов и правил в тексте программы. Цель достигнута, если в БД удалось найти факт или правило, который (которое) удовлетворяет предикату цели, то есть превращает его в истинное высказывание. В нашем примере первую подцель удовлетворяют факты отец( иван, анна). и отец( иван, юлия). Вторую подцель удовлетворяет факт мать( анна, петр). Следовательно, главная цель удовлетворена, переменная X связывается с константой анна. Третьим типом предложения является правило. Правило позволяет вывести один факт из других фактов. Иными словами, правило – это заключение, для которого известно, что оно истинно, если одно или несколько других найденных заключений или фактов являются истинными. Правила – это предложения вида H: - P1, P2,…, Pn. Символ «: -» читается как «если», предикат H называется заключением, а последовательность предикатов P1, P2,…, Pn называется посылками. Приведенное правило является аналогом хорновского дизъюнкта HЪШP1ЪШP2,…,ЪШPn. Заключение истинно, если истинны все посылки. В посылках переменные связаны квантором существования, а в заключении - квантором всеобщности. Пример 2. Добавим в БД примера 18 правила, задающие отношение «дед»: мать( мария, анна). мать(мария, юлия). мать( анна, петр). отец( иван, анна). отец( иван, юлия). дед (X, Y): - отец(X, Z), мать(Z, Y). дед (X, Y): - отец(X, Z), отец(Z, Y). Тогда вопрос, является ли иван дедом петра, можно задать в виде следующей цели: Цель: дед( иван, петр). Правила - самые общие предложения Пролога, факт является частным случаем правила без правой части, а цель – правило без левой части. Все предложения для одного предиката связаны между собой отношением «или». Очень часто правила в Прологе являются рекурсивными. Например, для нашей семейной БД предикат «предок» определяется рекурсивно: предок(x, y): - мать(x, y). предок(x, y): - отец(x, y). предок(x, y): - мать(x, z), предок(z, y). предок(x, y): - отец (x, z), предок(z, y). Рекурсивное определение предиката обязательно должно содержать не рекурсивную часть, иначе оно будет логически некорректным и программа зациклится. Чтобы избежать зацикливания, следует также позаботиться о порядке выполнения предложений, поэтому практически полезно, а порой и необходимо придерживаться принципа: «сначала не рекурсивные выражения». Программа на Прологе - это конечное множество предложений.
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Почему стероиды повышают давление?: Основных причин три... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (401)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |