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

Способы объявления предикатов в программе Пролог

Существует 4 способа объявления типов данных (доменов);

  1. name =d , где name – имена объектов стандартного типа, d – один из типов (char, symbol, integer, real, string)

  2. list = element*, где list – список элементов element, element – элемент, лписанный в разделе domains или один из стандартных типов, * - список.

  3. num1=f1 (d11, …, d1M); f2 )d21, …, d2N) Тип num1 включает сложные объекты, которые объявляются путем установления пунктора и описаний всех входящих в него компонент. collection = book (author, title) record (artist, album, type). Один оператор раздела domains описысвает только один уровень дерева. books = book (title, author (name, surname)) – неверно.

  4. file = name1; name2; … Используется для обращения к файлам по символическим именам. В разделе domains может быть тоько один оператор этого типа. Симолические имена файлов, если их несколько, задаются в качестве альтернативы.

Объявление предикатов

Предикат (отношение) – в общем случае эта стуктура выглядит так:

predname (comp1, …, compN), где predname – имя предиката, comp1, …, compN – имя компонент.

domains

fio=string

den, god = integer

mes = symbol

predicates

anketa (fio, den, mes, god)

Если в предикатах испоьзуется только стандартные типы данных, то раздел domains может отсутствовать.

anketa (string, integer, symbol, integer)

Предикат может состоять только из одного имени, то есть не иметь компонент. Допускается многократное объявление предиката с одним и тем же именем. Альтернатива необяазтельно должна иметь одинаковое число компонентов.

Утверждения и правила. Факты и правила.

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

anketa (“Иванов”, 8, august, 1958).

Факт содержит содержит атом anketa, который является именем предиката и в () после него список соответствующих термов, соответствующих компонентам этого предиката. Факт всегда заканчиваетяс точкой. Факт содержит условие, которое являетяс верным. Правило сотоит из заголовка и тела, соединенных символом :- (если). Правила заканчиваются точкой. Заголовок являетяс одним из ранее описанных предикатов, в которых в качестве компонентов может быть переменные. Заголовок правила описывает факт, для определения которого предназначено это правило. Тело правила описывает цель, которая должна быть последовательно согласована с фактом для того, чтобы заголовок правила был истинным. Тело содержит список термов, разделенных запятыми или ; ( :- if) (. and) (; or).

Переменная означает один и тот же объект только в пределах одного правила.

Раздел goal

Записывается третий тип предложения, состоит из одного или нескольких целевых утверждений, разделенных «,» и оканчивающихся «.». Пролог система, рассматривает вопросы как цели, к которы нужно стремиться . Ответ на вопрос оказывается или положительным или отрицательным в зависимости от того, может быть цель достигнута или нет. Если на вопрос существует несколько ответов, то система может найти и выдать все из них. В разделе goal может быть только один вопрос, на который будет выдано только одно решение. Для получения всех решений можно удалит цель из из программы и задать цель на подсказку ТП в окне. Применение внешних целей бывает полкзно при записи коротких вопросов, а также для получения всег набора допустимых значений.