Арифметические вычисления. Хотя Пролог не предназначен для решения вычислительных задач, его возможности вычислений аналогичны соответствующим возможностям таких языков программирования
Хотя Пролог не предназначен для решения вычислительных задач, его возможности вычислений аналогичны соответствующим возможностям таких языков программирования как Basic, C, Pascal.
В языке Пролог имеется ряд встроенных функций для вычисления арифметических выражений, некоторые из которых перечислены в таблице 1.
Таблица 1. Математические операции и функции в Прологе
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):-X<>Y, 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 – нечетное
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
1. Составить программу для вычисления значения выражения Y=(X2+1)/(X-2) для введенного X.
2. Составить программу для вычисления значения выражения S=2(X2+Y2)/(X+Y) для введенных X и Y.
3. Составить программу для вычисления значения выражения z=exsinx +3lnx для введенного X.
4. Составить программу для вычисления значения выражения y=ln(lg(sinx+ex))для введенного X.
5. Составить программу для вычисления среднего арифметического двух введенных чисел.
6. Составить программу для вычисления среднего геометрического двух введенных чисел.
7. Составить программу для проверки введенного натурального числа на четность.
8. Составить программу для проверки попадает ли введенное число X в заданный промежуток [a,b].
9. Составить программу для выбора наименьшего из трех введенных чисел.
10. Составить программу для выбора наибольшего из трех введенных чисел.
Отчет о выполненной самостоятельной работе должен содержать:
1) тему лабораторной работы;
2) условие задачи;
3) листинг программы;
4) результаты ее тестирования с различными исходными данными.