ВУЗ:
Составители:
Рубрика:
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. Использование правил для условного ветвления программы.
Правило, в отличие от процедуры, позволяет задавать множество
альтернативных определений одной и той же процедуры.
Страницы
- « первая
- ‹ предыдущая
- …
- 23
- 24
- 25
- 26
- 27
- …
- следующая ›
- последняя »