Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://www.cplire.ru/Lab144/alt/01080000.html
Дата изменения: Mon Sep 24 15:06:32 2007 Дата индексирования: Tue Oct 2 01:24:28 2012 Кодировка: IBM-866 Поисковые слова: п п п п п п п п п п п п п п п п п п п п п п п п п п |
Встроенными предикатами языка являются goal(), alarm(E), ''(Set) и element(Value,I1,...,Ik), определяемые в тексте программы, а также предопределенные предикаты:
Кроме того, в языке определены встроенные управляющие операторы, использование которых может нарушить полноту программы относительно ее декларативной семантики:
Встроенный оператор отсечения устраняет все неисследованные пути (точки выбора), которые встретились с момента начала исполнения предиката, в соответствие которому было поставлено предложение, содержащее оператор.
Результаты исполнения оператора "обращение к отладчику" должны быть определены в конкретной реализации языка.
В программе не допускается определение предикатов, имена которых совпадают с именами предопределенных предикатов и встроенных управляющих операторов. Не разрешается использование таких имен в качестве предикатных символов в акторных и дальних вызовах.
Неверное число аргументов в предопределенных предикатах и встроенных управляющих операторах является синтаксической ошибкой.
Примечание. Обозначение оператора '!' с помощью ограничителя "!" рассмотрено в разделе 6.2.
Рассмотрим поведение фрагмента программы
goal:- write("<1>"), subgoal_a, write("<7>"). goal:- write("<8>").
subgoal_a:- write("<2>"), subgoal_b, !, -- отсечение write("<4>"), fail. subgoal_a:- write("<6>").
subgoal_b:- write("<3>"). subgoal_b:- write("<5>").Если убрать оператор отсечения, программа напечатает:
<1><2><3><4><5><4><6><7>При наличии оператора отсечения будет напечатано:
<1><2><3><4><8>
Ссылки: акторный вызов 6.2, актуализация 8.2, вызов предиката 6.2, дальний вызов 6.2, исключительная ситуация 7.5, исполнение предиката 6.3.1, предложение 6, программа 4, разрушающее присваивание 8.1, унифицировать 3.3, alarm 7.5, break 7.5, copy 8.2, element 6.2.1, goal 5.4.1, ! 6.2, '' 2.1.2, ':=' 8.1, '==' 3.3.
Следующий:
8.1. КОРРЕКТНОЕ РАЗРУШАЮЩЕЕ ПРИСВАИВАНИЕ
Предыдущий:
7.5. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
8.1. КОРРЕКТНОЕ РАЗРУШАЮЩЕЕ ПРИСВАИВАНИЕ
8.2. АКТУАЛИЗАЦИЯ ПРОИЗВОДНЫХ ЗНАЧЕНИЙ
КОРНЕВАЯ СТРАНИЦА
ОГЛАВЛЕНИЕ
СПИСОК ПОНЯТИЙ ЯЗЫКА (ИНДЕКС)