Operadores e Entrada/Saída em Prolog

Enviado por Anônimo e classificado em Computação

Escrito em em português com um tamanho de 3,17 KB

Operadores em Prolog

Podemos utilizar operadores para construir regras ainda mais específicas em Prolog. Existem tanto os operadores relacionais quanto os aritméticos.

Operadores Relacionais

Entre os operadores relacionais, temos:

  • Igualdade: =
  • Diferença: \= (em alguns compiladores, o operador de diferença é <>)
  • Menor que: <
  • Maior que: >
  • Menor ou igual: =< (alguns compiladores seguem a versão >=)
  • Maior ou igual: >=

Exemplo com Operadores Relacionais

Vamos construir um pequeno exemplo com operadores relacionais para verificar se o número passado é positivo ou negativo.

Para isso, construiremos a seguinte regra:

positivo(numero) :- numero > 0.

Em seguida, realizaremos uma consulta:

?- positivo(2).

Que retornará "Yes".

Operadores Aritméticos

Agora, vamos aos operadores aritméticos. São eles:

+, -, *, /, mod, is.

O operador mod é utilizado quando quisermos obter o módulo, e o operador is é utilizado para obtermos um resultado.

Exemplo com Operadores Aritméticos

Verifique a seguinte regra:

o_dobro(Numero,Result) :- Result is Numero * 2.

Realizaremos a consulta:

?- o_dobro(5,X).

Obteremos o resultado:

X = 10

É importante lembrar que uma variável terá que receber o valor da operação aritmética através do operador is.

Entrada e Saída em Prolog

Já vimos como atribuir fatos, como construir regras e fazer consultas sobre elas, mas tudo que recebemos como retorno foi um "Yes" ou "No". Assim como nas outras linguagens, o Prolog também possui propriedades de entrada e saída de dados, que são read() e write().

Exemplo de Entrada e Saída

Vamos ver um pequeno exemplo:

ola :- read(X), write("Olá "), write(X).

Faremos a chamada:

?- ola. "Luciano".

Note que a regra não possui nenhum parâmetro, portanto, colocamos apenas o nome da regra sem atributos, e em seguida o dado a ser lido pelo comando read(X), lembrando que cada instrução sempre é finalizada com um ponto (.).

É importante ressaltar que dados equivalentes ao tipo String de outras linguagens devem sempre ser utilizados entre aspas simples (átomos). Caso contrário, quando digitássemos o nome "Luciano", o compilador iria aceitar a entrada como uma variável não alocada e imprimiria um valor estranho na saída.

Read more: http://www.linhadecodigo.com.br/artigo/1697/descobrindo-o-prolog.aspx#ixzz27cGOblDq

Entradas relacionadas: