Prolog, linguagem orientada à programação lógica
24/05/2010 4 Comentários
A uma semana atrás tivemos uma apresentação interessante na aula de paradigmas de linguagem de programação, que nos apresentou a linguagem de programação Prolog, a aula foi ministrada pelos colegas Rafael, Elias e Jonas.
O Prolog é uma linguagem de programação lógica, funciona com cálculos de predicados. Para os que não lembram dos cálculos de predicados das aulas de lógica de predicados o negócio funciona assim:dado alguns predicados podemos inferir ou tirar como conclusão alguma coisa, claro que essa alguma coisa tem que ter lógica (meio redundante isso).
um exemplo de calculo de predicado:
1. Todo amigo de Carlos é amigo de Jonas.
Pedro não é amigo de Jonas.
Logo, Pedro não é amigo de Carlos.
Para testar o prolog, basta instalar o swipl no ubuntu digitando o comando sudo aptitude install swipl
Uma coisa interessante no prolog é que ele especifica como deve ser a solução, ao invés de dar o algarismo para sua resolução. A solução se obtém mediante busca aplicando a lógica de predicados.
Um exemplo de programa usando prolog:
- gosta(joão, jazz).
- gosta(joão, renata).
- gosta(joão, lasanha).
- gosta(renata, joão).
- gosta(renata, lasanha).
Poderiamos então fazer as seguintes perguntas:
gosta(joão, jazz),João gosta de jazz?
gosta(renata, lasanha). renata gosta de lasanha?
Agora é só deixar a imaginação fluir um pouco.
A atividade da semana foi: fazer um programa que fizesse os cálculos de fibonacci.
cheguei aos seguinte algorítimo recursivo:
- fib(0, 0). /*para a sequência iniciada por 0, teremos como sucessão 0*/
- fib(1, 1). /*para a sequência iniciada por 1, teremos como sucessão 1*/
- fib(X, Y) :-
- X > 1, /*para a sequência iniciada por X sendo x>1 */
- X2 is X – 2, fib(X2, Y2), /* X2 recebe o valor x-2 e faz o fibonacci de forma recursiva de X2 que retorna Y2*/
- X1 is X – 1, fib(X1, Y1), /* X1 recebe o valor x-1 e faz o fibonacci de forma recursiva de X1 que retorna Y1*/
- Y is Y1 + Y2. /* por fim Y recebe como requerido no cálculo de fibonacci a soma dos dois valores precedentes */
/*cada número subseqüente é igual à soma dos dois números precedentes da seqüência própria*/
As peguntas que podem ser feitas são:
fib(8, X), qual o primeiro número da sucessão de fibonacci em 8? Os 100 primeiros números da sequencia fibonacci
outros detalhes e exemplos podem ser encontrados na apresentação sobre prolog.

