quarta-feira, 18 de junho de 2008

Quer aprender Prolog?

Prolog e Programação em Lógica



Material sobre Prolog na Página do COCA

Apostila Prolog UFCG
Livro de Prolog - Prof. Eloi Favero
Lógica para Computação, Celso Kaestner
Programação em Lógica - Lucilia Figueiredo
Aula sobre Prolog
Programação Declarativa
Lógica - Implementando algoritmos lógicos PROLOG(swi Prolog) - pogMasters.net v.0.1
Prolog Aplicações Avançadas
Prolog Tutorials
Prolog Guide - Prolog in Examples
Prolog Guide - Prolog in Examples
Guide to Prolog Programming


Sobre Testes de Unidades em Prolog (Prolog Unit Tests)

Como instalar o SWI-Prolog 5.6.55com Unit Tests no Ubuntu 8.04
    Executar os comandos abaixo:
        wget  http://gollem.science.uva.nl/cgi-bin/nph-download/SWI-Prolog/binaries/pl-5.6.55-322.i586.rpm
sudo apt-get install alien
        sudo alien -d pl-5.6.55-322.i586.rpm
        sudo apt-get install swi-prolog
        sudo apt-get remove swi-prolog
        sudo dpkg -i pl_5.6.55-322_i386.deb



Atualização em 27/06/2015:
Links quebrados:

Tutorial sobre Prolog ``Programming in Logic'' (Programando em Lógica) - Prof. Claudio Sá - EM HTML
Tutorial de Prolog ``Programming in Logic'' (Programando em Lógica)
Tutorial sobre Prolog ``Programming in Logic'' (Programando em Lógica) - - Prof. Claudio Sá - EM PDF

3 comentários:

  1. Prezado amigo, li a sua dica sobre como instalar o Prolog no Ubuntu. Vou tentar um um netbook Acer Aspire One, com processador Intel Atom e 160GB de HD. A primeira tentativa falhou porque o site da gollem estava temporariamente "fora do ar".
    Agora, diz uma coisa, neste pacote está incluído o guitracer, isto é, a interface gráfica de visualização do trace?
    HJM

    ResponderExcluir
  2. Caro Herli, infelizmente, no Linux, que eu saiba, não tem guitracer...

    ResponderExcluir
  3. oi amigo tenho um problema em prolog para resolver e estou com muita dificuldade e preciso de ajuda aqui vai


    1. Analise o seguinte trecho, extraído do livro “Harry Potter e a Pedra Filosofal”, de
    J.K.Rowling, editora Rocco, 2000.
    “Harry abriu a porta seguinte, os dois mal se atreviam a olhar o que vinha a seguir, mas não havia nada
    muito assustador ali, apenas uma mesa e sobre ela sete garrafas de formatos diferentes.
    — É o de Snape — disse Harry. — O que temos de fazer?
    Ao cruzarem a soleira da porta, imediatamente irromperam chamas atrás deles. E não eram chamas
    comuns tampouco, eram roxas. Ao mesmo tempo, surgiam chamas pretas na porta adiante. Estavam
    encurralados.
    — Olhe! — Hermione apanhou um rolo de papel que havia ao lado das garrafas. Harry espiou por cima
    do seu ombro para ler o papel:
    O perigo o aguarda à frente, a segurança ficou atrás,
    Duas de nós o ajudaremos no que quer encontrar,
    Uma das sete te deixará prosseguir,
    A outra levará de volta quem a beber,
    Duas de nós conterão vinho de urtigas;
    Três de nós aguardam em fila para o matar,
    Escolha, ou ficará aqui para sempre,
    E para ajudá-lo, lhe damos quatro pistas:
    Primeira, por mais dissimulado que seja o veneno,
    Você sempre encontrará um à esquerda de um vinho
    de urtigas;
    Segunda, são diferentes as garrafas de cada
    extremidade,
    Mas se você quiser avançar nenhuma é sua amiga;
    Terceira, é visível que temos tamanhos diferentes,
    Nem anã nem giganta leva a morte no bojo;
    Quarta, a segunda à esquerda e a segunda à direita
    São gêmeas ao paladar, embora diferentes à vista.
    Hermione deixou escapar um grande suspiro e Harry, perplexo, viu que ela sorria, a última coisa que ele
    tinha vontade de fazer.
    — Genial — disse — Isto não é mágica, é lógica...”
    Ajude Harry e Hermione a impedir o Lorde das Trevas de voltar ao poder. Escreva um
    programa em Prolog que resolva a charada de lógica acima e decida qual garrafa Harry deve
    beber para seguir adiante.
    Dica 1: Represente as 7 garrafas em uma lista. O seguintes predicados podem ajudar:
    % Encontra uma permutação em uma lista
    permutacao([],[]).
    permutacao(L,[X|P]) :- apaga(X,L,L1), permutacao(L1,P).
    apaga(X,[X|L],L).
    apaga(X,[Y|L],[Y|L1]) :- apaga(X,L,L1).
    % Encontra o índice de um dado elemento em uma lista
    indice(X, [X|_], 0) :- !.
    indice(X, [_|L], N) :- indice(X, L, N1), N is N1 + 1.
    % Encontra o elemento em uma dada posição da lista
    elemento(X, [X|_], 0) :- !.
    elemento(X, [_|L], N) :- N1 is N - 1, elemento(X, L, N1).
    % Retorna uma sublista a partir de uma posição fornecida
    % Este predicado pode ser útil para implementar a recursividade na primeira
    % pista, já que nela você vai precisar testar as posições de toda ocorrência
    % de uma garrafa de vinho de urtigas.
    sublista(L, 0, L) :- !.
    sublista([_|L1], N, L2) :- N1 is N - 1, sublista(L1, N1, L2).
    Dica 2: A autora não descreve no texto a disposição exata das garrafas na mesa, porém essa
    informação é essencial para a resolução do problema. Assuma que as garrafas estão dispostas
    conforme a sequência abaixo:
    grande, gigante, média, anã, pequena, quadrada,

    ResponderExcluir

Deixe seu comentário! Não uso verificação de palavras.