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

UptoLike

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

126
так как термы не отождествимы (оператор не вычисляет значения своих
аргументов), но попытка доказать
?-строка(поз(Х)) -строка(поз(23)).
закончится успехом при
Х=23.
Унификация часто используется для доступа к подкомпонентам
термов. Так, в вышеприведенном примере
Х
конкретизируется первой
компонентой терма
поз(23)
, который в свою очередь является компонентой
терма строка.
Бывают случаи, когда надо проверить, идентичны ли два терма.
Выполнение оператора
= =
заканчивается успехом, если его аргументы
идентичные термы. Следовательно, запрос
?-строка(поз(Х)) --строка(поз (23)).
дает ответ
нет
, поскольку подтерм Х в левой части (X свободная
переменная) не идентичен подтерму
23
в правой части, Однако запрос
?- строка (поз (23)) --строка(поз (23)).
дает ответ
да.
Отрицания операторов
=
и
- =
записываются как
\= и \= =
соответственно.
14.6 Выражения
В этой части показано, каким образом Пролог выполняет
арифметические операции. Будут описаны арифметические операторы и их
использование в выражениях, а также рассмотрены встроенные предикаты,
служащие для вычисления и сравнения арифметических выражений.
Язык Пролог не предназначен для программирования задач с большим
количеством арифметических операций. Для этого используются
процедурные языки программирования. Однако в любую Пролог-систему
включаются все обычные арифметические операторы:
+
сложение,
вычитание,
*
умножение,
/
деление,
mod
остаток от деления целых чисел,
div
целочисленное деление.
В некоторых реализациях языка Пролог присутствует более широкий
набор встроенных арифметических операторов.
так как термы не отождествимы (оператор не вычисляет значения своих
аргументов), но попытка доказать
     ?-строка(поз(Х)) -строка(поз(23)).
закончится успехом при
     Х=23.
     Унификация часто используется для доступа к подкомпонентам
термов. Так, в вышеприведенном примере Х конкретизируется первой
компонентой терма поз(23), который в свою очередь является компонентой
терма строка.
     Бывают случаи, когда надо проверить, идентичны ли два терма.
Выполнение оператора = = заканчивается успехом, если его аргументы —
идентичные термы. Следовательно, запрос
     ?-строка(поз(Х)) --строка(поз (23)).
дает ответ нет, поскольку подтерм Х в левой части (X — свободная
переменная) не идентичен подтерму 23 в правой части, Однако запрос
     ?- строка (поз (23)) --строка(поз (23)).
дает ответ да.
     Отрицания операторов = и - = записываются как \= и \= =
соответственно.

                              14.6 Выражения

     В этой части показано, каким образом Пролог выполняет
арифметические операции. Будут описаны арифметические операторы и их
использование в выражениях, а также рассмотрены встроенные предикаты,
служащие для вычисления и сравнения арифметических выражений.
     Язык Пролог не предназначен для программирования задач с большим
количеством арифметических операций. Для этого используются
процедурные языки программирования. Однако в любую Пролог-систему
включаются все обычные арифметические операторы:
     +           сложение,
     —           вычитание,
     *           умножение,
     /           деление,
     mod         остаток от деления целых чисел,
     div         целочисленное деление.
     В некоторых реализациях языка Пролог присутствует более широкий
набор встроенных арифметических операторов.

                                      126