Prolog/Introdução ao Prolog
Instalação
editarEsta seção descreve os interpretadores prolog.
- SWI Prolog
- GNU Prolog
- Visual Prolog
SWI Prolog
editarPara instalar o interpretador SWI Prolog, seguir os passos descritos na página http://www.swi-prolog.org.
Em sistemas Linux que usam o yum, basta comandar (usando a conta root):
yum -y install pl
Em sistemas Linux que usam o apt-get, basta digitar (usando a conta root):
apt-get install swi-prolog
O interpretador é invocado através da linha de comando, com o comando
pl
ou, em algumas versões, com o comando:
swipl
ou ainda com o comando:
prolog
Para se obter ajuda, com o prolog rodando, pode-se digitar
help(topico).
ou
apropos(topico).
Para sair do interpretador, comandar:
halt.
Ou pressionar Ctrl+D.
Primeiros passos
editarDepois de feita a instalação do interpretador prolog e de um editor de texto qualquer, o próximo passo é escrever um programa e carregá-lo no interpretador.
Crie, no editor de texto, um arquivo com a linha seguinte:
humano(pedro).
Em prolog, maiúsculas e minúsculas são diferentes; o texto acima deve estar todo em minúsculas, e deve terminar em um ponto. Salve este arquivo com um nome qualquer (por exemplo, prolog1.pl ou prolog'.pro; não existe uma extensão de arquivo padrão para prolog, .pl é usado para perl e .pro é usado para projetos em Qt).
Entre no interpretador prolog (por exemplo, no Linux, para usar SWI Prolog, escreva pl na linha de comandos). O interpretador apresentará alguma mensagem de inicialização, e o prompt
?-
Isso indica que ele está esperando receber algum comando.
Entre então com:
consult('prolog1.pl').
(ou 'prolog1.pro', ou o nome que você deu para o arquivo; de novo, entre tudo em minúsculas e não se esqueça do ponto final).
Para verificar se tudo está correto, entre agora com:
humano(pedro).
e o interpretador responderá Yes.
Outros comandos:
humano(spock).
que será respondido com No.
Para descobrir quais foram os objetos que foram definidos por humano(X), entrar com:
humano(X).
que será respondido com X = pedro, mas com um comportamento diferente: o interpretador parece estar esperando alguma coisa. Se, agora, for digitado um return, a resposta é Yes e o prompt ?- volta a aparecer. Se for digitado ;, a resposta é No, seguido do mesmo prompt ?-
Este comportamento misterioso será explicado abaixo. Por enquanto, basta dizer que parâmetros que começam com maiúsculas são tratados como variáveis, então humano(X). tem o sentido de sair enumerando tudo aquilo que foi definido como humano. Ao digitar return, a procura termina (tendo tido sucesso), ao digitar ;, a procura continua, e, como não existe outro humano, a resposta é No.
Para sair do interpretador, entrar com:
halt.