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.