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

UptoLike

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

81
Метод ОО можно использовать и иначе, например, для обработки вы-
бираемых элементов. Программа, изображенная на листинге 4.5, демонстри-
рует использование ОО-метода для создания списка выбранных из базы дан-
ных элементов.
Листинг 4.5
_______________________________________________________________
/* Программа: Новые детские имена */
/* Назначение: Демонстрация использования предиката */
/* cut (!) и ОО-метода */
domains
name = symbol
predicates
child(name)
go_and_get_them
goal
go_and_get_them
clauses
child("Tom ").
child("Alice ").
child("Diana ").
child("Alice ").
child("Beth ").
child("Lee ").
child("Alice ").
go_and_get_them :-
write(" Список имен"),
nl,nl,
child(Name),
Name="Alice",
write(" ",Name),nl,
fail.
_______________________________________________________
Как и в программе, формирующей список имен детей, в этой про-
грамме child(name) является предикатом базы данных, содержащим инфор-
мацию, необходимую для генерации списка имен. Имеется 7 альтернатив-
ных утверждений. Три из них содержат имя Alice. Правило, которое выби-
рает и выдает имя Alice,
имеет вид:
get_alice :-
child(Name),
      Метод ОО можно использовать и иначе, например, для обработки вы-
бираемых элементов. Программа, изображенная на листинге 4.5, демонстри-
рует использование ОО-метода для создания списка выбранных из базы дан-
ных элементов.

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

predicates
      child(name)
      go_and_get_them

goal
       go_and_get_them

clauses
      child("Tom ").
      child("Alice       ").
      child("Diana       ").
      child("Alice       ").
      child("Beth ").
      child("Lee ").
      child("Alice       ").

     go_and_get_them :-
               write(" Список имен"),
               nl,nl,
               child(Name),
               Name="Alice",
               write(" ",Name),nl,
               fail.
_______________________________________________________

      Как и в программе, формирующей список имен детей, в этой про-
грамме child(name) является предикатом базы данных, содержащим инфор-
мацию, необходимую для генерации списка имен. Имеется 7 альтернатив-
ных утверждений. Три из них содержат имя Alice. Правило, которое выби-
рает и выдает имя Alice, имеет вид:
           get_alice :-
                        child(Name),


                                                                         81