4. Operadores e Aritmética
description
Transcript of 4. Operadores e Aritmética
4. Operadores e Aritmética
4. Operadores e Aritmética
Introdução à Programação Prolog 2
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))+(*(2, a), *(b, c))
+
* *
2 a b c
Em geral, entretanto, prefere-se usar a notação infixa, mais natural e que também é aceita pelo Prolog.
Introdução à Programação Prolog 3
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 4
Tipos de Operadores
-yfxfposfixos
-fyfxprefixos
yfxxfyxfxinfixos
TIPOOPERADORES
Introdução à Programação Prolog 5
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 6
Operadores Aritméticos
Em especial os operadores aritméticos mais comuns podem ser conferidos na tabela abaixo:
potenciaçãoxfy200^
resto da divisão inteira
xfx300moddivisão inteirayfx400div
divisãoyfx400/multiplicaçãoyfx400*
subtraçãoyfx500-adiçãoyfx500+
SIGNIFICADOTIPOPRIORIDADEOPERADOR
Introdução à Programação Prolog 7
Operadores is e =A diferença entre estes dois operadores deve ficar clara a partir dos exemplos a seguir:
?- X = 1+2.X = 1+2yes
?- X is 1+2.X = 3yes
?- t(X,2) = t(5,Y).X = 5, Y = 2yes
?- X is 3^2*2.X = 18yes
?- X is 3^2^2.X = 81yes
?- X is 2^2^2, Y is X^3.X = 16, Y = 4096yes
?- ...e assim por diante.
Introdução à Programação Prolog 8
Operadores de Comparação
valores diferentesxfx700=\=
valores iguaisxfx700=:=
menor ou igual axfx700=<
maior ou igual axfx700>=
menor quexfx700<
maior quexfx700>
SIGNIFICADOTIPOPRIORIDADEOPERADOR
Introdução à Programação Prolog 9
Funções Pré-definidas
Um número aleatório entre 0 e Um número aleatório entre 0 e 11
randomrandom
Valor de pi com 15 casas Valor de pi com 15 casas decimaisdecimais
pipi
Arredonda X para N casas Arredonda X para N casas decimaisdecimais
round(X,N)round(X,N)
Tangente de XTangente de Xtan(X)tan(X)
Raiz quadrada de XRaiz quadrada de Xsqrt(X)sqrt(X)
Seno de XSeno de Xsin(X)sin(X)
Logaritmo decimal de XLogaritmo decimal de Xlog(X)log(X)
Logaritmo natural de XLogaritmo natural de Xln(X)ln(X)
Valor de "e" elevado a XValor de "e" elevado a Xexp(X)exp(X)
Cosseno de XCosseno de Xcos(X)cos(X)
Arco-tangente de XArco-tangente de Xatan(X)atan(X)
Arco-seno de XArco-seno de Xasin(X)asin(X)
Arco-cosseno de XArco-cosseno de Xacos(X)acos(X)
Valor absoluto de XValor absoluto de Xabs(X)abs(X)
SIGNIFICADOSIGNIFICADOFUNÇÃOFUNÇÃO
Introdução à Programação Prolog 10
Fatorial
fatorial(0, 1).
fatorial(X, Y):- X1 is X-1,fatorial(X1,
Y1),Y is X*Y1.
Introdução à Programação Prolog 11
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).