Buscar

PrologApresentacao_v2

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

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando