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