A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aritmética Em Prolog podemos fazer uso de operadores aritméticos não lógicos pré-definidos pelo sistema, como por exemplo >, >=, +, *, -, etc. A interrogação.

Apresentações semelhantes


Apresentação em tema: "Aritmética Em Prolog podemos fazer uso de operadores aritméticos não lógicos pré-definidos pelo sistema, como por exemplo >, >=, +, *, -, etc. A interrogação."— Transcrição da apresentação:

1 Aritmética Em Prolog podemos fazer uso de operadores aritméticos não lógicos pré-definidos pelo sistema, como por exemplo >, >=, +, *, -, etc. A interrogação ?5<7 tem como resposta yes Esta faceta mostra uma componente não lógica do Prolog que é o seu processador de expressões aritméticas. Lógica para Programação

2 Aritmética & Lógica Assim temos, as seguintes funções cujos argumentos são expressões aritméticas: X+Y X-Y X/Y X//Y -X X mod Y X rem Y exp(X) log(X) X^Y sqrt(X) sin(X) cos(X) tan(X) floor(X) ceil(X) log10(X) Predicados aritméticos (X e Y são expressões aritméticas, Z é um termo) Z is X X é avaliado e o resultado é unificado com Z X =:= Y é verdadeiro se os valores de X e Y são iguais X =\= Y é verdadeiro se os valores de X e Y são diferentes Lógica para Programação

3 Avaliador de expressões aritméticas is
O interpretador de Prolog possui um processador de expressões que é invocado com interrogações da forma: Variável is expressão O predicado is denomina o avaliador aritmético. A interrogação pode ser lida como “Variável toma o valor do resultado de expressão”. Ou seja expressão é processada como uma expressão aritmética e o seu resultado é unificado com Variável. A interrogação tem ou não sucesso de acordo com o resultado desta unificação. Lógica para Programação

4 Avaliador de expressões aritméticas
O operador = denomina unificação explicita. Corresponde à igualdade de termos, provocando a instanciação das variáveis envolvidas. Não provoca o processamento da expressão. Por exemplo se tivermos Z = 5 + 3 Z é substituido por 5+3 e não por 8. A interrogação ?Y=3, X is 5 + Y. tem como resultado Y=3 , X=8. Lógica para Programação

5 Avaliador de expressões aritméticas
No entanto podemos ter situações de erro se a expressão a calcular não for totalmente instanciada. Por exemplo ?Y=X+3, Z is Y+1, X=5. Neste exemplo a primeira unificação é perfeitamente válida. É possível unificar uma variável com uma expressão. No entanto não é possível calcular uma expressão aritmética com variáveis não instanciadas. Neste exemplo o Prolog interrompe a computação e produz uma mensagem de erro. A expressão ? Y=X+3, X=5, Z is Y+1. já não levanta problemas. Lógica para Programação

6 Avaliador de expressões aritméticas Exemplo
fact(0,1). fact(X,Z):- W is X-1, W>=0, fact(W,Y), Z is X*Y. De notar que interrogações do tipo ?fact(X, 2). dão origem a mensagens de erro e consequente paragem da execução. Porquê? Lógica para Programação

7 Expressões aritméticas
O operador Z =:= 3+Y compara apenas o resultado do processamento de Z e de 3+Y, o que implica que tenham que ser expressões aritméticas. Não provoca instanciação de variáveis. Lógica para Programação

8 OPERADORES DE COMPARAÇÃO
As expressões de comparação de expressões aritméticas são construídas com os operadores usuais de comparação para números inteiros e reais: > (maior do que), < (menor do que), >= (maior ou igual do que), =< (menor ou igual do que), =:= (igual a) e =\= (diferente de); que estão usualmente pré-definidos nas implementações do PROLOG. A avaliação de qualquer operador de comparação é produzida após a avaliação (completa) dos respectivos operandos e.g. na expressão 5 * 2 > X + 1 são, primeiramente, avaliadas as expressões 5 * 2 e X + 1 (o que só é possível após a instânciação de X) e, depois, é avaliada a expressão de comparação). Lógica para Programação

9 OPERADORES DE COMPARAÇÃO
Na comparação =:= (igual a) as expressões (aritméticas) à esquerda e direita do operador são avaliadas antes da avaliação da comparação Na comparação = são comparadas as estruturas dos termos (não necessariamente expressões aritméticas) à esquerda e direita do operador. Por exemplo ?  =:= yes ?  = no ?  1 + A = B + 2. A = 2 B = 1; Lógica para Programação

10 Exemplo (máximo divisor comum)
O máximo divisor comum Z de dois inteiros X e Y é obtido da seguinte forma (Algoritmo de Euclides): se X = Y então Z = X; se X < Y então Z é igual ao máximo divisor comum entre X e Y – X; se Y < X então Z é igual ao máximo divisor comum entre X e X – Y (ou o máximo divisor comum entre Y e X). mdc(X,X,X). mdc(X,Y,Z) : X < Y, Y1 is Y – X, mdc(X,Y1,Z). mdc(X,Y,Z) : Y < X, Y1 is X – Y, mdc(Y1,Y,Z). (ou Y < X, mdc(Y,X,Z)). Lógica para Programação


Carregar ppt "Aritmética Em Prolog podemos fazer uso de operadores aritméticos não lógicos pré-definidos pelo sistema, como por exemplo >, >=, +, *, -, etc. A interrogação."

Apresentações semelhantes


Anúncios Google