Escolar Documentos
Profissional Documentos
Cultura Documentos
PROLOG
Elias Melgao Chaves Jnior Jonatas Luiz da Costa Rafael Gonalves Barreira
Roteiro
Linguagens de Programao em Lgica: histrico THIS IS PROLOG!!!! SWI-Prolog ewrite ('Hello world!!!') Termos Fatos Consulta Regras Recursividade Listas
Histrico (Continuao)
Dcada de 50: clculo de predicados comeou a ser computacionalmente vivel; Em 1958, a forma clausal comeou a despertar o interesse dos estudiosos do assunto; Em 1960 Dag Prawitz props a "Unificao", um novo tipo de operao sobre os objetos do clculo de predicados; Em 1972 Alain Colmerauer criou o "Prolog - Programmation en Logique", primeiro interpretador experimental de Prolog, na Universidade de Aix-Marseille
write('Hello World!!!')
Sada: Hello World!!! true.
(WTF???)
THIS IS PROLOG!!!!!!!!
Prolog uma linguagem de programao em lgica
As Interpretaes
Declarativa. As Clusulas* so vistas como descrio do problema Procedimental As Clusulas so vistas como entrada para um mtodo Operacional As Clusulas so vistascomo comandospara um procedimento de prova por refutao
Termos no Prolog
Todos os objetos no Prolog so denominados termos Alguns termos: tomo Numero Varivel Fato Regra
Fatos*
So fatos!!! Representam um sentena verdadeira no PROLOG para o universo do problema em questo. Alguns fatos: Dunha est vivo, Joo conhece o Mrio .... De forma logica porderia ser interpretado como: Vd (onde: V=vivo e d=dunha) Cjm (onde: C=conhece, j=joo e m=mrio) e no prolog (tem que ser minsculo mesmo*): vivo(dunha).* conhece(joo,mrio).
* exemplo de clsula
Consultas
perguntas ao sistema PROLOG comea com "?-" (sem aspas) Infere resultados com base nas clusulas existentes, verificando se a consulta valida ou no Momento alt + tab Variaveis: Representam objetos genricos eseu uso alterar a sada do processamento. Comeam com a primeira letramaiscula. Mais um alt + tab
Regras* (P -> Q)
Relao causa-conseqncia, sendo que oconseqente informado antes doantecedente. considerando os fatos sobre paternidade** criar uma regra para a relao "av"
Regras (continuao)
Interpretao: "Uma pessoa av de outra, se a primeira for pai de um terceira pessoa, e essa terceira pessoa for pai da segunda" Formalizando: para todo X e Y X av de Y se X for pai de Z e Z for pai de Y.
l e de volta novamente: outro alt + tab operadores logico: not() -> negao "," -> conjuno ";" -> disjuno
Recursividade
Criar um termo (nome de todos os objetos do Prolog) que use oprpriotermo na sua definio. Implementar a relao antepassado usando asdefiniesde paternidade. Momento alt + tab
"Backtracking"
As consultas so organizadas em arvores de busca. Navegao em pr ordem.
"Backtracking"
a, b, e, (b), f, g, (f), h, (f), i, (f), (b), (a), c, (a), d onde o caminho em backtracking representado entre parnteses
"Backtracking"
gosta(joo, jazz). gosta(joo, renata). gosta(joo, lasanha). gosta(renata, joo). gosta(renata, lasanha). Pergunta: ?-gosta(joo, X), gosta(renata, X). X = lasanha.
Listas
[umObjeto,outroObjeto,xis,dabliu] isso acima uma lista em Prolog, umcoleodelimitada por colchetes e separados porvrgula. como todo objeto Prolog na verdade uma arvore. existe listas vazias representadas por "[]" (sem aspas) e existe listas no vazias Uma lista no vazia composta de: cabea: qualquer objeto Prolog corpo: outra lista representado por: (cabea,corpo)
Listas: a criao
listas vazias: [ ] lista com os valores: [a,b,c,d] formato cabea-corpo: [H|B] , onde: H um elemento cabea B uma outra lista
Listas: Implementaes
Verficar se um objeto membro de um lista (uso de variavel anonima) membro(X,L). / X o elemento e L a lista Concatenar listas concatenar(X,Y,Z). / todos sao listas e Z resultado Remover elemento de uma lista removerInicio(X,L,Z). / Z a lista L sem X Inverter a lista inverter(X,Y). / Y a lista X invertida verificar se uma lista de letras palndromo palindromo(X). / X uma lista de letras
Referncias bibliograficas
PALAZZO, Luiz A. M.Introduo programao Prolog. 1997. Disponivel em: <http://www2.comp.ufscar. br/~bruno_katekawa/PLP/Prolog/prolog%20livro.pdf>. Acesso: 17 maio 2010.
PROLOG
Elias Melgao Chaves Jnior Jonatas Luiz da Costa Rafael Gonalves Barreira