Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.docx
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
59.65 Кб
Скачать

11.Арифметика в тп, Арифметические функции в тп

ТП обладает теми же арифметическими возможностми, что и другие языки программирования. ТП выполняет 4 основных арифметических операции +, -, *, / над целыми и вещественными числами. Кроме того: div – целочисленное деление, mod – остаток целочисленного деления. Соотношение типов операндов и результатов опреации приведены в таблице :

Операнд 1

Оператор

Операнд 2

Рзультат

integer

+ - *

integer

integer

integer

+ - * /

real

real

real

+ - * /

integer

real

real

+ - * /

real

real

integer

/

integer

real

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

Логические операторы.

>, >=, <, <=, =, <>, ><

При сравнении строк ТП преобразует их в соответствующие символы строке коды ASCII и сравнивает их как числа.

Арифметические функции в ТП

Предикат

Описание

bitand (X, Y, Z)

X, Y, Z – целые 16-чные числа

bitor (X, Y, Z)

X, Y – числа над которыми выполняются побитовые операции

bitxor (X, Y, Z)

Z – результат

bitnot (X, Z)

bitleft (X, N, Z)

bitright(X, N, Z)

Сдвиг на N разрядов

X mod Y

Остаток от деления

X div Y

Частное от деления

abs (X)

Модуль X

cos (X)

В радианах

sin (X)

tan (X)

arctan (X), exp (X), ln (X), log (X), sqrt (X), random (X)

12.Рекурсия.Пример рекурсивного правила(вычисление факториала, возведение числа в целую степень).

Мощным средством программирования в ТП является рекурсия. Р – определение некоторого отношения через самого себя. Так как в ТП отсутствуют операторы цикла, то Р. служит основным средством программирования циклических процессов.

Пример Вычисление факториала.

domains

n, f = real

predicates

factorial (n ,f)

clauses

factorial (1, 1).

factorial (N, F):- N>0, N1=N-1, factorial (N1, F1), F=F1*N.

Программа демонстрирует другой метод вычисления факториала. Здесь рекурсивный метод заменнен на итеративный. При итеративном вычислении нет обратного хода.

predicates

factorial (integer, real)

factorial_oux (integer, real, integer, real)

clauses

factorial (N, F):- factorial_oux (N, F, 1, 1).

factorial_oux (N, F, I, P):- I<=N, NewI=I+1, NewP=P*I,

factorial_oux (N, F, NewI, NewP).

factorial_oux (N, F, I, F):- I>N.

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