Смекни!
smekni.com

Prolog. Реализация на ПЭВМ (стр. 2 из 2)

ПРИМЕР:

domains

p,T=symbo L

predicat s

like (P,T)

poleg (T)

dauses

like (“Иванов”,” пиво”).

like (“Иванов”,” сок”).

poleg(“cok”)...

otv if

like (P,T) and

poleg (T),nl,

write (P),

fail.

goal

otv.

Для управления процессом выполнения программ в PROLOG имеется встроенный предикей cut, кот. кодируется в turbo-PROLOG как !. Основное назначение — остановка процесса возврата, т.е. приостановка выработки дальнейших решений.

Этот процесс в Прологе наз. ОТСЕЧЕНИЕМ. Чаще всего предикей cut используется совместно с fail.

ПРИМЕР

.

.

.

goal

like (P,T)

T= “кефир”,

nl,

write ( “любитель кефира найден”)

!.

fail

Отсечение используется для устранения бесконечных циклов (см. пред. пример):

clauses

posl (0,1) if !

posl(N,V) if

M=N-1

posl (M,U)

V=U*N

Отсечение также используется для устр. взаимоисключающих утверждений.

ПРИМЕР

ball (M,’A”) if M> so,!

ball(M, “B”) if M< so an M>60,!.