Programação Lógica: PROLOG

14
Programação Lógica: Programação Lógica: PROLOG PROLOG Leandro Aguiar Leandro Aguiar Daidy Daidy Márcio Melo Márcio Melo

description

Programação Lógica: PROLOG. Leandro Aguiar Daidy Márcio Melo. Sumário. Programação Lógica Aplicações PROLOG Conclusão. Programação Lógica. A programação em lógica se desenvolveu no início dos anos 70 a partir de alguns trabalhos sobre prova de teoremas; - PowerPoint PPT Presentation

Transcript of Programação Lógica: PROLOG

Page 1: Programação Lógica: PROLOG

Programação Lógica: Programação Lógica: PROLOGPROLOG

Leandro AguiarLeandro AguiarDaidy Daidy

Márcio MeloMárcio Melo

Page 2: Programação Lógica: PROLOG

SumárioSumário

Programação LógicaProgramação Lógica– AplicaçõesAplicações– PROLOGPROLOG

ConclusãoConclusão

Page 3: Programação Lógica: PROLOG

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;

Page 4: Programação 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.

Page 5: Programação Lógica: PROLOG

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;

Page 6: Programação Lógica: PROLOG

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.

Page 7: Programação Lógica: PROLOG

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.

Page 8: Programação Lógica: PROLOG

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;

Page 9: Programação Lógica: 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)

Page 10: Programação Lógica: PROLOG

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

Page 11: Programação Lógica: PROLOG

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".

Page 12: Programação Lógica: PROLOG

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).

Page 13: Programação Lógica: PROLOG

ExemploExemploEstrutura de Árvores

Page 14: Programação Lógica: PROLOG

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.