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

Раздел констант.

Вы можете определять и использовать константы в вашей Турбо Про-

лог-программе. Объявление раздела констант обозначается ключевым словом

constants, за которым следуют сами объявления с использованием следующего

синтаксиса:

<Ug> = <Макро определение>

Каждое <Макро определение> заканчивается символом новой строки, поэ-

тому на одной строке может быть только одно объявление константы. На кон-

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

рим следующий фрагмент программы:

constants

blue = 1

green = 2

red = 4

bdi_path = "c:\\tprolog2\\bdi"

grayfill50 = [$aa, $55, $aa, $55, $aa, $55, $aa, $55]

language = english

project_module = true

Перед тем, как компилировать вашу программу, Турбо Пролог заменит

каждую константу на актуальное значение, которое ей соответствует. Напри-

мер:

...

menu_colors(red, green, blue),

find_bgi(bgi_path),

my_fill_pattern(grayfill, 50),

text_convert(tprolog, language),

status(project_module),

...

будет обработано компилятором так:

...

menu_colors(4, 2, 1),

find_bgi("c:\\tprolog2\\bdi"),

my_fill_pattern([$aa, $55, $aa, $55, $aa, $55, $aa, $55],

text_convert(tprolog, english)

status(true),

...

На использование символических констант накладываются некоторые ог-

раничения:

# Определение константы не может ссылаться само на себя.

Например:

list = [1, 2\list]. /* недопустимо */

сгенерирует сообщение об ошибке: Recursion in constant definition.

# В объявлениях констант система не различает большие и строчные

буквы. Следовательно, когда идентификатор константы используется в

разделе предложений, первая буква должна быть строчной, чтобы избе-

жать путаницы с переменными. Поэтому, правильной конструкцией явля-

ется следующая:

constants

Two = 2

goal A = two, write(A).

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

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

# Идентификаторы констант являются глобальными для файла и могут

быть объявлены лишь однажды. Неоднократное объявление одного иденти-

фикатора приведет к сообщению об ошибке:

Constant identifier can only be declared once.

# Вы можете использовать константы, чтобы переопределить имена доме-

нов и предикатов, кроме специально определенных предикатов. Обращай-

тесь к разделу "Специально определенные предикаты" - выше в этой

главе.