programmation en logique
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
Daniel Augusto da Costa Ambrósio
Eduardo Agostinho Oliveira dos Santos
Fernando Chaves Dantas
Ítalo Tobias de Souza Dantas
José Maria de Oliveira Cavalcante
Thiago Medeiros de Menezes
APRESENTAÇÃO À LINGUAGEM PROLOG
Aspectos Gerais
Por que estudar Prolog?
Características
Como Programar em Prolog?
Aplicações
Prolog versus Linguagens Imperativas
Considerações Finais
ASPECTOS GERAIS
◙
O nome Prolog é um acrônimo para
programmation en logique;
◙
Linguagem enquadrada nos paradigmas
lógico e declarativo da programação;
◙
Projetada, em 1972, por Alain Colmerauer e
Philippe Roussel na França;
◙
Sua semântica foi formalizada por Robert
Kowalski baseada no conceito das cláusulas
de Horn;
◙
Desenvolvida para criar programas de
tradução de linguagens naturais como
português, francês e inglês;
ASPECTOS GERAIS
◙
Tem na lógica um formalismo conveniente
para representar e processar o
conhecimento de maneira natural;
◙
Linguagem não-numérica, orientada a
símbolos;
◙
É adequada à solução de problemas
envolvendo objetos e suas relações;
◙
Tem sido aplicada em inteligência artificial,
redes de computadores, educação, base de
dados e sistemas paralelos.
POR QUE ESTUDAR PROLOG?
◙
Há uma preferência por serviços de
especificação no mercado de trabalho;
◙
Pode ser vista como uma linguagem de
programação e de especificação;
◙
Eficaz na elaboração de ambientes e
interfaces computacionais para seres
humanos;
◙
Permite definir e estender sistemas
reflexivos, utilizados em robótica;
◙
É adequado para a descrição do mundo real
com todos os seus aspectos e sutilezas.
CARACTERÍSTICAS
◙
A programação limita-se a fornecer uma
descrição do problema que se pretende
computar;
◙
A execução de um programa em Prolog é
efetivamente a prova de um dado teorema;
◙
Obtém respostas alternativas através de
backtracking;
◙
Suporta código recursivo e iterativo,
dispensando o uso de mecanismos como
while, for e repeat;
◙
Apesar do longo tempo de desenvolvimento,
ainda não é uma linguagem portável.
CLÁUSULAS DE HORN
É uma implicação cujo antecedente é uma
conjunção de fórmulas atômicas e cujo
conseqüente consiste em, no máximo, uma
fórmula atômica.
Lógica:
(α1 ∧ ... ∧ αn) ⟶ β
Prolog:
β :- (α1, ..., αn)
BACKTRACKING
◙
A evolução da busca por soluções assume a
do padrão da busca em profundidade em
árvores;
◙
Quando a pesquisa falha ou é encontrado
um nó terminal, o sistema retorna pelo
mesmo caminho percorrido com a finalidade
de encontrar soluções alternativas;
◙
O backtracking pode se tornar em uma fonte
de ineficiência, uma vez que o programa
pode executar passos tentando satisfazer
objetivos que não contribuirão para a
solução do problema.
TIPOS DE DADOS
átomos
•sapato, ‘Sapato’
variáveis
•X, _X
números inteiros
números em ponto
flutuante
strings
estruturas
listas
•43, -35, ‘a = 97
•43.0, .8e21
•$ele foi ao cinema$, ‘ele foi ao
cinema’
•nasceu(joca, natal)
•[a, b, c]
CONCEITOS BÁSICOS
FATOS
mae(pedro, ana).
REGRAS
mae(Ana) :- mulher(Ana).
CONSULTAS
?-mae(pedro).
OPERADORES BÁSICOS
pré-definidos
não, e, ou lógicos
aritmética
relacional
outros
_
:?not
,
+
*
/
// mod
= == =:= \== =\= <
=<
member(elemento, [ ])
!
;
^
>
\+
is
>=
APLICAÇÕES
Escrita de
compiladores
Prova de
Teoremas
Redes de
Computadores
Sistemas
Baseados em
Conhecimento
Sistemas de
Bases de Dados
Sistemas
Especialistas
Educação
Arquiteturas
NãoConvencionais
Processamento
de Linguagem
Natural
PROLOG VERSUS LINGUAGENS IMPERATIVAS
Paradigmas
Imperativo
Estruturado
Orientado a
Objetos
Declarativo
Concorrente
Funcional
Lógico
PARADIGMAS
◙
Imperativo
◙
◙
◙
◙
Processo de Mudanças de Estados
Variável, Valor e Atribuição
Execução de passos algorítmicos
Declarativo
◙ Especificações sobre a Tarefa a Ser
Realizada
◙ Predicados
◙ Dedução Automática
◙ Difícil Implementação computacional
PROLOG VERSUS LINGUAGENS IMPERATIVAS
Imperativas
prolog
processamento numérico
processamento simbólico
soluções algorítmicas
soluções heurísticas
modificação difícil
fácil modificação
melhor solução possível
todas as soluções possíveis
fácil re-usabilidade
difícil re-usabilidade
iteratividade integrada
iteratividade separada
apenas respostas corretas
incluem respostas parcialmente
corretas
conexão a base de dados
não conecta a base de dados
alta produtividade
baixa produtividade
INTEGRANDO PROLOG
◙
◙
◙
Para que!???
Possibilidade de buscas mais complexas não
definidas através de SQL.
Prolog interpreta um scripts.
◙
Passos para integração
◙ Definição de conjuntos e regras em
script prolog .pl;
◙ Utilização de programação Imperativa
para selecionar situações;
◙ Verificar veracidade das situações com
execução de um script prolog;
◙ Organizar resultados;
◙
Torna o prolog mais reutilizável;
CONSIDERAÇÕES FINAIS
◙
Para resolução de problemas lógicos,
podemos utilizar o Prolog como uma forma
de facilitar o encontro de uma solução;
◙
Pelo fato de ser uma linguagem
interpretada, pode ser facilmente
incorporada a uma linguagem de
programação que faça chamadas de
execução de programas;
◙
Prolog é uma linguagem muito utilizada na
área da pesquisa, desenvolvimento de
projetos científico, vem tentando ser
utilizada no mercado.
REFERÊNCIAS
◙
BEBREGAL, Benjamín Callejas; ACIOLY, Benedito Melo.
Introdução à Lógica Clássica para a Ciência da
Computação, versão preliminar 2007.
◙
DANTAS, Luciano Assis. Descobrindo o Prolog.
Disponível em http://www.linhadecodigo.com.
br/Artigo.aspx?id=1697. Acesso em 25 jul. 2009.
◙
MITSUO, Marcelo Niside. Prolog. Disponível em
http://www.din.uem.br/ia/ferramen/prolog/. Acesso
em 25 jul. 2009.
◙
PALLAZZO, Luiz A. M.. Introdução à Programação
Prolog. Disponível em http://www.dsc.upe.br/~mlc/
Prolog/introducaoProgramacaoProlog_Palazzo.pdf.
Acesso em 25 jul. 2009.
◙
Prolog. Disponível em http://pt.wikipedia.org/wiki/
Prolog#Extens.C3.B5es. Acesso em 25 jul. 2009.
Download

como programar em prolog?