Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Prolog Sergio Maciel de Sá Leão Junior Jonas Ribeiro da silva Índice HISTÓRIA O QUE É PROLOG? SINTAXE E REGRAS ESTRUTURA Átomos Fatos operadores Concorrência Hipótese do mundo fechado Exemplo de programas Imperativo x prolog Extensões E PROJETOS DE PESQUISA Interpretadores/compiladores bibliografia História NASCEU EM 1971 philippe roussel A NOMEOU como uma abreviação de “proGRAMMATION EN LOGIQUE”. Ela foi criada para a interpretação das cláusulas de horn. FOI DIFUNDIDA DE FORMA MUITO LIMITADA DEVIDO À FALTA DE APLICAÇÕES. O que é PROLOG? É UMA linguagem declarativa – especifica o que se sabe e o que deve ser feito. Se enquadra no paradigma de programação em lógica matemática. Apresenta uma semântica inerente à lógica. É mais direcionado ao conhecimento, menos direcionada aos algoritmos. Permite a obtenção de respostas alternativas. Forma de métodos lógicos através de fatos e regras. Não é uma linguagem portável O que é PROLOG? Representa programas e dados através do mesmo formalismo. Permite associar o processo de especificação ao processo de codificação de programas. Não tem sistemas de controle, como do-while, repeat-until, if-then-else, for, case ou switch. A força do prolog reside em sua capacidade de busca e casamento de padrões. A execução de um programa é a prova de um teorema por resolução de primeira ordem. conceitos: unificação, recursão e backtracking. Sintaxe e Regras TODOS OS TERMOS SÃO DECLARADOS COMO SE FOSSEM DE UM ÚNICO TIPO. O escopo de uma variável é a asserção (fato, regra, ou consulta) na qual aparece. O escopo de qualquer outro nome é todo o programa. DIVIDIMOS A SINTAXE EM ÁTOMOS OU ESTRUTURAS. Uma estrutura é um objeto que possui organização interna. As estruturas são representadas por símbolo funcional. os termos estruturados são vistos como árvores. exemplo: (sujeito(joao), predicado(verbo,comeu), objeto(pipoca). Estrutura Um átomo é uma sequência constituída de letras, números e underscore, mas iniciando com uma letra minúscula. Átomos podem ser constantes ou variáveis. Identificadores que iniciam por letras minúsculas. exemplos: brasil, mt1, get_item. Cadeiras de caracteres entre apóstrofes. exemplos: ‘Sócrates’, ‘4º andar’. Números inteiros exemplos: 146, 20. Átomos São fornecidos os fatos e as regras para uma base de dados, que posteriormente serão executadas com consultas em cima da base de dados. Exemplo de uma regra: avo(X,Z) :- pai(X,Y), pai(Y,Z). DADOS OS FATOS: pai(henrique,oscar). pai(henrique,flavio). pai(flavio,joao). pai(oscar,jorge). ?- avo(henrique,joao),avo(henrique,jorge). O RETORNO DESSA QUERIE SERÁ YES. Fatos NO PROLOG EXISTEM TANTO OS OPERADORES RELACIONAIS QUANTO OS ARITMÉTICOS. ENTRE OS OPERADORES RELACIONAIS TEMOS: Igualdade: = Diferença: \= (<> ) Menor que: < Maior que: > Menor ou igual: =< (<=) Maior ou igual: >= Operadores ENTRE OS OPERADORES aritméticos TEMOS: soma: + Diferença: - multiplicação: * divisão: / resto: mod Igual: is Operadores NÃO HÁ REFERÊNCIAS NA LITERATURA SOBRE CONCORRÊNCIA EM PROLOG. CONCLUÍMOS QUE POR SE TRATAR DE UMA LINGUAGEM DECLARATIVA E QUE NÃO USA VARIÁVEIS, LOGO EsSA LINGUAGEM NÃO SE UTILIZA DESTE RECURSO. Concorrência Ao invés de l1(cláusulas de horn), prolog não permite nem fatos, nem conclusões de regras negativas. Princípio de economia: Declarar e deduzir apenas o que é verdadeiro Supor que tudo que não é mencionado nem é deduzível é falso. Operador de negação por falha em premissas: Not p(x) verificado se p(x) falha =/= de ~p(x) verificado se ~p(x) no bde ou na conclusão de uma regra com premissas verificadas Hipótese do Mundo Fechado Exemplo de Programas “Hello world” hello:- display(‘Hello World’), nl. Exemplo de Programas Número positivo positivo(numero) :- numero > 0. ?-positivo(2). SAÍDA: “YES” Exemplo de Programas Fatorial fatorial (N,F) :- N>0, N1 is N-1, Fatorial (N1,F1), F is N*F1. ?- fatorial(3,6). Exemplo de Programas Torre de Hanoi HANOI(N) :- move(N, left, centre, right). move(0, _, _, _) :- !. move(N, A, B, C) :- M is N-1, move(M, A, C, B), inform(A, B), move(M, C, B, A). inform(X, Y) :- write('move a disc from the '),write(X), write('pole to the '), write(Y), write(' pole'), nl. Exemplo de Programas quicksort split(H, [A|X], [A|Y], Z):- order(A, H), split(H, X, Y, Z). split(H, [A|X], Y, [A|Z]):- not(order(A, H)), split(H, X, Y, Z). split(_, [ ], [ ], [ ]). quicksort([ ], X, X). quicksort([H|T], S, X):- split(H, T, A, B), quicksort(A, S, [H|Y]), quicksort(B, Y, X). CONTROLE IMPLÍCITO construído NA ESTRATÉGIA DE rESOLUÇÃO Programação imperativa: Procedure c(E) const e0:tipoE0; var E:tipoE; S0:tipoS0; I1:tipoI1; S1:tipoS1; do if E = e0 then do S0:= call p0(e0); return S0; end; else do I1:=call p1(E);S1:=call p2(E,I1);return S1; end; end; PROLOG: c(e0,S0):-p0(e0,S0). c(E,S1):-p1(E,I1),p2(E,I1,S1). Imperativo x Prolog EXTENSÕES: Life Florid Projeto robocup Projetos de pesquisa: Cruijff Web skwash Extensões e Projetos de Pesquisa SWI-PROLOG JPE Visual prolog GNU PROLOG Amzi! prolog Interpretadores / Compiladores LINHA DE CÓDIGO: http://www.linhadecodigo.com.br/artigo.aspx?id=1697 Prolog. Disponível EM: http://www.din.uem.br/ia/ferramen/prolog PROLOG, WIKIPEDIA: http://pt.wikipedia.org/wiki/prolog Jacques robin – fundamentos do prolog. Swi-prolog’s: http://www.swi-prolog.com Bibliografia
Compartilhar