Читайте также: |
|
Имя предиката должно начинаться с буквы, за которой может располагаться последовательность букв, цифр и символов подчеркивания. Регистр букв не имеет значения, однако мы не советуем вам использовать заглавные буквы в качестве первой буквы имени предиката. Имя предиката может иметь длину до 250 символов.
В именах предикатов запрещается использовать пробел, символ минус, звездочку и другие алфавитно-цифровые символы.
Имена предикатов и аргументов могут состоять из любых комбинаций этих символов при условии, что вы подчиняетесь правилам построения соответствующих имен. Агументы предикатов
Аргументы предикатов должны принадлежать доменам, известным Прологу. Эти домены могут быть либо стандартными доменами, либо некоторыми из тех, что вы объявляли в разделе доменов.
56. Раздел доменов.
Домены позволяют задавать разные имена различным видам данных, которые, в противном случае, будут выглядеть абсолютно одинаково. В программах Пролога объекты в отношениях (аргументы предикатов) принадлежат доменам, причем это могут быть как стандартные, так и описанные вами специальные домены.
Раздел domains служит двум полезным целям. Во-первых, вы можете задать доменам осмысленные имена, даже если внутренне эти домены аналогичны уже имеющимся стандартным. Во-вторых, объявление специальных доменов используется для описания структур данных, отсутствующих в стандартных доменах. Иногда очень полезно описать новый домен - особенно, когда вы хотите прояснить отдельные части раздела predicates. Объявление собственных доменов, благодаря присваиванию осмысленных имен типам аргументов, помогает документировать описываемые вами предикаты.
57. Раздел цели.
Во существу, раздел goal (цели) аналогичен телу правила: это просто список подцелей. Цель отличается от правила лишь следующим:
· за ключевым словом goal не следует ":-";
· при запуске программы Пролог автоматически выполняет цель.
Это происходит так, как будто Пролог вызывает goal, запуская тем самым программу, которая пытается разрешить тело правила goal. Если все подцели в разделе goal истинны, - программа завершается успешно. Если же какая-то подцель из дела goal ложна, то считается, что программа завершается неуспешно (хотя чисто внешне никакой разницы в этих случаях нет, - программа просто завершит свою работу).
58. Описание доменов.
Как в любом другом языке программирования, в Прологе все используемые конструкции должны быть предварительно описаны. Поэтому в описании предиката мы должны указать типы его аргументов.
В Прологе имеется 6 встроенных типов доменов, решающих эту задачу. Кроме того, существует возможность создания новых типов доменов на базе стандартных.
Перечислим основные способы создания новых доменов.
1. Создание псевдонимов (альтернативных имен) стандартных доменов. Эта операция осуществляется по следующей схеме:
<новое имя домена> = <стандартное имя домена>.
Этот формат служит для объявления нового имени домена, состоящего из элементов (доменов) стандартных типов, к которым относятся типы, перечисленные в таблице 1. Этот способ применяется для объявления типов объектов, которые подобны синтаксически, но отличаются семантически (по смыслу), и поэтому не должны в программе смешиваться друг с другом. Отнесение их к различным, определенным программистом типам, позволяет компилятору осуществлять тщательный контроль их использования в программе.
2. Создание домена типа "список". Этот формат применяется при описании предикатов, осуществляющих обработку списков. Общий вид создания такого домена следующий:
<домен типа "список"> = <тип элементов списка>*.
Символ "*" (звездочка) "говорит" о том, что создаваемый домен является списком. Тип элементов списка может относиться как к стандартному типу, так и к доменам, определенным программистом. Например:
list_int = integer* /*Домен типа списка целых чисел.*/
list_char = char* /*Домен типа списка символов.*/
Более детально мы рассмотрим описание доменов типа "список" в соответствующем разделе.
3. Создание домена типа "структура". Чаще всего этот формат применяется при организации баз данных. Его общий вид следующий:
4. <структура> =
5. <функтор1> (<домен11>,<домен12>,...,<домен1N>);
6. <функтор2> (<домен21>,<домен22>,...,<домен2N>)
Объявление структуры (домена, состоящего из сложных и перекрывающихся объектов) состоит из имени структуры - функтора и доменов всех используемых компонент и подкомпонент данной структуры. Например, можно объявить домен "владелец" так:
владелец = имеет(фамилия,книга)
и затем задавать его элементы в программе, например, так:
имеет(Иванов,книга(Стругацкие,"Жук в муравейнике"))
7. Создание домена типа "файл". Этот домен применяется в том случае, когда в программе необходимо ссылаться на файлы с помощью файловых переменных (логических имен файлов). Формат создания такого домена следующий:
8. file = <имя1>;< имя1>;...; < имяN>.
59. Задание типов аргументов при декларации предикатов. Арность (размерность).
Объявление доменов аргументов в разделе predicates называется заданием типов аргументов. Предположим, имеется следующая связь объектов:
Франк - мужчина, которому 45 лет.
Факт Пролога, соответствующий этому предложению естественного языка, может быть следующим:
Дата добавления: 2015-07-20; просмотров: 118 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Length_of(T,TailLength), | | | Alphabet_position(Letter,Position) |