Составители:
Рубрика:
72
которое удовлетворяет обеим подцелям, т.е. результат вычисления под-
цели есть G=volleyball.
Откат является автоматическим инициируемым системой процессом,
если не используются средства управления им. Для управления процессом
отката в Турбо-Прологе предусмотрены два встроенных предиката fail (не-
удача) и cut (отсечение). Использование этих предикатов рассматривается
ниже в разделах, посвященных
методу Отката После Неудачи (ОПН) и
методу Отсечения и Отката (ОО).
Во время выполнения программы Турбо-Пролог создает необходимые
внутренние структуры данных (такие как списки и деревья) для выполнения
обработки программы. Эта обработка включает такие процессы как поиск,
сопоставление с образцом, создание экземпляра, означивание и освобожде-
ние переменных, откаты.
Вы должны вспомнить сказанное в главе 2 о
том, что эти процессы выполняются внутренними подсистемами языка, кото-
рые называются внутренними унификационными подпрограммами. Во вре-
мя выполнения программы эти подпрограммы всегда находятся в рабочем
состоянии во время выполнения программы. Вы встретите много ссылок на
них при объяснении работы элементов программ.
4.4 Методы повторения
Вспомните, что оператор внешней цели побуждает переменные полу-
чать все возможные значения одно вслед за другим. (Вы можете прочитать об
этом в гл. 2 и 3). Если полученных значений не много (скажем меньше 10),
то выдача их на экран компьютера дело несложное. Но если их число велико,
то текст на экране будет быстро
меняться. Поэтому прочитать его очень
трудно или даже невозможно.
Однако если цель является внутренней целью программы, то внутрен-
ние унификационные подпрограммы Турбо-Пролога останавливают поиск
решений после первого же успешного вычисления цели. Таким образом,
выявляется только первое решение. Другие значения, которые могут быть
присвоены переменным цели, не активизируются до тех
пор пока программа
не заставит внутренние унификационные подпрограммы повторно искать
еще имеющиеся решения. В следующих разделах вы узнаете два способа
реализации повторов в Турбо-Прологе. При программировании весьма
удобны метод отката после неудачи и метод отсечения и отката.
4.4.1 Метод отката после неудачи
В данном разделе вы увидите, как метод отката после неудачи (ОПН)
может быть использован для управления вычислением внутренней цели
при поиске всех возможных ее решений. Метод ОПН использует предикат
fail. Программа о городах (листинг 4.1) демонстрирует использование этого
предиката.
Назначение программы о городах состоит в перечислении названий
десяти городов США. Утверждение
первой подцели выдает заголовок Here
are the cities (Это названия городов). Вторая подцель является правилом
которое удовлетворяет обеим подцелям, т.е. результат вычисления под-
цели есть G=volleyball.
Откат является автоматическим инициируемым системой процессом,
если не используются средства управления им. Для управления процессом
отката в Турбо-Прологе предусмотрены два встроенных предиката fail (не-
удача) и cut (отсечение). Использование этих предикатов рассматривается
ниже в разделах, посвященных методу Отката После Неудачи (ОПН) и
методу Отсечения и Отката (ОО).
Во время выполнения программы Турбо-Пролог создает необходимые
внутренние структуры данных (такие как списки и деревья) для выполнения
обработки программы. Эта обработка включает такие процессы как поиск,
сопоставление с образцом, создание экземпляра, означивание и освобожде-
ние переменных, откаты. Вы должны вспомнить сказанное в главе 2 о
том, что эти процессы выполняются внутренними подсистемами языка, кото-
рые называются внутренними унификационными подпрограммами. Во вре-
мя выполнения программы эти подпрограммы всегда находятся в рабочем
состоянии во время выполнения программы. Вы встретите много ссылок на
них при объяснении работы элементов программ.
4.4 Методы повторения
Вспомните, что оператор внешней цели побуждает переменные полу-
чать все возможные значения одно вслед за другим. (Вы можете прочитать об
этом в гл. 2 и 3). Если полученных значений не много (скажем меньше 10),
то выдача их на экран компьютера дело несложное. Но если их число велико,
то текст на экране будет быстро меняться. Поэтому прочитать его очень
трудно или даже невозможно.
Однако если цель является внутренней целью программы, то внутрен-
ние унификационные подпрограммы Турбо-Пролога останавливают поиск
решений после первого же успешного вычисления цели. Таким образом,
выявляется только первое решение. Другие значения, которые могут быть
присвоены переменным цели, не активизируются до тех пор пока программа
не заставит внутренние унификационные подпрограммы повторно искать
еще имеющиеся решения. В следующих разделах вы узнаете два способа
реализации повторов в Турбо-Прологе. При программировании весьма
удобны метод отката после неудачи и метод отсечения и отката.
4.4.1 Метод отката после неудачи
В данном разделе вы увидите, как метод отката после неудачи (ОПН)
может быть использован для управления вычислением внутренней цели
при поиске всех возможных ее решений. Метод ОПН использует предикат
fail. Программа о городах (листинг 4.1) демонстрирует использование этого
предиката.
Назначение программы о городах состоит в перечислении названий
десяти городов США. Утверждение первой подцели выдает заголовок Here
are the cities (Это названия городов). Вторая подцель является правилом
72
Страницы
- « первая
- ‹ предыдущая
- …
- 70
- 71
- 72
- 73
- 74
- …
- следующая ›
- последняя »
