Интеллектуальные информационные системы. Макаренко С.И. - 129 стр.

UptoLike

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

128
Эти атомы являются главными функторами в структуре, а сама структура
может принимать только описанные выше формы.
Арифметический оператор выполняется следующим образом. Во-
первых, вычисляются арифметические выражения по обе стороны оператора.
Во-вторых, над результатом вычислений выполняется нужная операция.
Арифметические операторы определяются Пролог-системой. Если мы
напишем предикат
среднее(X,Y,Z) :- Z is (X+Y)/2
.
то, хотя можно определить среднее как оператор,
?- ор(250^х, среднее)
.
но Пролог выдаст сообщение об ошибке, если встретит выражение
Z is X среднее Y.
Это произойдет потому, что
Х
среднее
Y
не образует арифметического
выражения, а среднее не является арифметическим оператором,
определенным в системе.
14.6.3 Вычисление арифметических выражений
В Прологе не допускаются присваивания вида
Сумма=2+4
.
Выражение такого типа вычисляется только с помощью системного
предиката
is
, например:
Сумма is 2+4
.
Предикат
is
определен как инфиксный оператор. Его левый аргумент
или число, или неконкретизированная переменная, а правый аргумент
арифметическое выражение.
Попытка доказательства целевого утверждения
Х is Y
заканчивается
успехом в одном из следующих случаев:
-
Х
неконкретизированная переменная, а результат вычисления
выражения
Y
есть число;
-
Х
число, которое равно результату вычисления выражения
Y
.
Цель
Х is Y
не имеет побочных эффектов и не может быть
согласована вновь. Если Х не является неконкретизированной
переменной или числом либо если Y не арифметическое
выражение, возникает ошибка.
Примеры:
D is 10-5
- заканчивается успехом и D становится равным 5,
4 is 2*4-4
- заканчивается успехом,
Эти атомы являются главными функторами в структуре, а сама структура
может принимать только описанные выше формы.
     Арифметический оператор выполняется следующим образом. Во-
первых, вычисляются арифметические выражения по обе стороны оператора.
Во-вторых, над результатом вычислений выполняется нужная операция.
     Арифметические операторы определяются Пролог-системой. Если мы
напишем предикат
     среднее(X,Y,Z) :- Z is (X+Y)/2.
то, хотя можно определить среднее как оператор,
     ?- ор(250^х, среднее).
но Пролог выдаст сообщение об ошибке, если встретит выражение
     Z is X среднее Y.
     Это произойдет потому, что Х среднее Y не образует арифметического
выражения, а среднее не является арифметическим оператором,
определенным в системе.

            14.6.3 Вычисление арифметических выражений

     В Прологе не допускаются присваивания вида Сумма=2+4.
     Выражение такого типа вычисляется только с помощью системного
предиката is, например:
     Сумма is 2+4.
     Предикат is определен как инфиксный оператор. Его левый аргумент
— или число, или неконкретизированная переменная, а правый аргумент —
арифметическое выражение.
     Попытка доказательства целевого утверждения Х is Y заканчивается
успехом в одном из следующих случаев:
     - Х — неконкретизированная переменная, а результат вычисления
       выражения Y есть число;
     - Х — число, которое равно результату вычисления выражения Y.
       Цель Х is Y не имеет побочных эффектов и не может быть
       согласована вновь. Если Х не является неконкретизированной
       переменной или числом либо если Y — не арифметическое
       выражение, возникает ошибка.
     Примеры:
     D is 10-5       - заканчивается успехом и D становится равным 5,
     4 is 2*4-4      - заканчивается успехом,


                                   128