Программа на языке Пролог состоит из множества фраз и ее можно рассматривать как сеть отношений, существующих между термами. Терм обозначает некоторую сущность, принадлежащую миру. Фраза – это либо факт, либо правило. Факт – это утверждение о том, что соблюдается некоторое конкретное отношение.
Пример 1: знает (оля, витя).
Данный факт состоит из имени предиката знает и списка термов, заключенного в скобки.
Одним из видов термов являются атомы. Атом – это константа, которая обычно записывается в виде некоторого слова, начинающегося с маленькой буквы. Термы “оля” и “витя” являются атомами.
Предикат может обладать произвольным количеством аргументов.
Пример 2.
Нижеследующий факт показывает, что БГТУ расположен по адресу ул. Костюкова 48.
расположение(бгту, костюкова, 48).
Простейшая Пролог-программа − это множество фактов, которое неформально называют базой данных.
Пример 3.
Данная база данных состоит из фактов “знает”:
знает(оля, витя).
знает(коля, света).
|
|
знает(коля, витя).
Ввод программы
Пролог-программу можно ввести в компьютер одним из двух способов: 1) при помощи текстового редактора создается файл с программой, которая затем загружается интерпретатором Пролога; 2) программа вводится во время сеанса работы с интерпретатором Пролога.
Непосредственный ввод программы будет происходить так:
Пример 4.
?- consult(user).
знает(оля, витя).
знает(коля, света).
знает(коля, витя).
quit.
?-
Ввод команды consult (user), что в переводе на русский язык означает “ просмотр (пользователь) ”, переключает интерпретатор в режим ввода программы. Ввод команды quit возвращает интерпретатор обратно в командный режим, о чем свидетельствует появление сообщения подсказки “?− “.
Запросы к базе данных
Простой запрос состоит из имени предиката, за которым располагается список аргументов. (Синонимом слова запрос является слово цель.)
Если база данных “ знает ” просмотрена интерпретатором, то можно написать, например, такой запрос к ней:
? − знает (оля, витя).
Это означает вопрос: “ Знает ли Оля Витю? ”. Интерпретатор найдет соответствующий факт в базе данных и ответит:
yes.