Основы современных компьютерных технологий


Основы программирования - часть 3


Ссылки на доменную структуру осуществляются по имени функтора.

В одном объявлении можно описать несколько альтернативных вариантов структуры, разделяя варианты точкой с запятой или служебным словом or.

310

Примеры объявления структур:

domains


d1,d2,d3=symbol

fr=fruits(d1,d2,d3); pot(d1)

Раздел описания предикатов predicates содержит перечень предикатов пользователя, используемых в программе. Описание предиката содержит имя предиката и список доменов его аргументов:

(,...)

Здесь ,...- имена стандартных доменов или имена доменов, объявленных в разделе domains.

Один и тот же предикат может иметь различное число аргументов, такие предикаты объявляются для каждого варианта отдельно. В программе допускается использовать не более 300 предикатов, число аргументов у предиката не должно превышать 50.

Примеры объявления предикатов:

predicates


add(integer,integer,integer)

Ik(fr)

Ik(d1,d2)

В разделе database описываются предикаты динамической базы данных. Перечисленные здесь предикаты после подстановки в них вместо переменных констант (т.е. превращения их в факты) могут быть помещены и, если потребуется, удалены во время выполнения программы в динамическую базу данных. Делается это с помощью стандартных (встроенных в систему) предикатов: assert, asserta, assertz, consult, retract, retractall. В программе можно использовать несколько разделов database, при этом каждому из них можно назначить уникальное имя. Если имя разделу database не назначено, компилятор по умолчанию назначает имя dbasedom.

Раздел database имеет следующий формат:

database [-]

dbpred1(...)

dbpred2(...)

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

Факт состоит из имени предиката и заключенного в скобки списка аргументов - констант.

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


Начало  Назад  Вперед