Основные разделы программы

Описание данных присутствует в двух основных разделах Пролог- программы, один из которых называется predicates (отношения), а другой — clauses (утверждения). В разделе predicates описываются предикаты, используемые в БД, с описанием их типа. Для определения основной цели программы служит ключевое слово goal. В раздел clauses заносятся факты и правила, известные априорно. О содержимом этого раздела можно говорить как о данных, необходимых для работы программы.

Пример.

predicates

cat (integer) food (symbol)

goal

some (goals).

clauses

cat (10) . food (whiskas).

Заполнение разделов программы

.

Такие разделы Пролог-программы, как trace, project (название проекта) и include (внешний исходный файл) заполняются по желанию.

Раздел domains, объявляющий новые типы области данных, может быть заполнен по желанию или необходимости.

Пример.

domains

man = symbol time = symbol

Раздел database объявляет предикаты, которые по желанию можно добавлять или удалять.

Пример.

database

work (man, time)

Раздел global predicates или predicates объявляет области определения каждого предиката или глобального предиката в обязательном порядке.

Пример.

predicates

know (man, man) work (man, time)

clauses /* текст программы */

work ("Петр", "днем"). work ("Иван", "днем").

know (А, В):- work (X, S) , work (Y, S) , X < > Y.

goal

know (А, В)./* цель может быть задана по желанию */

Предикаты в Пролог-программе могут быть системными и пользовательскими, т.е. созданными разработчиком программы.

Логические термы.

Совокупность синтаксических структур в Пролог-программе называется логическими термами. Термы могут иметь простую или сложную структуры.

Константы в Пролог-программе могут быть числом или атомом. Атом представляет собой последовательность строчных и прописных символов, цифр и специальных знаков, которая обязательно начинается со строчной буквы. Если атом в программе начинается с прописной буквы, то его заключают в апострофы (двойные кавычки).

Пример.

name (man, "Петр")

Основными называются термы, не содержащие переменных, т.е. факты. Термы, содержащие переменные, называются неосновными.

Сложный терм является в Пролог-программе или функтором, или оператором. Определение сложного терма в программе содержит имя, представляющее собой атом, и совокупность аргументов, которые в свою очередь также могут быть простыми и сложными термами.

Переменные в Пролог-программе

.

Переменные в Пролог-программе являются не местом в памяти, а реальным объектом. Место действия одной переменной — одна резольвента. При осуществлении механизма возврата значения всех переменных в резольвенте, через которые осуществляется возврат, очищаются.

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

Пример.

domains /* раздел данных */

тип фигуры = symbol выражение для площади = string

predicates

площадь (тип фигуры, выражение для площади) фигура (тип фигуры, выражение для площади)

goal

площадь (круг, Z).

clauses

площадь (X, Y):- фигура (X, Y), write ("Х=", X,

"Y=", Y).

фигура (квадрат, "сторона * сторона"). фигура (круг, "pi * радиус * радиус"). фигура (треугольник, "1/2 * основание * высота") . фигура ( _, "неизвестно").

Наличие символа «_» означает использование фиктивной переменной. В рассмотренном примере с ее помощью реализован квантор общности.

В разделе данных domains объявлены типы данных пользователя («тип фигуры» и «выражение для площади»), а также указано, что «тип фигуры» эквивалентен стандартному символьному типу (symbol), а тип «выражение для площади» — стандартному строковому типу (string).

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >