Форма записи фактов в Прологе

Факт — это фраза без условий. Факт используется для того, чтобы показать простую взаимосвязь данных. Нижеследующий факт выражает мысль о том, что Мэри знает Боба:

знает (мэри, боб).

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

Количество аргументов

Предикат может обладать произвольным количеством аргументов. Нижеследующий факт показывает, что отель Милфорд Плаза находится на пересечении 8-й авеню и 43-й стрит:

% место авеню стрит

расположение (отель_милфорд_плаза, 8, 43).

Символ % означает, что часть строки, следующая за ним, является комментарием. (Сам символ % также входит в состав комментария.) Если у факта много аргументов, то в программу рекомендуется ввести комментарий, поясняющий этот факт.

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

% из в вид время

транспорт (втц, милфорд_плаза, такси, 1400).

База данных, состоящая из фактов

Простейшая Пролог-программа — это множество фактов, которое неформально называют базой данных. Пример базы данных, состоящей из фактов "знает":

знает (мэри, боб).

знает (сэм, боб).

знает (сэм, патриция).

Совокупность этих фактов, взятых вместе, определяет предикат "знает/2", где "знает" — имя предиката, а "2" — количество аргументов (arity) предиката.

Ввод программы

Пролог-программу, такую, скажем, как приведенная выше база данных "знает", можно ввести в ЭВМ одним из двух следующих способов:

  1. при помощи текстового редактора создается файл с программой, которая затем загружается интерпретатором Пролога;

  2. программа вводится непосредственно с терминала во время сеанса работы с интерпретатором Пролога. При работе с версиями Пролога, сходными с версией языка для ЭВМ DEC-10, непосредственный ввод программы будет происходить так:

|?— consult (user).

:

< введите текст программы >

:

< для возврата в командный режим введите признак конца файла >

|? -

Ввод команды consult (user), что в переводе на русский язык означает "просмотр (пользователь)", переключает интерпретатор в режим ввода программы*). Ввод признака конца файла возвращает интерпретатор обратно в командный режим, о чем свидетельствует появление сообщения-подсказки |? —.

  1. 3. Запросы к базе данных Составление запроса

После того как интерпретатор выполнит просмотр базы данных, можно написать запрос к ней. Простой запрос состоит из имени предиката, за которым располагается список аргументов. (Синонимом слова запрос является слово цель). Приглашение |?— означает, что интерпретатор готов к обработке запроса.

Если база данных "знает" просмотрена интерпретатором, то можно написать, к примеру, такой запрос к ней:

|?— знает (мэри, боб).

Это означает вопрос: "Знает ли Мэри Боба?". Интерпретатор найдет соответствующий факт в базе данных и. ответит:

да

Примечание: в книге принято, что ответы интерпретатора печатаются курсивом. Данный ответ можно трактовать так: "Да, Мэри знает Боба".

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие