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

Приложение d. Различия между версиями 1.1 и 2.0

Турбо Пролог версии 2.0 имеет некоторые отличия от 1.1, которые по-

вышают его мощь. Эти отличия описаны в данном руководстве. Здесь же соб-

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

дение внешних баз данных, новых графических возможностей, новый интерфейс

с пользователем, остановимся только на кратком их перечислении:

Внешние Базы Данных:

Версия 2.0 повышает возможности работы с базой данных, обеспечивая

быстрый доступ к большим базам данных на диске и в защищенной памяти.

BGI Графика:

Версия 2.0 включает Графический Интерфейс фирмы Борланд, который

позволяют вам создавать различные настройки.

Улучшенный Пользовательский Интерфейс:

Повышенный текстовый режим, можно переопределять клавиши редактора и

др.

Компиляция программ 1.x в 2.0

Перед перечислением всех новых средств сначала необходимо рассмот-

реть, какие модификации надо провести в программах версии 1.1, чтобы их

можно было оттранслировать в 2.0. Большинство приложений, написанных в

1.x, можно выполнять в 2.0 без модификации. Однако, требуются незначи-

тельные изменения в глобальных описаниях и базе данных для 2.0. Эти изме-

нения описаны в нижеследующих разделах.

GLOBAL раздел программы

В данной версии необходимо, чтобы всем domain, predicate и database

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

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

Global Domains

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

предикатах, должны быть объявлены явно как глобальные домены. Например:

global domains

element = integer

reaction_rate = real

p_table = element

global predicates

reaction(element, reaction_rate) - (i, i), (o, o)

catalist(element, p_table) - (o, i) language c

Global Database

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

она используется в различных моделях.

global domains

element = integer

reaction_rate = real

p_table = element

global database

reaction_time(reaction_rate)

global predicates

reaction(element, reaction_rate) - (i, i), (o, o)

catalyst(element, p_table) - (o, i) language c

Недетерминизованные Global Predicates

В версии 2.0 все глобальные предикаты детерминисткие по умолчанию.

Если вам необходимо иметь недетерминисткие глобальные предикаты, вам не-

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

ним ключевое слово nondeterm. Например:

global predicates

nondeterm reaction(element, reaction_rate) - (i, i), (o, o)

nondeterm catalyst(element, p_table) - (o, i) language c