Логическое программирование на языке Visual Prolog. Солдатова О.П - 38 стр.

UptoLike

38
decimal (1)
decimal (2)
decimal (3)
decimal (4)
decimal (5)
decimal (6)
decimal (7)
decimal (8)
decimal (9)
write_decimal:- findall(C, decimal (C), L), write (L).
goal
write_decimal.
2.12 Повторение и рекурсия в Прологе
Очень часто в программах необходимо выполнить одну и ту же
операцию несколько раз. В программах на Прологе повторяющиеся операции
обычно выполняются при помощи правил, которые используют возврат и
рекурсию [3]. Существует четыре способа построения итеративных и
рекурсивных правил:
механизм возврата
;
метод возврата после неудачи;
правило повтора, использующее бесконечный цикл;
обобщенное рекурсивное правило.
Правила повторений и рекурсии должны содержать средства
управления их выполнением. Встроенные предикаты Пролога fail и cut (!)
используются для управления возвратами, а условия завершения
используются для управления рекурсией. Правила выполняющие
повторения, используют возврат, а правила, выполняющие
рекурсию,
используют самовызов.
2.12.1 Механизм возврата
Возврат является автоматически инициируемым системой процессом,
если не используются специальные средства управления им. Если в
предикате цели есть хотя бы одна свободная переменная, то механизм
возврата переберет все возможные способы связывания этой переменной, то
есть реализует итеративный цикл.
Пример 34: распечатать все десятичные цифры.
domains
d=integer
predicates
decimal (d)
write_decimal (d)
clauses