Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Рекурсивные вычисления в Пролог-программе




Пример.

Переменные в Пролог-программе

Пример.

name (man, "Петр")

 

Основными называются термы, не содержащие переменных, т.е. факты. Термы, содержащие переменные называются неосновными.

Сложный терм является в Пролог-программе или функтором, или оператором. Определение сложного терма в программе содержит имя, представляющее собой атом, и совокупность аргументов, которые в свою очередь также могут быть простыми и сложными термами.

Переменные в Пролог-программе являются не местом в памяти, а реальным объектом. Место действия одной переменной – одна резольвента. При осуществлении механизма возврата значения всех переменных в резольвенте, через которые осуществляется возврат, очищаются.

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

domains /* раздел данных */

тип фигуры = symbol

выражение для площади = string

predicates

площадь (тип фигуры, выражение для площади)

фигура (тип фигуры, выражение для площади)

goal

площадь (круг, Z).

clauses

площадь (X, Y):- фигура (X, Y), write ("X=", X, "Y=", Y).

фигура (квадрат, "сторона * сторона").

фигура (круг, "pi * радиус * радиус").

фигура (треугольник, "1/2 * основание * высота").

фигура (__, "неизвестно").

 

Наличие символа «__» означает использование фиктивной переменной. В рассмотренном примере с ее помощью реализован квантор общности.

В разделе данных domains объявлены типы данных пользователя («тип фигуры» и «выражение для площади»), а также указано, что «тип фигуры» эквивалентен стандартному символьному типу (symbol), а тип «выражение для площади» – стандартному строковому типу (string).

Рекурсивное описание правила содержит в своем теле ссылку на заголовок этого же правила. Возможны следующие три варианта рекурсивных правил:

· правая рекурсия − pr 1():- pr 11(), pr 12(),..., pr 1N(), pr 1().

· левая рекурсия − pr 1():- pr 1(1), pr 21(), pr 22(),..., pr 2M().

· обобщенная рекурсия −
pr 1():- pr 11(), pr 12(),..., pr 1N(), pr 1(), pr 21(), pr 22(), …, pr 2M().

 

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

· заданием в программе альтернативного правила или факта pr 1(), не содержащего рекурсии (выход происходит при успешном выполнении этого правила);

· формированием условия выхода одним из предикатов pr 11(), pr 12()…, - выход происходит если в процессе выполнения правилах хотя бы один из предикатов завершается неуспехом.

Предикаты pr 21(), …, pr 2M() не влияют на выполнение рекурсии, а выполняются только после выхода из нее. Эти предикаты получают значения переменных из стека, в который они помещаются на время выполнения рекурсии. Производимые при этом вычисления называют хвостовыми вычислениями. Идеи реализации рекурсивных вычислений представлены в примере и в табл. 3.1, составленной на основе соответствующей Пролог-программы.




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


Дата добавления: 2014-12-29; Просмотров: 588; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.