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

UptoLike

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

78
* Упражнения
4.3. Напишите правило для выдачи на экран списка всех служащих
женского пола, используя программу о служащих.
4.4. Для той же программы напишите правило для генерации списка
всех служащих, у которых почасовая оплата 5 долларов.
4.5. Обувной магазин фиксирует количество обуви, проданной
в течение дня. Данные о продаже включают индекс товара, его
цену, продан-
ное количество экземпляров данного типа, размер. Придумайте и спроекти-
руйте программу на Турбо-Прологе, которая формирует отчет о продаже.
Включите в суммарный объем дохода от продажи налог, предположив, что
он равен 6.5% .
4.4.2 Метод отсечения и отката (ОО)
В некоторых ситуациях необходимо иметь доступ только к опреде-
ленной части данных. Это бывает, например, когда запасные части, посту-
пившие на склад, вносятся в опись сразу же после их поступления, или когда
заявки на них фиксируются в произвольном порядке. Метод отсечения и от-
ката (ОО) может быть использован для фильтрации
данных, выбираемых из
утверждений базы данных. Удобство этого метода становится более явным
при большем числе условий для выборки. Например, метод ОО дает воз-
можность выбрать все заявки, зафиксированные с 18 по 19 июня, имеющие
литеру B в номере накладной, и полученные до того, как клерк Элайн Ларк
заступил на дежурство. Задавая инициалы клерка как
условие окончание
просмотра базы данных, можно получить только требуемую часть информа-
ции.
Вы уже видели, каким образом предикат fail может вызвать откат к
другим возможным вариантам решения задачи или подцели. Однако, для то-
го, чтобы из базы данных выбирать данные, удовлетворяющие некоторым
условиям, необходимо иметь средства управления откатом. Для этих
целей
Турбо-Пролог имеет встроенный предикат cut (отсечение). Предикат cut
обозначается символом восклицательного знака (!). Этот предикат, вычис-
ление которого всегда завершается успешно, заставляет внутренние
унификационные подпрограммы "забыть" все указатели отката, уста-
новленные во время попыток вычислить текущую подцель.
Другими словами, предикат cut "устанавливает барьер", запрещающий
выполнить откат ко всем альтернативным
решениям текущей подцели. Од-
нако последующие подцели могут создать новые указатели отката, и тем
самым создать условия для поиска новых решений. Область действия преди-
кат cut на них уже не распространяется. Но если все более поздние цели ока-
жутся неуспешными, то барьер, установленный предикатом cut, заставит ме-
ханизм отката отсечь
все решения в области действия cut путем немедлен-
ного отката к другим возможным решениям вне области действия cut.
Метод отсечения и отката использует предикат fail для того, чтобы
имитировать неуспешное вычисление и выполнять последующий откат, до
* Упражнения
      4.3. Напишите правило для выдачи на экран списка всех служащих
женского пола, используя программу о служащих.
      4.4. Для той же программы напишите правило для генерации списка
всех служащих, у которых почасовая оплата 5 долларов.
      4.5. Обувной магазин фиксирует количество обуви, проданной
в течение дня. Данные о продаже включают индекс товара, его цену, продан-
ное количество экземпляров данного типа, размер. Придумайте и спроекти-
руйте программу на Турбо-Прологе, которая формирует отчет о продаже.
Включите в суммарный объем дохода от продажи налог, предположив, что
он равен 6.5% .
      4.4.2 Метод отсечения и отката (ОО)
      В некоторых ситуациях необходимо иметь доступ только к опреде-
ленной части данных. Это бывает, например, когда запасные части, посту-
пившие на склад, вносятся в опись сразу же после их поступления, или когда
заявки на них фиксируются в произвольном порядке. Метод отсечения и от-
ката (ОО) может быть использован для фильтрации данных, выбираемых из
утверждений базы данных. Удобство этого метода становится более явным
при большем числе условий для выборки. Например, метод ОО дает воз-
можность выбрать все заявки, зафиксированные с 18 по 19 июня, имеющие
литеру B в номере накладной, и полученные до того, как клерк Элайн Ларк
заступил на дежурство. Задавая инициалы клерка как условие окончание
просмотра базы данных, можно получить только требуемую часть информа-
ции.
      Вы уже видели, каким образом предикат fail может вызвать откат к
другим возможным вариантам решения задачи или подцели. Однако, для то-
го, чтобы из базы данных выбирать данные, удовлетворяющие некоторым
условиям, необходимо иметь средства управления откатом. Для этих целей
Турбо-Пролог имеет встроенный предикат cut (отсечение). Предикат cut
обозначается символом восклицательного знака (!). Этот предикат, вычис-
ление которого всегда завершается успешно, заставляет внутренние
унификационные подпрограммы "забыть" все указатели отката, уста-
новленные во время попыток вычислить текущую подцель.
      Другими словами, предикат cut "устанавливает барьер", запрещающий
выполнить откат ко всем альтернативным решениям текущей подцели. Од-
нако последующие подцели могут создать новые указатели отката, и тем
самым создать условия для поиска новых решений. Область действия преди-
кат cut на них уже не распространяется. Но если все более поздние цели ока-
жутся неуспешными, то барьер, установленный предикатом cut, заставит ме-
ханизм отката отсечь все решения в области действия cut путем немедлен-
ного отката к другим возможным решениям вне области действия cut.
      Метод отсечения и отката использует предикат fail для того, чтобы
имитировать неуспешное вычисление и выполнять последующий откат, до


                                                                         78