Структуры Пролога, разделы программы

Основные Элементы ТурбоПролога.

Програма на ТП содержит описание задачи, имеющее 3 компоненты:

1. имена и структуры объектов, используемых в задаче;

2. имена отношений, которые существуют между объектами;

3. Факты и правила, описывающие отношения.

Особенности:

- имена объектов должны начинаться с малой буквы за которой могут следовать произвольные символы (буквы, цифры, знак подчеркивания),

- имена отношений – особые комбинации букв, цифр и знаков подчеркивания (начинаются с буквы). При выполнении программы на ТП система пытается выявит все возможные значения, удовлетворяющие данной цели (goal),

- объекты данных в ТП называются термами.

Терм может быть константой, переменной или структурой. Классификация объектов данных приведена на схеме.

Атом – синтаксически неделимый терм. На ТП атомы можносоздать 2-мя способами: из цепочек букв, цифр, символов подчеркивания; из цепочки символов, заключенных в кавычки.

Констаныты относятся к одному из 6 стандартных типов данных:

Тип Ключевое слово Диапазон значений Пример
Символы char Все символы ‘a’, ‘C’, ‘%’
Целые числа integer -32678…32767 -153, 125
Действительные числа real -1E-307…1E308 2.48
Строки string Последовательность символов “Sony”, “256”
Символьные имена symbol   real_data, ‘Delete string’
Файлы file Допустимое в ДОС имя файла a.txt

Переменная – имя начинаетяс с большой буквы или знака подчеркивания. В качестве имени может использоваться знака подчеркивания, такая переменная называется анонимной. Она может использоваться вместо любой переменнйо, однако она никогда не принимает конктертного значения. Переменная читается свободной, или неконкретизированной (free), когда значение ее не известно. Связанной или конкретизированной, когда известно.

Структуры Пролога, разделы программы

Структуры – объекты, которые состоят из нескольких компонент. Записывается с помощью указания ее функтора и компонента. Компоненты заключаются в ( ) и разделяются ,. Функтор записывается перед открывающей скобкой.

data_rogd (5, mart, 1980)

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

data_rogd (D, mart, 1980)

line ( point (1, 1), point (3, 4))

Все структурные объекты можно избразить в виде деревьев. Корнем дерева является функтор, а ветвями, выходящими из него – компоненты.

Программа на ТП состоит из нескольких разделов, каждому из которых предшествует ключевое слово.

Типичная структура программы:

/* комментарий */ % комментарий

 

domains

<описание типов данных>

predicates

<описание предикатов>

goal

<целевое утверждение>

clauses

<утверждения (предложения)>

В программе необязательно наличие всех разделов. Обычно должно быть по крайней мере разделы 2 и 4. В программе могут присутствовать еще 2 раздела для определения глобальных доменов и предикатов – global domains, global predicates.

Они позволяют обеспечить междумодульный интерфейс, если программа состоит из нескольких модулей. При работе с базами данных в программе должен присутствовать раздел database для описания предиката динамичекой базы данных. Он должен располагаться перед разделом predicates. Программа может создать несколько разделов domains, predicates, clauses. При этом надо соблюдать следующие ограничения:

· раздел должен начинаться с ключевого слова;

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

· все предложение раздела clauses, описывающие один и тот же предикат должны записываться друг за другом;

· при компиляции может обрабатываться только один раздел глобальных предикатов, при этом перед ним не должен использоваться раздел объявления обычных предикатов;

· разделы, создающие предикаты базы данных должны использоваться перед объявлением всех глобальных и обычных предикатов.