4. Operadores e
Aritmética
Operadores
•
•
•
Na matemática costuma-se escrever
expressões como 2*a + b*c onde
+ e * são operadores e 2, a, b e c
são argumentos.
+
Em particular, + e * são
denominados operadores infixos
porque se localizam entre os dois
argumentos que operam.
Tais expressões são representadas
por árvores e podem ser escritas, se
for desejado, sob a forma de termos
Prolog, com os símbolos + e * como
functores:
+(*(2, a), *(b, c))
Introdução à Programação Prolog
*
2
*
a
b
c
Em geral, entretanto, prefere-se usar
a notação infixa, mais natural e que
também é aceita pelo Prolog.
2
Definição de Operadores
•
Em Prolog a definição de novos operadores é realizada pela
inserção no programa de um certo tipo especial de cláusulas,
denominadas diretivas :-op,
•
Uma diretiva :-op deve aparecer no programa antes de qualquer
expressão que contenha esse operador. Por exemplo, o operador
tem pode ser definido pela diretiva:
:-op(600, xfx, tem).
•
Isso informa ao sistema que se deseja usar tem como um
operador de prioridade 600 e cujo tipo é xfx, que designa uma
classe de operadores infixos. (Ex: joão tem informações.)
•
A forma de especificação, xfx, sugere que o operador, denotado
por f, deva ser colocado entre dois argumentos, denotados por x.
Introdução à Programação Prolog
3
Tipos de Operadores
OPERADORES
TIPO
infixos
xfx
xfy
yfx
prefixos
fx
fy
-
posfixos
xf
yf
-
Introdução à Programação Prolog
4
Operadores Pré-definidos
A linguagem Prolog já vem com diversos operadores prédefinidos. Um conjunto padrão pode ser visto abaixo:
:-op(1200, xfx, ':-').
:-op(1200, fx, [':-', '?-']).
:-op(1100, xfy, ';').
:-op(1000, xfy, ',').
:-op( 700, xfx, [is, =, \=, <, >, =<, >=, ==, =\=, \==, =:=]).
:-op( 500, yfx, [+, -]).
:-op( 500, fx, [+, -, not]).
:-op( 400, yfx, [*,/,div]).
:-op( 300, xfx, mod).
:-op( 200, xfy, ^).
Introdução à Programação Prolog
5
Operadores Aritméticos
Em especial os operadores aritméticos mais comuns podem ser
conferidos na tabela abaixo:
OPERADOR
PRIORIDADE
TIPO
SIGNIFICADO
+
*
/
div
mod
500
500
400
400
400
300
yfx
yfx
yfx
yfx
yfx
xfx
adição
subtração
multiplicação
divisão
divisão inteira
resto da divisão inteira
^
200
xfy
potenciação
Introdução à Programação Prolog
6
Operadores is e =
A diferença entre estes
dois operadores deve
ficar clara a partir dos
exemplos a seguir:
?- X = 1+2.
X = 1+2
yes
?- X is 1+2.
X=3
yes
?- t(X,2) = t(5,Y).
X = 5, Y = 2
yes
Introdução à Programação Prolog
?- X is 3^2*2.
X = 18
yes
?- X is 3^2^2.
X = 81
yes
?- X is 2^2^2, Y is X^3.
X = 16, Y = 4096
yes
?- ...e assim por diante.
7
Operadores de Comparação
OPERADOR
PRIORIDADE
TIPO
SIGNIFICADO
>
700
xfx
maior que
<
700
xfx
menor que
>=
700
xfx
maior ou igual a
=<
700
xfx
menor ou igual a
=:=
700
xfx
valores iguais
=\=
700
xfx
valores diferentes
Introdução à Programação Prolog
8
Funções Pré-definidas
Introdução à Programação Prolog
FUNÇÃO
SIGNIFICADO
abs(X)
Valor absoluto de X
acos(X)
Arco-cosseno de X
asin(X)
Arco-seno de X
atan(X)
Arco-tangente de X
cos(X)
Cosseno de X
exp(X)
Valor de "e" elevado a X
ln(X)
Logaritmo natural de X
log(X)
Logaritmo decimal de X
sin(X)
Seno de X
sqrt(X)
Raiz quadrada de X
tan(X)
Tangente de X
round(X,N)
Arredonda X para N casas decimais
pi
Valor de pi com 15 casas decimais
random
Um número aleatório entre 0 e 1
9
Fatorial
fatorial(0, 1).
fatorial(X, Y):X1 is X-1,
fatorial(X1, Y1),
Y is X*Y1.
Introdução à Programação Prolog
10
Máximo Divisor Comum
mdc(X, X, X).
mdc(X, Y, D) :X < Y,
Y1 is Y-X,
mdc(X, Y1, D).
mdc(X, Y, D) :X > Y,
mdc(Y, X, D).
Introdução à Programação Prolog
11
Download

4. Operadores e Aritmética