Compilador GNU Prolog

Este artigo tem por objetivo demonstrar a instalação e funcionamento de um programa simples em Prolog utilizando o GNU Prolog como compilador. O GNU Prolog realiza a compilação do código-fonte, gerando código nativo, o que torna a execução mais rápida. Outros softwares para Prolog utilizam interpretação ao invés de compilação.

[ Hits: 30.779 ]

Por: Felipe Martins dos Santos em 13/11/2008 | Blog: http://www.ime.usp.br/~fmsantos


Primeiro exemplo



O código abaixo é bastante comum no aprendizado da linguagem Prolog. Ele aborda algumas relações familiares. As linhas iniciadas pela palavra "pai", "mae" e "avo" mostram predicados. Os predicados simbolizam as relações.

Os predicados abaixo recebem dois parâmetros. No exemplo abaixo utilizamos a notação:
  • pai (A, B), quando o pai de A é B.
  • mae (A, B), quando a mãe de A é B.
  • avo (X, Y), quando o avô de X é Y.

O predicado avo foi criado com as definições de pai e mae.

A linha abaixo pode ser lida como: Avô de X é Y se Pai de X é Z e Pai de Z é Y.

avo(X, Y) :- pai(X,Z),pai(Z,Y).

Parâmetros iniciados com letra minúscula são chamados de constantes (ex: pessoaA, pessoaB, pessoaC) são todos constantes.

Parâmetros iniciados com letra maiúscula (ex: X, Y, Z) são variáveis. Através das variáveis o prolog buscará soluções.

A busca realizada pelo prolog será feita através dos fatos e regras existentes. Os fatos são aqueles predicados que possuem apenas constantes. Regras possuem variáveis.

% Fatos %
pai(pessoaA, pessoaB).
pai(pessoaB, pessoaC).
pai(pessoaD, pessoaE).
mae(pessoaA, pessoaD).

% Regras %
avo(X, Y) :- pai(X,Z),pai(Z,Y).
avo(X, Y) :- mae(X,Z),pai(Z,Y).

Salve as linhas de código acima em um arquivo chamado artigo01.pl. Em seguida, execute o gprolog com o comando:

gprolog

A saída será:

Dados do software
| ?-

Digite então:

consult('LocalizacaoDoArquivo/artigo01.pl').

ou vá até o diretório de localização do arquivo antes de executar o comando gprolog.

Depois, basta digitar:

consult('artigo01.pl').

Para ver o funcionamento do programa será necessário realizar consultas. As consultas em prolog podem ser feitas de diversas maneiras. Por exemplo:

pai(pessoaA, X).

Resultaria em:

X = pessoaB, já que esse foi o fato passado ao compilador.

avo(X, Y).

Retornaria os resultados em que foi comprovado pela busca do prolog que "avo de X é Y". No caso, os dados retornados seriam:

(avô paterno)

X = pessoaC,
Y = pessoaA

; (ou)

(avo materno)

X = pessoaA
Y = pessoaE

Outras consultas resultam em Yes ou No. Por exemplo:

pai(pessoaA, pessoaB).

Como isso é um fato, a resposta seria Yes.

Com isso, concluímos o primeiro exemplo.

Conclusão e agradecimentos

É interessante programar em diferentes paradigmas, creio que agrega bastante na bagagem dos programadores. Verdade que sempre buscamos os algoritmos como base para a programação, mas com os diferentes paradigmas as maneiras de se alcançar a solução podem variar bastante, forçando o programador a pensar de maneiras diferentes.

Foi uma experiência boa ter colocado este artigo aqui, já que foi meu primeiro. Aprendi fazendo o artigo e espero que tenha agregado a quem for utilizá-lo também.

Por hoje é só.

Espero que tenham gostado.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Primeiro exemplo
Outros artigos deste autor

LaTex no Fedora 20 - Instalação via YUM

Reprodução de arquivos WAV com SDL_mixer e linguagem C

Blender Game Engine: Uma introdução

Leitura recomendada

CruxPorts4Slack - O ports para Slackware

Criando sites para intranet e trabalhos em equipe com o DokuWiki

Lendo formatos EPUB no Kindle com o Calibre

Como instalar o CONKY-colors no Ubuntu 12.10

Mono e C# (parte 2)

  
Comentários
[1] Comentário enviado por jonathanjgs em 05/10/2018 - 20:01h

Ajudo bastante amigo!
Agradeço por compartilhar o conheciento.


Contribuir com comentário