Programação Lógica: PROLOG
description
Transcript of Programação Lógica: PROLOG
Programação Lógica: Programação Lógica: PROLOGPROLOG
Leandro AguiarLeandro AguiarDaidy Daidy
Márcio MeloMárcio Melo
SumárioSumário
Programação LógicaProgramação Lógica– AplicaçõesAplicações– PROLOGPROLOG
ConclusãoConclusão
Programação Lógica Programação Lógica A programação em lógica se desenvolveu no A programação em lógica se desenvolveu no
início dos anos 70 a partir de alguns início dos anos 70 a partir de alguns trabalhos sobre prova de teoremas;trabalhos sobre prova de teoremas;
Desde então ela tem demonstrado ser um Desde então ela tem demonstrado ser um formalismo simples, mas muito poderoso, formalismo simples, mas muito poderoso, que é bastante adequado tanto para a que é bastante adequado tanto para a representação do conhecimento quanto como representação do conhecimento quanto como ferramenta de programação;ferramenta de programação;
Primeira linguagem de programação que Primeira linguagem de programação que seguiu o novo paradigma associado à seguiu o novo paradigma associado à programação em lógica: PROLOG;programação em lógica: PROLOG;
AplicaçõesAplicações Sistemas Baseados no Conhecimento;Sistemas Baseados no Conhecimento; Sistemas de Bases de Dados;Sistemas de Bases de Dados; Sistemas Especialistas;Sistemas Especialistas; Processamento da Linguagem Natural;Processamento da Linguagem Natural; Educação.Educação.
PROLOGPROLOG PROLOG é uma linguagem baseada em um PROLOG é uma linguagem baseada em um
conjunto de conceitos:conjunto de conceitos:– casamento de padrões;casamento de padrões;– estruturação em forma de árvore;estruturação em forma de árvore;– backtrackingbacktracking automático automático
É uma linguagem orientada ao É uma linguagem orientada ao processamento simbólico;processamento simbólico;
Representa uma implementação da lógica Representa uma implementação da lógica como linguagem de programação;como linguagem de programação;
PROLOGPROLOG Apresenta uma semântica declarativa inerente à lógica;Apresenta uma semântica declarativa inerente à lógica; Permite a definição de programas reversíveis, isto é, Permite a definição de programas reversíveis, isto é,
programas que não distinguem entre os argumentos de programas que não distinguem entre os argumentos de entrada e os de saída;entrada e os de saída;
Permite a obtenção de respostas alternativas;Permite a obtenção de respostas alternativas; Suporta código recursivo e iterativo para a descrição de Suporta código recursivo e iterativo para a descrição de
processos e problemas, dispensando os mecanismos processos e problemas, dispensando os mecanismos tradicionais de controle, tais como while, repeat, etc;tradicionais de controle, tais como while, repeat, etc;
Permite associar o processo de especificação ao Permite associar o processo de especificação ao processo de codificação de programas;processo de codificação de programas;
Representa programas e dados através do mesmo Representa programas e dados através do mesmo formalismo.formalismo.
PROLOG: PROLOG: Diferenças em Diferenças em
relação às outras linguagensrelação às outras linguagens
PROLOG: é uma linguagem declarativa - especifica o PROLOG: é uma linguagem declarativa - especifica o quê se sabe e o quê deve ser feito. quê se sabe e o quê deve ser feito.
PROLOG é mais direcionada ao conhecimento, menos PROLOG é mais direcionada ao conhecimento, menos direcionada aos algoritmos. direcionada aos algoritmos.
PROLOG não possui estruturas de controle como do-PROLOG não possui estruturas de controle como do-while, repeat-until, if-then-else, for, case ou switch while, repeat-until, if-then-else, for, case ou switch como os encontrados em outras linguagens: em como os encontrados em outras linguagens: em PROLOG utiliza-se métodos lógicos para declarar como PROLOG utiliza-se métodos lógicos para declarar como o programa atinge seu objetivo. o programa atinge seu objetivo.
A força do PROLOG reside em sua capacidade de Busca A força do PROLOG reside em sua capacidade de Busca e Casamento de Padrões. e Casamento de Padrões.
PROLOG: PROLOG: conceitosconceitos TermosTermos
– ConstanteConstante Exemplo: paulo, 3, 'UFRGS' Exemplo: paulo, 3, 'UFRGS'
– VariávelVariável– Termo compostoTermo composto
Exemplo: suc(suc(suc(0)));Exemplo: suc(suc(suc(0)));
Compiladores/Interpretadores Compiladores/Interpretadores
– Exemplos:Exemplos: Kernel PrologL Kernel PrologL GNU Prolog GNU Prolog SWI Prolog SWI Prolog Visual Prolog;Visual Prolog;
PROLOG: PROLOG: conceitosconceitos
ÁtomosÁtomos Exemplo: lápis, ana, brasil, livro, tesoura, Exemplo: lápis, ana, brasil, livro, tesoura,
guarda-roupaguarda-roupa;;
PredicadoPredicado– Exemplos:Exemplos:
homem(pedro)homem(pedro) mulher(ana)mulher(ana) brigou(carlos,maria)brigou(carlos,maria)
PROLOG: PROLOG: conceitosconceitos FrasesFrases
casado(pedro,maria).casado(pedro,maria). casado(carlos,ana).casado(carlos,ana). ?- casado(carlos,maria).?- casado(carlos,maria). ?- casado(carlos,ana).?- casado(carlos,ana).
FatosFatos
PROLOG: PROLOG: conceitosconceitos Consulta (ou questão):Consulta (ou questão):
– Uma consulta é escrita da mesma maneira que Uma consulta é escrita da mesma maneira que um fato, sendo diferenciada pelo interpretador ou um fato, sendo diferenciada pelo interpretador ou por sua colocação em um local previamente por sua colocação em um local previamente definido e separado dos fatos;definido e separado dos fatos;
Dizemos que dois fatos (ou um fato e uma Dizemos que dois fatos (ou um fato e uma questão) são unificam (são iguais) se:questão) são unificam (são iguais) se:1.1. seus predicados são os mesmos,seus predicados são os mesmos,2.2. eles possuem o mesmo número de argumentos e,eles possuem o mesmo número de argumentos e,3.3. os argumentos são iguais.os argumentos são iguais.4.4. o PROLOG encontra um fato que se iguala a o PROLOG encontra um fato que se iguala a
questão, ele retorna "YES", indicando que a questão, ele retorna "YES", indicando que a questão tem resposta verdadeira; caso contrário, questão tem resposta verdadeira; caso contrário, ele retorna "NO".ele retorna "NO".
ExemploExemploPrograma:Programa:factorial (0,1).factorial (0,1). factorial (N,F) :-factorial (N,F) :-
N>0,N>0,N1 is N-1,N1 is N-1,Factorial (N1,F1),Factorial (N1,F1),F is N*F1.F is N*F1.
Consulta:Consulta:?- factorial(3,W).?- factorial(3,W).
ExemploExemploEstrutura de Árvores
ConclusãoConclusão
PROLOG é uma boa ferramenta na PROLOG é uma boa ferramenta na representação de fatos do mundo real representação de fatos do mundo real que seriam dificilmente ou até mesmo que seriam dificilmente ou até mesmo impossíveis de serem modelados em impossíveis de serem modelados em linguagens imperativas.linguagens imperativas.
Apesar da linguagem PROLOG ser uma Apesar da linguagem PROLOG ser uma das mais conhecidas, as arquiteturas das mais conhecidas, as arquiteturas voltadas para ter essa linguagem como voltadas para ter essa linguagem como nativa não tiveram o mesmo êxito.nativa não tiveram o mesmo êxito.