Скачиваний:
22
Добавлен:
01.05.2014
Размер:
299.01 Кб
Скачать

Директивы

Важным моментом при проектировании модуля на языке Пролог-2 (см. ниже) является то, как в нем определяются предикаты — как общие (public) или как приватные (private). К общему предикату можно обра­щаться извне данного модуля, а к приватному предикату ~ только в пределах этого модуля. По умолчанию, все предикаты модуля являются общими. Все предикаты модуля можно превратить в приватные при помощи директивы "private/0", не имеющей аргументов, либо в общие по директиве "pubHc/0". Конкретный предикат можно сделать приватным при помощи директивы "private/I" или общим по директиве "public/1".

С целью осуществления оптимизации во время компиляции можно при помощи директивы "mode" указать направленность аргументов преди­ката (входной или выходной аргумент). Например, в приводимом ниже правиле "итог" первый аргумент всегда должен быть входным, а второй -выходным:

% +

итог (клиент (_, Тариф, Дни), Сумма) :-

Сумма is Тариф * Дни.

Директива "mode", информирующая компилятор о свойствах аргумен­тов правила "итог", имеет вид:

?-mode итог (+, -).

Если программу нужно откомпилировать в объектный модуль, то все обращения в исходном Пролог-файле к предикатам (не встроенным), которые не определены в этом файле, должны объявляться при помощи директивы "external".

Среда разработки программ

Среда Пролога-2 организована в виде модулей. Модулем может быть либо Пролог-код, просмотренный интерпретатором, либо откомпилиро­ванный Пролог-код, либо объектный код программы, написанной на дру­гом языке. Модули можно подключать к Пролог-процессу либо явно (при помощи вызова встроенного предиката "open—module"), либо авто­матически при запуске процесса. В Прологе-2 имеется свой механизм виртуальной памяти, и частью спецификации модуля является указание о том, где он должен находиться — целиком в реальной памяти или час­тично в реальной и частично в виртуальной памяти. Виртуальная память предоставляет возможность написания программ очень большого размера за счет снижения скорости их выполнения. Многие вспомогательные прог­раммы, такие как интерпретатор верхнего уровня, текстовый редактор и отладчик, реализованы в виде самостоятельных модулей, поэтому они не занимают места в памяти, когда ими не пользуются.

Модули

Предикаты специфицируются внутри модуля либо как общие, либо как приватные. К общим предикатам можно обращаться вне модуля, в котором они определены, в то время как на приватные предикаты можно ссылаться только внутри данного модуля. В каждый момент сеанса рабо­ты с Прологом существует текущий выходной модуль и текущий вход­ной модуль. Текущий выходной модуль - это модуль, куда помещаются фразы, только что добавленные в программу.

Редактор

В Прологе-2 имеется встроенный полноэкранный редактор, удобный для внесения небольших изменений в существующие программы. После запуска редактора на экран дисплея выводится список модулей, которые можно редактировать. После выбора определенного модуля будет пока­зан список предикатов этого модуля. После того как программист выбе­рет некоторый предикат, редактор выведет на экран текст всех фраз, относящихся к предикату, и далее будет функционировать как редактор текстов. В редактор заложена информация о синтаксисе Пролога, поэтому он позволяет заранее обнаруживать синтаксические ошибки.

Соседние файлы в папке Гл.6,7,Прилож.,Допол