2.8. Средства, позволяющие работать с числовой информацией
Следит предупредить, что МикроПролог специально не ориентирован на работу c числовой информацией. У него другие области применения. Однако ряд имеющихся в Прологе встроенных арифметических функций чревычайно полезен практически во всех приложениях. Для вычисления значений арифметических выражений предназначен специализированный модуль EXPTRAN. В случае необходимости этот модуль должен быть загружен в оперативную память в дополнение к другим используемым в данный момент модулям. Существует также ряд включенных в стандартный синтаксис языка арифметических операций" которые можно использовать без подзагрузки дополнительных модулей. К ним относятся SUM, TIMES, LESS, INT и SIGN. Все они вместе в другими отношениями и командами могут быть использованы в программах, написанных на микроПрологе. Ниже дано описание этих арифметических операций, представленных в форме отношений.
SUM. Это отношение имеет вид SUM (X Y Z). Его можно интерпретировать как высказывание, которое истинно (принимает значение TRUE), если сумма X и Y равна Z, и ложно (FALSE) - во всех остальных случаях. Допускается использование целых чисел и чисел с плавающей запятой.
Например, отношения SUM (4 5 9) и SUM (0.1-1.2-1.1) истинны, а отношения SUM (5 7 22) и SUM (7.2 5.2 6.8) ложны. Покажем, как можно использовать отношение SUM.
1. Для проверки суммы в правиле программы или запросе
Пусть имеется правило
X valid if SUM (25 5 Y)
В ответ на запрос is X valid будет получено YES в случае, если Y = 30, и значение NO во всех остальных случаях.
2. Для сложения двух чисел
В результате выполнения SUM (3 5 X) переменной X будет присвоено значение 8, а в результате вычисления SUM (9 - 2 X) - значение 7.
3. Для определения разности двух чисел
В результате вычисления SUM (X 3 7) X получает значение 4, а вычисление SUM (3 X - 5) приведет к тому, что X будет равно -8.
TIMES. Это отношение можно использовать для умножения двух чисел, деления двух чисел и для проверки результата, получаемого при умножении двух чисел. Отношение представляется в виде
TIMES (X Y Z)
и принимает значение TRUE, если произведение X и Y равно Z и FALSE - во всех остальных случаях.
1. Проверка произведения
В результате проверки выражения TIMES (X 2 6) будет получен ответ TRUE, если X равен 3.
TIMES (4 7 X) дает TRUE, если X равен 28.
2. Умножение
В результате вычисления TIMES (4 5 X) X получит значение 20.
3. Деление
В результате вычисления TIMES (X 6 42) X получит значение 7. Вычисление Т1МЕС (3 X 39) приводит к тому, что X примет значение 13.,
LESS. В этом отношении используются два аргумента. LESS (X Y) примет значение TRUE, если X строго меньше, чем Y. Например, вычисление LESS (5 6) даст TRUE, в то время как вычисление LESS (5 5) - FALSE. Аргументами этого отношения также могут быть символы. Тогда сравниваются их коды. Например, ответом на запросы
is LESS (А В) и is LESS (AY AZ)
будет YES, а на запросы
is LESS (AD AC) и is LESS (& %)
будет NO.
INT. Это отношение используется для определения ближайшего к данному числу целого. Из двух возможных результатов округления выбирается тот, который ближе к нулю. Например, вычисление
which (x: 1NT (3.6 X))
приносит 3, а вычисление
which (x: INT (-3.9 X))
дает -3.
Первым аргументом отношения должно всегда быть либо число, либо выражение, результатом вычисления которого является число. Отношение INT можно использовать и для того, чтобы проверить, является ли заданное число целым.
Например, ответом на запрос
is (5 INT)
будет YES.
SIGN. Отношение имеет вид SIGN (X Y). В результате вычисления этого отношения Y будет присвоено одно из значений - 1,0 или -1 в зависимости от того, положительно, равно 0 или отрицательно X. Первым аргументом этого отношения всегда должно быть конкретное число. В результате вычисления SIGN (-2.5 Y) Y присваивается значение, равное -1. В результате выполнения SIGN (2.5 Y) Y будет равно 1.
Упражнение 2.4
Определить ответы, которые будет давать система Пролог на следующие запросы: