TURBO PROLOG. Терёхин В.В. - 79 стр.

UptoLike

Составители: 

79
тех пор, пока не будет обнаружено определенное условие. Предикат cut слу-
жит для устранения всех последующих откатов.
Метод отката и отсечения демонстрирует простая ситуация, в которой
предикаты базы данных содержат несколько имен, как это имеет место для
предикатов child (ребенок) в программе, формирующей список имен детей
(листинг 4.4).
Листинг 4.4
____________________________________________________________
/*Программа: Имена детей */
/* Назначение: Демонстрация использования предиката */
/* cut (!) и ОО-метода */
domains
person = symbol
predicates
child(person)
show_some_of_them
make_cut(person)
goal
write("Мальчики и девочки"),
nl, nl,
show_some_of_them
clauses
child("Tom ").
child("Beth ").
child("Jeff ").
child("Sarah ").
child("Larry ").
child("Peter ").
child("Diana ").
child("Judy ").
child("Sandy ").
show_some_of_them :-
child(Name),
write(" ", Name),
nl, make_cut(Name),!.
make_cut(Name) :-Name="Diana".
_________________________________________________________
тех пор, пока не будет обнаружено определенное условие. Предикат cut слу-
жит для устранения всех последующих откатов.
      Метод отката и отсечения демонстрирует простая ситуация, в которой
предикаты базы данных содержат несколько имен, как это имеет место для
предикатов child (ребенок) в программе, формирующей список имен детей
(листинг 4.4).

                       Листинг 4.4
____________________________________________________________
/*Программа: Имена детей                                 */
/* Назначение: Демонстрация использования предиката      */
/*       cut (!) и ОО-метода                             */
domains
      person = symbol

predicates
      child(person)
      show_some_of_them
      make_cut(person)

goal
       write("Мальчики и девочки"),
                            nl, nl,
                            show_some_of_them

clauses
      child("Tom ").
      child("Beth ").
      child("Jeff ").
      child("Sarah      ").
      child("Larry      ").
      child("Peter      ").
      child("Diana      ").
      child("Judy       ").
      child("Sandy      ").

       show_some_of_them :-
                      child(Name),
                      write(" ", Name),
                      nl, make_cut(Name),!.

     make_cut(Name) :-Name="Diana".
_________________________________________________________




                                                                        79