Несмотря на то, что Пролог рассчитан главным образом на обработку символьной информации, всегда возникает потребность в арифметических вычислениях. Рассмотрим средства для таких вычислений.
Арифметические операции. Имеются следующие арифметические операции:
bitand(А, В, Е)( Логическое И (битовое)) bitor(А, В, Е)( Логическое ИЛИ (битовое)) bitxor(А, В, Е) (Исключающее ИЛИ (битовое))bitnot (A, E)( Логическое НЕ (битовое))
bitleft (A, N, Е)( Сдвиг на N битов влево) bitright (A, N, Е)( Сдвиг на N битов вправо)
Здесь
А, В - 16-битовые операнды, Е - 16-битовый результат, N - натуральное число от 1 до 32767'.
Рассмотрим использование арифметических операций на нескольких простых примерах.
В первом примере ищется наибольший общий делитель. Если заданы два целых числа X и Y, то их наибольший общий делитель Д можно найти, используя следующие три правила.
1) Если X и Y равны, то Д равен X.
2) Если X<Y, то Д равен наибольшему общему делителю X и разности Y-X.
3) Если Y<X, то формулировка аналогична правилу 2, если X и Y поменять в нем местами.
Эти правила сформулируем в виде следующей прологовской программы, определив трехаргументное отн'ошение нод ( X, Y, Д).
/ * Программа nodvip.pro нахождения НОД */ PREDICATES
нод (integer, integer, integer)
CLAUSES
нод (X, X, X).
нод ( X, Y, Д):~ X<Y, Y1=Y-X,
% Первое правило % Второе правило нод(Х,У1,Д).
нод (X, Y, Д):- % Третье правило
Y<X, нод(У,Х,Д).
GOAL
нод (12, 24, R).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.