Информатика


Запись правил и процедур


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

родитель (х,у) ¬ мама (х,у);

родитель (х,у) ¬  папа (х,у);

бабушка (x,z) ¬  мама (х,у), родитель (y,z);

дедушка (x,z) ¬  папа (х,у), родитель (y,z);

Общая форма записи правил на Прологе:

правило:

<заголовок> ( <определение>;

Здесь <заголовок> отделяется от <определения> двумя знаками:

¬ «меньше» и «тире». В конце правила записывается «точка с запя­той».

Заголовки правил имеют следующую форму:

заголовок:



<имя>(<парам>[,<парам> ...])

Здесь <имя> - это любое слово или словосочетание. В роли параметров в заголовках правил могут указываться переменные или конкретные значения либо неопределенные значения с помощью знака подчеркивания [_].

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

определение:

<заголовок>[,<заголовок> ...]

Запросы и определения отделяются в описаниях правил запятыми и записываются по тем же правилам, что и заголовки.

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

Результатом выполнения любых процедур и правил в Прологе всегда являются логические значения - ДА либо НЕТ, соответству­ющее успеху или неуспеху их применения. В этом смысле приме­нение правил в Прологе совпадает с проверкой условий в логике. Соответственно форма записи обращений к правилам и процедурам в Прологе совпадает с формой записи предикатов в математической логике.


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

Пример такого обращения:

? родитель (х,вова)

х = зина

Полученный ответ имеет двойной результат: во-первых, подтверж­дение истинности наличия «родителей» у «вовы», а во-вторых, кон­кретизация переменной «х» в обращении к процедуре «родитель» с именем «вова», которая дает значение «х = зина».

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

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


Содержание раздела