Читайте также: |
|
Программа в Turbo Prolog’е может состоять из отдельных модулей. Модули могут быть описаны, отредактированы отдельно, а затем связаны в программу. В модулях все имена и области значений считаются локальными (локальный – иначе местный), т.е. в разных модулях можно использовать одинаковые имена.
Всякий модуль определяется посредством своего первого имени (без типа файла). Все модули входят в одну программу, которая называется проект. Имя проекта должно быть задано в начале каждого модуля следующим предикатом:
Project «newproject» – уникальное (свое) имя
Файл, содержащий проект, имеет специальное расширение prj. Среди модулей, входящих в проект, только один модуль может иметь имя «global.pro» (обязательно – это главный)
Если программа состоит из модулей, то Turbo Prolog ищет заданные, определяющим словом Project, имена модулей, которые должны быть обработаны. Для этого необходимо, чтобы в библиотеке имелся специальный файл, который имеет имя librarian и который содержит список имен модулей в виде: имя1 + имя2 + имя3+ …
Для составления этого файла в меню SETUP имеется подменю librarian. При создании проекта автоматически создается символьная таблица, которая сохраняется в файле obj – оглавление и имеет расширение sym.
Для компиляции и связывания модулей должны быть выполнены следующие условия.
1. Всякий модуль должен начинаться с директивы Project.
2. Только один модуль может иметь имя global.pro.
3. Только один из модулей может иметь раздел goal.
4. Модули должны компилироваться с опцией to obj.
Последний модуль компилируется с to exe. В этом случае автоматически запускается редактор связи и создается исполнимая программа. Редактировать, значит связать все файлы в единое целое.
Процесс связывания можно реализовать с помощью файла проекта и ВАТ-файла PLINK следующим образом:
PLINK NEW proj, где NEW PROJ –имя проекта файла.
PLINK может быть использована из под DOS. В ней могут быть заданы групповые имена, т.е. параметры %1, %2, %3 (вместо % можно ставить имя):
%1 – имя проекта или модуля,
%2 – имя устройства и путь, задающий оглавление, в которое будет записан exe файл,
%3 – имя устройства и путь к каталогу, где располагаются следующие программы: prolog.lib, init. Obj.
При запуске из Turbo Prolog’а в режиме автоматического связывания эти параметры принимают следующие значения:
1. имя проекта или программы,
2. текущий путь exe оглавления системы Turbo Prolog,
3. текущий путь оглавления Turbo Prolog’а.
При запуске из-под DOS обязательно следует задать первый параметр. По умолчанию 2 и 3 параметры будут использовать текущие оглавления. Команда PLINK проверяет существует ли файл с расширением sym и выбирает связывать проект или редактировать один объектный файл.
Программы, которые взаимодействуют через границы модулей, должны использовать предикаты из специальной секции: global predicates, и иметь общие данные из секции: global domains.
При описании глобальных предикатов они записываются в следующем виде:
predicate (d1, d2,…dn) – (f, f, f)(f, f,…f), где d1, d2,…dn – глобальные области значений, группа f – задает потоковый шаблон.
Каждый модуль исходного проекта должен содержать одни и те же глобальные предикаты и одну и ту же глобальную область значений. Поэтому его записывают в один файл и подключают ко всем остальным с помощью оператора include.
Тогда общая структура модуля будет иметь следующий вид:
domains
global domains
database
predicates
global predicates
goal
clauses
Запишем пример содержимого файла проекта под именем coma.prj
main1+
delo+
и два файла *.pro
main1.pro
project «coma»
global domains
text=string
global predicates
write1(text)
predicates
turbo
goal
turbo
clauses
turbo:–write(“gggg”).
Файл delo.pro
project «coma»
global domains
text=string
global predicates
write1(text)-(i)
clauses
write1(X):–write(X).
Все файлы следует поместить в каталог, где находится файл prolog.exe со всеми своими модулями. Затем производится компиляция в режиме compile project. Откомпилированные модули записываются в директорию, куда распределяются файлы EXE (туда помещаются файлы coma.exe, coma.sym, delo.obj, main1.obj).
Дата добавления: 2015-09-06; просмотров: 87 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Создание динамических баз данных | | | Решение задачи о волке, козе и капусте |