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.
Por: Felipe Martins dos Santos
Introdução
Este artigo tem por objetivo demonstrar a instalação e funcionamento de um programa simples em Prolog. Para a demonstração é utilizado o GNU Prolog como compilador.
O GNU Prolog realiza a compilação do fonte, gerando assim código nativo, o que torna a execução mais rápida. Outros softwares para Prolog utilizam interpretação ao invés da compilação.
A linguagem Prolog, apesar de antiga, gera bastante curiosidade e é ainda bastante estudada por pesquisadores da área de Inteligência Artificial.
Instalação do compilador GNU Prolog
Para instalar o GNU Prolog basta ir no link abaixo e procurar a fonte de instalação mais adequada:Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... Para o artigo foi utilizado o arquivo gprolog-1.3.0.tar.gz.
Depois de obtido o arquivo tar.gz, basta seguir o procedimento abaixo pela linha de comando:
$ tar -zxvf gprolog-1.3.0.tar.gz
$ cd gprolog-1.3.0
$ cd src
$ ./configure
$ make
$ sudo make install
Depois de instalado basta criar seus programas em prolog e executá-los através do gprolog.
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.
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.
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.
Fonte: vivaoLinux
Postado Por: RedDeviL
Por: Felipe Martins dos Santos
Introdução
Este artigo tem por objetivo demonstrar a instalação e funcionamento de um programa simples em Prolog. Para a demonstração é utilizado o GNU Prolog como compilador.
O GNU Prolog realiza a compilação do fonte, gerando assim código nativo, o que torna a execução mais rápida. Outros softwares para Prolog utilizam interpretação ao invés da compilação.
A linguagem Prolog, apesar de antiga, gera bastante curiosidade e é ainda bastante estudada por pesquisadores da área de Inteligência Artificial.
Instalação do compilador GNU Prolog
Para instalar o GNU Prolog basta ir no link abaixo e procurar a fonte de instalação mais adequada:Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... Para o artigo foi utilizado o arquivo gprolog-1.3.0.tar.gz.
Depois de obtido o arquivo tar.gz, basta seguir o procedimento abaixo pela linha de comando:
$ tar -zxvf gprolog-1.3.0.tar.gz
$ cd gprolog-1.3.0
$ cd src
$ ./configure
$ make
$ sudo make install
Depois de instalado basta criar seus programas em prolog e executá-los através do gprolog.
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.
Código:
avo(X, Y) :- pai(X,Z),pai(Z,Y).
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.
Código:
% 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).
$ 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.
Fonte: vivaoLinux
Postado Por: RedDeviL