110 likes | 211 Views
4. Operadores e Aritmética. +. *. *. 2. a. b. c. 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.
E N D
+ * * 2 a b c Operadores • Na matemática costuma-se escrever expressões como2*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)) Em geral, entretanto, prefere-se usar a notação infixa, mais natural e que também é aceita pelo Prolog. Introdução à Programação Prolog
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 tempode ser definido pela diretiva: :-op(600, xfx, tem). • Isso informa ao sistema que se deseja usar temcomo 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
OPERADORES TIPO infixos xfx xfy yfx prefixos fx fy - posfixos xf yf - Tipos de Operadores Introdução à Programação Prolog
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
OPERADOR PRIORIDADE TIPO SIGNIFICADO + 500 yfx adição - 500 yfx subtração * 400 yfx multiplicação / 400 yfx divisão div 400 yfx divisão inteira mod 300 xfx resto da divisão inteira ^ 200 xfy potenciação Operadores Aritméticos Em especial os operadores aritméticos mais comuns podem ser conferidos na tabela abaixo: Introdução à Programação Prolog
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
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 Operadores de Comparação 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 Funções Pré-definidas Introdução à Programação Prolog
Fatorial fatorial(0, 1). fatorial(X, Y):- X1 is X-1, fatorial(X1, Y1), Y is X*Y1. Introdução à Programação Prolog
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