Арифметические выражения

Введение

Арифметические выражения

В этой главе показано, каким образом Пролог выполняет ариф­метические операции. Будут описаны арифметические операторы и их использование в выражениях, а также рассмотрены встроенные предикаты, служащие для вычисления и сравнения арифметических выражений.

Язык Пролог не предназначен для программирования задач с большим количеством арифметических операций. Для этого ис­пользуются процедурные языки программирования. Однако в лю­бую Пролог-систему включаются все обычные арифметические операторы:

+ сложение

— вычитание

* умножение

/ деление

mod остаток от деления целых чисел

div целочисленное деление

В некоторых реализациях языка Пролог присутствует более ши­рокий набор встроенных арифметических операторов.

Пролог позволяет также сравнивать арифметические выраже­ния, используя следующие встроенные предикаты:

Диапазоны чисел, входящих в арифметические выражения, за­висят от реализации Пролога. Например, система ICLPROLOG опе­рирует с целыми числами со знаком в диапазоне

–8388606 ... 8388607

Арифметическое выражение является числом или структурой. В структуру может входить одна или более компонент, таких, как чис­ла, арифметические операторы, арифметические списковые выраже­ния, переменная, конкретизированная арифметическим выражени­ем, унарные функторы, функторы преобразования и арифметиче­ские функторы.

Числа. Числа и их диапазоны определяются в конкретной реали­зации Пролога.

Арифметические операторы. + - * / mod div

Арифметические списковые выражения. Если Х - арифметиче­ское выражение, то список [X ] также является арифметическим вы­ражением, например [1,2,3]. Первый элемент списка используется как операнд в выражении. Скажем,

X is ([l,2,3]+5)

имеет значение 6.

Арифметические списковые выражения полезны и при обработке символов, поскольку последние могут рассматриваться как неболь­шие целые числа. Например, символ "а" эквивалентен [97 ] и, буду­чи использован в выражении, вычисляется как 97. Поэтому значение выражения «р»+"А"-"а" равно 80, что соответствует коду ASCII для «Р».

Переменная, конкретизированная арифметическим выражени­ем. Примеры:

Х-5+2 и У-3*(2+А)

Унарные функторы. Примеры:

+(Х) и -(У)

Функторы преобразования. В некоторых реализациях Пролога имеется арифметика с плавающей точкой, а следовательно, и функ­торы преобразования. Например:

float (X) преобразует целое число Х в число с плавающей точкой.

Математические функторы. Пример: квадрат(Х) объявлен как оператор и эквивалентен арифметическому выражению(Х*Х).