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

UptoLike

25
Существует только два случая применения предиката отсечения:
1. Если заранее известно, что определенные посылки никогда не
приведут к осмысленным решениямэто так называемое
«зеленое отсечение».
2. Если отсечения требует сама логика программы для исключения
альтернативных подцелейэто так называемое «красное
отсечение».
Пример 19: Использование предикатов ! и fail. Для примера 16 можно
добавить
правила для печати всех пар «мать-ребёнок», которые есть в БД:
1.печать_1(X,Y):-мать(X,Y), write(X,” есть мать”,Y),nl.
goal
печать_1(X,Y).
В результате будет выдано 3 решения:
X=мария, Y= анна.
X=мария, Y= юлия.
X=анна, Y= петр.
2.печать_2:-мать(X,Y), write(X,” есть мать”,Y),nl,fail.
goal
печать_2.
В результате будет выдано 3 решения:
X=мария, Y= анна.
X=мария, Y= юлия.
X=анна, Y= петр.
3.печать_3(X,Y):-мать
(X,Y), write(X,” есть мать”,Y),nl,!.
goal
печать_3(X,Y).
В результате будет выдано 1 решение:
X=мария, Y= анна.
2.7 Процедурность Пролога.
Прологдекларативный язык. Описывая задачу в терминах фактов и
правил, программист предоставляет Прологу самому искать способ решения.
В процедурных языках программист должен сам писать процедуры и
функции, которые подробно «объясняют» компьютеру, какие шаги надо
сделать для
решения задачи.
Тем не менее, рассмотрим Пролог с точки зрения процедурного
программирования:
1. Факты и правила можно рассматривать как определения
процедур.
2. Использование правил для условного ветвления программы.
Правило, в отличие от процедуры, позволяет задавать множество
альтернативных определений одной и той же процедуры.