Константы и переменные.

 

Константы Турбо-Пролога должны быть записаны:

а) либо с маленькой буквы (исключая кириллицу):

fact1, summa, person ;

 

б) либо стоять в одинарных кавычках (отдельный символ) или бинарных кавычках (строковая константа):

'c' , "summa=", "сумма";

 

в) либо они являются числами, целыми или вещественными:

25, 0.5, 3.2e-4 .

 

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

Переменные - это цепочки, состоящие из букв, цифр и символа подчеркивания. Они начинаются с прописной буквы или с символа подчеркивания:

 

X, Summa, List_of_members, _x23.

 

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

 

Программные секции Турбо-Пролога.

 

Программа на Турбо-Прологе состоит из нескольких программных секций, каждой из которых предшествует ключевое слово, представленное в следующей таблице:

Domains Определение типов данных
Database Объявление предикатов базы данных
Predicates Объявление предикатов
Clauses Определение фактов или правил
Goal Цель

 

В программе необязательно наличие всех секций. Обычно в программе должны быть по крайней мере разделы Predicates и Clauses.

Программа может содержать несколько разделов Domains, Predicates и Clauses, при этом необходимо соблюдать следующие ограничения:

- программная секция должна начинаться с соответствующего ключевого слова (Domains, Database, Predicates, Clauses или Goal);

- может использоваться только одна цель;

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

- разделы, содержащие предикаты базы данных (Database), должны предшествовать объявлениям Predicates.

Ключевые слова разделов можно записывать прописными и строчными буквами.

Рассмотрим описания разделов детальнее.

 

Секция DOMAINS.

 

Для обьявления секции domains используются четыре формата:

 

1. Первый формат:

name = t ,

где name - имя Турбо-Пролога, t - один из стандартных типов.

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

age, number = integer

 

объявляет два domains целого типа.

 

2. Второй формат:

 

mylist = elevent* ,

 

где mylist - объявление списка элементов, element - элемент, ранее описанный пользователем в Domains либо один из стандартных типов Турбо-Пролога,
“*” - обозначает список. Hапример,

 

namlist = integer*

 

объявляет список целых чисел.

 

3. Третий формат. Сложный Domains, задает описание структур.

 

region = functor1(d1,d2,...); functor2(d3,d4,...);...

 

где region объявляет составную область, functor1,functor2 - имена альтернатив составной области, d1,d1,...,d3,d4 - один из типов Турбо-Пролога, стандартный или определенный ранее в программе (типы можно не указывать).

Пример:

 

object = int(integer); str(string)

mesto = sprava; sleva .

 

Данный способ указания Domains позволяет рекурсивно описывать объекты сложных типов (деревьев).

4. Четвертый формат

file = name1; name2; ... ; nameN

 

где name1, name2,... - символические имена файлов.

Domains файлов используется в том случае, когда пользователю необходимо обратиться к файлу по символическому имени. В программе может быть только один domains этого типа, который называется file. Символические имена файлов задаются в domains в качестве альтернатив.

 

Секция PREDICATES.

Здесь указываются все имена предикатов с соответствующими областями определения аргументов. Аргументы дизъюнктов Пролога называются термами. Существует три типа термов: константа, переменная, составной терм (структура).

Общий вид описания предиката:

name(d1,d2,...) ,

 

где name - имя предиката, d1,d2,... - соответственно области определения аргумента1, аргумента2 и т.д. Например:

syn(string)

math(preson,person) .

В разделе predicates определяются предикаты (отношения). Каждый предикат определяется своим именем и своими аргументами (параметрами).

Правило состоит из заголовка и тела правила; заголовок - это предикат, тело правила состоит из термов, которые могут быть связаны словами OR или AND. Между заголовком и телом правила стоит слово IF. Правило оканчивается точкой. Имена переменных должны начинаться с прописной буквы и могут содержать только буквы, цифры и знак подчеркивания - "_". Одиночный знак "_" - это анонимная переменная, которая указывает, что значение данного аргумента не имеет значения при достижении цели.

 

Секция DATABASE.

 

Объявление оперативной базы данных. Синтаксис объявления такой же, как и в секции Predicates. Объявленные здесь предикаты не должны объявляться в секции Predicates, но дизъюнкты этих предикатов могут присутствовать в секции Clauses.

Секция CLAUSES.

 

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

 

functor(d1,d2,...):- cond1,cond2,... .

 

Здесь functor - имя предиката;

functor(d1,d2,...) - голова дизъюнкта;

cond1,cond2,... - условия истинности дизъюнкта, где запятые означают связку "И"; условия, в свою очередь, могут быть предикатами;

":-" -обозначение "ЕСЛИ".

Если опущены условия, то functor(d1,d2,...) описывает факт. Каждый из дизъюнктов одного предиката секции Clauses соответствует альтернативам этого предиката.

 

Секция GOAL.

 

Здесь указывается вопрос (цель), на который должен ответить Турбо-Пролог. Записывается он как дизъюнкт без головы и знака ":-" .








Дата добавления: 2016-05-05; просмотров: 848;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.