Хотя Пролог не предназначен для решения вычислительных задач, его возможности вычислений аналогичны соответствующим возможностям таких языков программирования как Basic, C, Pascal.
В языке Пролог имеется ряд встроенных функций для вычисления арифметических выражений, некоторые из которых перечислены в таблице.
Математические операции и функции в Прологе.
|
X + Y. | Сумма X и Y. |
X — Y. | Разность X и Y. |
X * Y. | Произведение X и Y. |
X / Y. | Деление X на Y. |
X mod Y. | Остаток от деления X на Y. |
X div Y. | Целочисленное деление X на Y. |
abs (X). | Абсолютная величина числа X. |
sqrt (X). | Квадратный корень из X. |
random (X). | Случайное число в диапазоне от 0 до 1. |
random (Int, X). | Случайное целое число в диапазоне от 0 до Int. |
round (X). | Округление Х. |
trunc (X). | Целая часть Х. |
sin (X). | Синус X. |
cos (X). | Косинус X. |
arctan (X). | Арктангенс Х. |
tan (X). | Тангенс X. |
ln (X). | Натуральный логарифм X. |
log (X). | Логарифм Х по основанию 10. |
Пример 1.
Вычислить значение выражения Z=(2*X+Y)/(X-Y) для введенных X и Y.
Решение:
PREDICATES.
знач_выраж (real, real).
CLAUSES.
знач_выраж (X, Y):-XY, Z=(2*X+Y)/(X-Y),.
write («Z=», Z);
write («Делить на 0 нельзя!»).
GOAL.
Write («X=»), readreal (X),.
Write («Y=»), readreal (Y), знач_выраж (X, Y), nl.
Комментарий: readreal — предикат для ввода действительных чисел Результат выполнения программы:
1-й случай:
X=4.
Y=4.
Делить на 0 нельзя!
2-й случай:
X=5.
Y=2.
Z=4.
Пример 2.
Найти минимальное из двух введенных A и B.
Решение:
PREDICATES.
min (integer, integer, integer).
CLAUSES.
min (A, B, A):-A<=B,!.
min (A, B, B).
GOAL.
Write («A=»), readreal (A), Write (" B="), readreal (B),.
min (A, B, Min), write («min=», Min), nl.
Результат выполнения программы:
1-й случай:
A=5.
B=17.
min=5.
2-й случай:
A=35.
B=18.
min=18.
3-й случай:
A=8.
B=8.
min=8.
Пример 3.
Определить, является четным или нечетным случайным образом выбранное число от 0 до 20.
Решение:
PREDICATES.
chet.
CLAUSES.
chet:-random (20,X), write (X), X mod 2=0,.
write («- четное»),!.
chet:-write («- нечетное»).
GOAL.
chet.
Результат выполнения программы:
- 1-й случай:
- 6 — четное
- 2-й случай:
- 19 — нечетное