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

UptoLike

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

82
Name="Alice",
write(" ", Name),nl,
fail.
В базе данных имя Alice встречается трижды, поэтому результатом
работы приведенного правила будет список трех одинаковых имен.
Правило get_alice находит все (три) возможные означивания перемен-
ной Name, что является результатом применения метода ОПН. Однако при
желании можно выдать только первый экземпляр значения переменной
Name. Это достигается введением в правило выборки
отсечения:
get_first_alice :-
child(Name),
Name="Alice",
write(" ", Name), nl,
!,
fail.
В результате будет получен список, состоящий из единственного имени
Alice. Утверждение цели (правила) в предыдущем примере программы со-
держит элементы правила get_first_alice. Оно может быть использовано и как
внутренняя и как внешняя цель. Тщательно проанализировав это правило,
можно заметить, что предикат fail используется только один раз.
К моменту,
когда он получает управление, предикат cut уже устранил всякую возмож-
ность отката, в результате чего предикат fail оказывается бесполезным. От-
метим, что методы отката и отсечения здесь представлены в самой общей
форме, модифицировать которую для конкретного применения не составит
труда. Таким образом, диапазон применения отката и отсечения достато-
точно
широк.
* Упражнение
4.7. Модифицируйте программу, формирующую список новых
имен. Для этого:
a) добавьте предикат, который содержит как первое, так и второе имя
некоторых детей. Используйте следующий формат предиката:
child(First_name, last_name).
b) расширьте набор утверждений так, что бы включить первое
и второе имя для всех детей;
c) напишите правило для выдачи на печать имен
детей, второе
имя которых Smith (Смит);
d) напишите правило для выдачи на печать полного имени, если пер-
вое имя есть Alice;
e) выполните модифицированные программы.
4.4.3 Метод повтора (МП), определяемый пользователем
МП-метод, как и ОО-метод, использует откат. Но в МП-методе выпол-
нить откат возможно всегда в отличии от ОО-метода, где откат выполняются
                          Name="Alice",
                          write(" ", Name),nl,
                          fail.
       В базе данных имя Alice встречается трижды, поэтому результатом
работы приведенного правила будет список трех одинаковых имен.
       Правило get_alice находит все (три) возможные означивания перемен-
ной Name, что является результатом применения метода ОПН. Однако при
желании можно выдать только первый экземпляр значения переменной
Name. Это достигается введением в правило выборки отсечения:
       get_first_alice :-
                          child(Name),
                          Name="Alice",
                          write(" ", Name), nl,
                          !,
                          fail.
       В результате будет получен список, состоящий из единственного имени
Alice. Утверждение цели (правила) в предыдущем примере программы со-
держит элементы правила get_first_alice. Оно может быть использовано и как
внутренняя и как внешняя цель. Тщательно проанализировав это правило,
можно заметить, что предикат fail используется только один раз. К моменту,
когда он получает управление, предикат cut уже устранил всякую возмож-
ность отката, в результате чего предикат fail оказывается бесполезным. От-
метим, что методы отката и отсечения здесь представлены в самой общей
форме, модифицировать которую для конкретного применения не составит
труда. Таким образом, диапазон применения отката и отсечения достато-
точно широк.

* Упражнение
            4.7. Модифицируйте программу, формирующую список новых
имен. Для этого:
      a) добавьте предикат, который содержит как первое, так и второе имя
некоторых детей. Используйте следующий формат предиката:
            child(First_name, last_name).
      b) расширьте набор утверждений так, что бы включить первое
            и второе имя для всех детей;
      c) напишите правило для выдачи на печать имен детей, второе
             имя которых Smith (Смит);
      d) напишите правило для выдачи на печать полного имени, если пер-
            вое имя есть Alice;
      e) выполните модифицированные программы.


     4.4.3 Метод повтора (МП), определяемый пользователем
      МП-метод, как и ОО-метод, использует откат. Но в МП-методе выпол-
нить откат возможно всегда в отличии от ОО-метода, где откат выполняются


                                                                        82