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