Имена предикатов
Учебные материалы


Имена предикатов



Карта сайта na-kartu.ru

В именах предикатов запрещается использовать пробел, символ минус, звездочку и другие алфавитно-цифровые символы.

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

Агументы предикатов

Аргументы предикатов должны принадлежать доменам, известным

Прологу

. Эти домены могут быть либо стандартными доменами, либо некоторыми из тех, что вы объявляли в разделе доменов.

56. Раздел доменов.

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

Пролога

объекты в отношениях (аргументы предикатов) принадлежат доменам, причем это могут быть как стандартные, так и описанные вами специальные домены.

Раздел

domains

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

predicates

. Объявление собственных доменов, благодаря присваиванию осмысленных имен типам аргументов, помогает документировать описываемые вами предикаты.

57. Раздел цели.

Во существу, раздел

goal

(цели) аналогичен телу правила: это просто

список подцелей

. Цель отличается от правила лишь следующим:

· за ключевым словом

goal

не следует

":-"

;

· при запуске программы

Пролог

автоматически выполняет цель.

Это происходит так, как будто

Пролог

вызывает

goal

, запуская тем самым программу, которая пытается разрешить тело правила

goal

. Если все подцели в разделе

goal

истинны, - программа завершается успешно. Если же какая-то подцель из дела

goal

ложна, то считается, что программа завершается неуспешно (хотя чисто внешне никакой разницы в этих случаях нет, - программа просто завершит свою работу).

58. Описание доменов.

Как в любом другом языке программирования, в

Прологе

все используемые конструкции должны быть предварительно описаны. Поэтому в описании предиката мы должны указать типы его аргументов.

В

Прологе

имеется 6 встроенных типов доменов, решающих эту задачу. Кроме того, существует возможность создания новых типов доменов на базе стандартных.

Перечислим основные способы создания новых доменов.

1.

Создание псевдонимов (альтернативных имен) стандартных доменов

. Эта операция осуществляется по следующей схеме:



=

.

Этот формат служит для объявления нового имени домена, состоящего из элементов (доменов) стандартных типов, к которым относятся типы, перечисленные в таблице 1. Этот способ применяется для объявления типов объектов, которые подобны синтаксически, но отличаются семантически (по смыслу), и поэтому не должны в программе смешиваться друг с другом. Отнесение их к различным, определенным программистом типам, позволяет компилятору осуществлять тщательный контроль их использования в программе.

2.

Создание домена типа "список"

. Этот формат применяется при описании предикатов, осуществляющих обработку списков. Общий вид создания такого домена следующий:

= *.

Символ "*" (звездочка) "говорит" о том, что создаваемый домен является списком. Тип элементов списка может относиться как к стандартному типу, так и к доменам, определенным программистом. Например:

list_int = integer* /*Домен типа списка целых чисел.*/

list_char = char* /*Домен типа списка символов.*/

Более детально мы рассмотрим описание доменов типа "список" в соответствующем разделе.

3.

Создание домена типа "структура"

. Чаще всего этот формат применяется при организации баз данных. Его общий вид следующий:

4. =

5. (,, ...,);

6. (,, ...,)

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

владелец = имеет(фамилия,книга)

и затем задавать его элементы в программе, например, так:

имеет(Иванов,книга(Стругацкие,"Жук в муравейнике"))

7.

Создание домена типа "файл"

. Этот домен применяется в том случае, когда в программе необходимо ссылаться на файлы с помощью файловых переменных (логических имен файлов). Формат создания такого домена следующий:

8. file = ;; ...; .

59. Задание типов аргументов при декларации предикатов. Арность (размерность).

Объявление доменов аргументов в разделе

predicates

называется

заданием типов аргументов

. Предположим, имеется следующая связь объектов:

Франк - мужчина, которому 45 лет.

Факт

Пролога

, соответствующий этому предложению естественного языка, может быть следующим:



edu 2018 год. Все права принадлежат их авторам! Главная