Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LECT_P1.DOC
Скачиваний:
22
Добавлен:
17.04.2015
Размер:
913.41 Кб
Скачать

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

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

Введение

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

+ сложение

— вычитание

* умножение

/ деление

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) преобразует целое число Х в число с плавающей точкой.

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

Арифметические операторы

Атомы +, -, *, /, mod и div - обычные атомы Пролога и могут использоваться почти в любом контексте. Указанные атомы - не встроенные предикаты, а функторы, имеющие силу только в преде­лах арифметических выражений. Они определены как инфиксные операторы. Эти атомы являются главными функторами в структуре, а сама структура может принимать только описанные выше формы.

Позиция, приоритет и ассоциативность арифметических опера­торов четко заданы и перечислены в таблице операторов в гл. 6.

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

Арифметические операторы определяются Пролог-системой. Ес­ли мы напишем предикат

среднее (X,Y,Z) :- Z is (X+Y)/2.

то хотя можно определить среднее как оператор

?- ор(250^х, среднее).

но Пролог выдаст сообщение об ошибке, если встретит выражение Z is X среднее Y.

Это произойдет потому, что Х среднее Y не образует арифметиче­ского выражения, а среднее не является арифметическим операто­ром, определенным в системе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]