Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Compilador GNU Prolog

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

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

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

X
Working...
X