Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.doc
Скачиваний:
31
Добавлен:
12.03.2015
Размер:
929.28 Кб
Скачать

Левому поддереву соответствует отсортированный список

[alice,fred,graham]

Правому поддереву - отсортированный список

[ray]

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

присоединить([alice,fred,graham],[jim | ray),L)

что равно

[alice,fred,graham,jim,ray]

Используя процедуру присоединить (см. разд. 5.1.2), преобразу­ем приведенный алгоритм в утверждения Пролога:

дерево_в_список(nil,[]).

дерево_в_список(бд(Лд,К,Пд),С) :-

дерево_в_список (Лд,СЛ),

дерево_в_список (Пд,СЛ),

присоединить(СЛ, [К | СП] ,C).

Глава 6 Операторы

В этой главе описывается связь операторов со структурами и из­лагаются способы объявления и использования операторов. Дается объяснение следующим трем свойствам операторов:

1) позиция;

2) приоритет;

3) ассоциативность.

6.1. Операторы и структуры синтаксис операторов

Структура в Прологе образуется из атома, называемого главным функтором, и следующей за ним последовательности термов, назы­ваемых компонентами. Последовательность компонент заключается в круглые скобки. Между главным функтором и открывающей скоб­кой не должно быть пробела. Компоненты разделяются запятыми. Например, +(1,2) представляет собой структуру с главным функто­ром + и компонентами 1 и 2;

Для некоторых типов структур допустима более удобная запись с помощью альтернативных форм синтаксиса:

а) синтаксис операторов для структур, арность которых равна од­ному или двум;

б) синтаксис списков для структур в виде списков;

в) синтаксис строк для списков символов, записанных в кодах ASCII или EBCDIC.

В настоящей главе мы обсудим первую форму - синтаксис опера­торов. Структуры с арностью, равной одному или двум, могут быть переписаны в синтаксисе операторов посредством объявления глав­ного функтора структуры оператором с одним или двумя аргумента­ми. Компоненты структуры записываются как аргументы оператора.

Например, если + и - объявить системными операторами, то +(1,2) принимает вид 1+2, а-(1) записывается как -1.

Если арность структуры равна единице, оператор может быть объявлен как

а) префиксный оператор. В этом случае оператор записывается перед единственным аргументом ор А;

б) постфиксный оператор. В этом случае оператор записывает­ся после единственного аргумента А ор.

Если арность структуры равна двум, оператор может быть объяв­лен как инфиксный. В таком случае он записывается между двумя своими аргументами: А ор В.

Например, такие структуры, как

+(X,Y).

;(P,Q). (; обозначает'или')

< (X,Y).

является_частью(А,В).

прошло(Р).

допускают общепринятую форму записи

X+Y.

P;Q.

X<Y.

А является_частью В.

Р прошло.

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

Свойства операторов

Для точного определения оператора необходимо указать три его свойства: позицию, приоритет и ассоциативность.

Позиция оператора указывает, где он записывается по отноше­нию к своим аргументам.

Приоритет оператора задает порядок выполнения операций в выражении, содержащем более одного оператора.

Ассоциативность оператора показывает, какая операция вы­полняется первой в выражении, содержащем два или более операто­ра с одинаковым приоритетом.

Теперь мы поясним значение свойств и их использование в объ­явлении оператора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]