logo search
TurboProlog / Документация / TOM_2

Разделы программы.

Программа на языке Турбо Пролог состоит из нескольких разделов. Каж-

дый раздел программы идентифицируется ключевым словом - как показано в

таблице 2.1:

Таблица 2.1: Содержание разделов программы

-----------------------------------------------------------------

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

-----------------------------------------------------------------

опции компилятора Опции компилятора, заданные в начале программы

constants Нуль или более констант

domains Нуль или более объявлений доменов

database Нуль или более предикатов базы данных

predicates Нуль или более объявлений предикатов

goal Нуль или одна цель

clauses Нуль или более предложений

-----------------------------------------------------------------

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

вы опускаете раздел goal, вы можете задать все цели во время выполнения

программы. С другой стороны, вся программа может состоять из единственно-

го раздела goal. Например,

goal

readint(X), Y=X+3, write("X+3=",Y).

Чтобы создать автономную программу, вы должны в ней указать цель.

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

рамм.

Обычно в программе необходимы по меньшей мере разделы predicates и

clauses. Для большинства программ раздел domains необходим для объявления

списков, сложных структур и ваших собственных имен для основных доменов.

При модульном программировании вы можете ставить domains, predicates

и database ключевое слово global, указывая, что последующие объявления

действительны в нескольких программных модулях. (Модульное программирова-

ние обсуждается на стр.69 оригинального Руководства).

Программа может содержать несколько разделов domains, predicates,

database или clauses при следующих ограничениях:

# Константы, домены и предикаты должны быть определены до

того, как вы их используете. Однако, внутри раздела domains

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

# Только одна цель должна встретиться во время компиляции.

Однако, цель может появиться где-либо после раздела

(разделов) predicates, объявляющего свою подцель.

# Все предложения, которые описывают один и тот же предикат,

должны идти одно за другим.

# Все глобальные объявления должны идти до локальных

объявлений.

# Разделы database могут иметь имена, но заданное имя может

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

умолчанию, есть dbasedom, то может быть только один

не имеющий имени раздел database.