Prolog/Introdução ao Prolog

Origem: Wikilivros, livros abertos por um mundo aberto.

Instalação[editar | editar código-fonte]

Esta seção descreve os interpretadores prolog.

  • SWI Prolog
  • GNU Prolog
  • Visual Prolog

SWI Prolog[editar | editar código-fonte]

Para 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[editar | editar código-fonte]

Depois 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.