A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PROLOG: Linguagem de programação Phillipe Eduardo Silva de Oliveira – Unirb – Sistema de Informação – Logica Matemática e Discreta.

Apresentações semelhantes


Apresentação em tema: "PROLOG: Linguagem de programação Phillipe Eduardo Silva de Oliveira – Unirb – Sistema de Informação – Logica Matemática e Discreta."— Transcrição da apresentação:

1 PROLOG: Linguagem de programação Phillipe Eduardo Silva de Oliveira – Unirb – Sistema de Informação – Logica Matemática e Discreta

2 O que é PROLOG?  Prolog é uma linguagem declarativa ao invés de procedimental. Isto significa que ela especifica o quê se sabe e o que deve ser feito, mas não especifica como fazer.  A linguagem consiste na declaração (ou descrição de uma interpretação) de hipóteses que são verdadeiras em uma interpretação  Na lógica de predicados usamos regras de inferência para demonstrar que uma tese é consequência de determinadas hipóteses  Programação em Lógica e especificamente a linguagem Prolog – Programação Logica – também pode provar teses a partir de hipóteses  A linguagem Prolog inclui: predicados, conectivos lógicos e regras de inferência - Princípio da Resolução  Prolog é uma linguagem declarativa ao invés de procedimental. Isto significa que ela especifica o quê se sabe e o que deve ser feito, mas não especifica como fazer.  A linguagem consiste na declaração (ou descrição de uma interpretação) de hipóteses que são verdadeiras em uma interpretação  Na lógica de predicados usamos regras de inferência para demonstrar que uma tese é consequência de determinadas hipóteses  Programação em Lógica e especificamente a linguagem Prolog – Programação Logica – também pode provar teses a partir de hipóteses  A linguagem Prolog inclui: predicados, conectivos lógicos e regras de inferência - Princípio da Resolução  Um programa Prolog possui três interpretações semânticas básicas:  Interpretação declarativa. Entende-se que as cláusulas que definem um programa descrevem uma teoria de primeira ordem.  Interpretação procedimental. As cláusulas são vistas como entrada para um método de prova.  Interpretação operacional. As cláusulas são vistas como comandos para um procedimento particular de prova por refutação.  Proveito das alternativas semânticas:  Declarativa: Permite a modelagem do problema simplificando a tarefa de programação  Procedimental: Permite que o programador identifique e descreva o problema em subproblemas através de uma série de chamadas a procedimentos  Operacional: Permite controle da execução através da ordenação das cláusulas e objetivos  Um programa Prolog possui três interpretações semânticas básicas:  Interpretação declarativa. Entende-se que as cláusulas que definem um programa descrevem uma teoria de primeira ordem.  Interpretação procedimental. As cláusulas são vistas como entrada para um método de prova.  Interpretação operacional. As cláusulas são vistas como comandos para um procedimento particular de prova por refutação.  Proveito das alternativas semânticas:  Declarativa: Permite a modelagem do problema simplificando a tarefa de programação  Procedimental: Permite que o programador identifique e descreva o problema em subproblemas através de uma série de chamadas a procedimentos  Operacional: Permite controle da execução através da ordenação das cláusulas e objetivos

3 Quais são os conjuntos do ProLog?  O conjunto de declarações que forma um programa Prolog é chamado de base de conhecimento (BC) ou base de fatos.  Para determinar se uma tese (consulta do usuário à BC) é ou não verdadeira, o Prolog aplica suas regras de inferência na BC sem a necessidade de instruções adicionais por parte do programador  Bases de conhecimento convencionais descrevem apenas fatos “Tico é um pinguim”  As sentenças de um Programa em Lógica, além de descrever fatos, permitem a descrição de regras “Todo pinguim é um ave”  Havendo regras, novos fatos podem ser deduzidos “Tico é uma ave”  O conjunto de declarações que forma um programa Prolog é chamado de base de conhecimento (BC) ou base de fatos.  Para determinar se uma tese (consulta do usuário à BC) é ou não verdadeira, o Prolog aplica suas regras de inferência na BC sem a necessidade de instruções adicionais por parte do programador  Bases de conhecimento convencionais descrevem apenas fatos “Tico é um pinguim”  As sentenças de um Programa em Lógica, além de descrever fatos, permitem a descrição de regras “Todo pinguim é um ave”  Havendo regras, novos fatos podem ser deduzidos “Tico é uma ave”

4 Subconjuntos do PROLOG:  O Prolog é baseado num subconjunto do cálculo de predicados de primeira ordem, o que é definido por cláusulas de Horn. A execução de um programa em Prolog é efetivamente a prova de um teorema por resolução de primeira ordem. Alguns conceitos fundamentais são unificação, recursão, e backtracking.cálculo de predicados de primeira ordemcláusulas de Hornresolução de primeira ordem unificaçãorecursãobacktracking  Em Prolog são fornecidos os fatos e as regras para uma base de dados, que posteriormente serão executadas consultas (queries) em cima da base de dados.  A estrutura de um fato é formada por um predicado, seus argumentos (objetos) e finalizamos a instrução com um ponto(.) equivalente ao ponto-vírgula das linguagens comuns de programação. Veja a seguir: predicado(argumento1,argumento2...). O predicado é a relação sobre os quais os objetos irão interagir. Exemplos: -> amiga(joana, maria). Definimos uma relação de amizade entre dois objetos, joana e maria. -> homem(jose). Note que quando usamos apenas um objeto, o predicado passa a ser uma característica do próprio objeto.  O Prolog é baseado num subconjunto do cálculo de predicados de primeira ordem, o que é definido por cláusulas de Horn. A execução de um programa em Prolog é efetivamente a prova de um teorema por resolução de primeira ordem. Alguns conceitos fundamentais são unificação, recursão, e backtracking.cálculo de predicados de primeira ordemcláusulas de Hornresolução de primeira ordem unificaçãorecursãobacktracking  Em Prolog são fornecidos os fatos e as regras para uma base de dados, que posteriormente serão executadas consultas (queries) em cima da base de dados.  A estrutura de um fato é formada por um predicado, seus argumentos (objetos) e finalizamos a instrução com um ponto(.) equivalente ao ponto-vírgula das linguagens comuns de programação. Veja a seguir: predicado(argumento1,argumento2...). O predicado é a relação sobre os quais os objetos irão interagir. Exemplos: -> amiga(joana, maria). Definimos uma relação de amizade entre dois objetos, joana e maria. -> homem(jose). Note que quando usamos apenas um objeto, o predicado passa a ser uma característica do próprio objeto. Fatos:aRegras:abConsultas: b Vazia:

5 Sentenças do PROLOG:  As sentenças de um programa prolog são expressas por cláusulas  Tipos de cláusulas: fatos e regras  Fato : declaração de uma verdade incondicional  Regra : condição que deve ser satisfeita para que um declaração seja considerada verdadeira  Programar em Prolog consiste em:  Declarar alguns fatos sobre objetos e suas relações  Definir algumas regras sobre objetos e suas relações  Fazer consultas sobre objetos e suas relações  As sentenças de um programa prolog são expressas por cláusulas  Tipos de cláusulas: fatos e regras  Fato : declaração de uma verdade incondicional  Regra : condição que deve ser satisfeita para que um declaração seja considerada verdadeira  Programar em Prolog consiste em:  Declarar alguns fatos sobre objetos e suas relações  Definir algumas regras sobre objetos e suas relações  Fazer consultas sobre objetos e suas relações a :- b 1, b 2... b i ; b j... b n. “se” SE Condição “OU” E

6 Representação Textual:  Considere o seguinte texto:  “ João nasceu em Russas e Jean nasceu em Paris. Paris fica na França, enquanto que Russas fica no Rio Grande do Norte. Agora, só é Nordestino quem nasceu no Rio Grande do Norte, oxente.”  Ao lado a codificação em Prolog:  Uma consulta começa com um ponto de interrogação seguido do sinal de menos e termina com ponto final. Exemplo usando os fatos do slide 9:  Pedro e amigo de Carlos e Ana não conhece o Carlos, Quem é o pai de Ana? ?- pai(pedro, ana). Yes ?- pai(pedro, carlos). No  Quando uma consulta é feita, o Prolog realiza uma busca na sua base de conhecimento, procurando um fato que se unifique à questão  Considere o seguinte texto:  “ João nasceu em Russas e Jean nasceu em Paris. Paris fica na França, enquanto que Russas fica no Rio Grande do Norte. Agora, só é Nordestino quem nasceu no Rio Grande do Norte, oxente.”  Ao lado a codificação em Prolog:  Uma consulta começa com um ponto de interrogação seguido do sinal de menos e termina com ponto final. Exemplo usando os fatos do slide 9:  Pedro e amigo de Carlos e Ana não conhece o Carlos, Quem é o pai de Ana? ?- pai(pedro, ana). Yes ?- pai(pedro, carlos). No  Quando uma consulta é feita, o Prolog realiza uma busca na sua base de conhecimento, procurando um fato que se unifique à questão  nasceu(joão,Russas).  nasceu(jean,paris).  fica(paris,frança).  fica(russas,rn).  nordestino(X):-  nasceu(X,Y),  fica(Y,rn).  ?- Nordestino(X).  X=joão;  É possível também incluir a especificação da relação mãe, com base no seguinte fundamento lógico:  Para todo X e Y, – X é a mãe de Y se – X é um progenitor de Y e – X é uma mulher. Traduzindo para Prolog:  mãe(X,Y) :- progenitor(X,Y), mulher(X).  É possível também incluir a especificação da relação mãe, com base no seguinte fundamento lógico:  Para todo X e Y, – X é a mãe de Y se – X é um progenitor de Y e – X é uma mulher. Traduzindo para Prolog:  mãe(X,Y) :- progenitor(X,Y), mulher(X).

7  Acrescentando uma nova regra à BD, pode-se fazer um novo tipo de consulta  Perguntas mais interessantes também podem ser efetuadas: Quem é o progenitor de Ismael? progenitor(sara,isaque). progenitor(abraão,isaque). progenitor(abraão,ismael). progenitor(isaque,esaú). progenitor(isaque,jacó). progenitor(jacó,josé).  ?- progenitor(X,ismael).  Neste caso, o Prolog não vai responder apenas true ou false.  O Prolog fornecerá o valor de X tal que a pergunta acima seja verdadeira‰. Assim a resposta é: X = abraão  Acrescentando uma nova regra à BD, pode-se fazer um novo tipo de consulta  Perguntas mais interessantes também podem ser efetuadas: Quem é o progenitor de Ismael? progenitor(sara,isaque). progenitor(abraão,isaque). progenitor(abraão,ismael). progenitor(isaque,esaú). progenitor(isaque,jacó). progenitor(jacó,josé).  ?- progenitor(X,ismael).  Neste caso, o Prolog não vai responder apenas true ou false.  O Prolog fornecerá o valor de X tal que a pergunta acima seja verdadeira‰. Assim a resposta é: X = abraão  Perguntas mais complexas também podem ser efetuadas, tais como: Quem é o avô de José?  Como o programa não conhece diretamente a relação avô, esta pergunta deve ser desmembrada em dois passos – (1) Quem é o progenitor de José? Assuma que é um Y – (2) Quem é o progenitor de Y? Assuma que é um X  Esta pergunta composta pode ser escrita em Prolog como: ?- progenitor(Y,josé), progenitor(X,Y). X = isaque Y = jacó

8 Bibliografia :  http://www.linhadecodigo.com.br/Artigo.as px?id=1697  PROLOG. Disponível em: http://www.din.uem.br/ia/ferramen/prolog /.  PROLOG, Wikipédia - Enciclopédia livre. Disponível em: http://pt.wikipedia.org/wiki/Prolog. JACQUES ROBIN, Slides sobre Fundamentos do Prolog.  http://www.linhadecodigo.com.br/Artigo.as px?id=1697  PROLOG. Disponível em: http://www.din.uem.br/ia/ferramen/prolog /.  PROLOG, Wikipédia - Enciclopédia livre. Disponível em: http://pt.wikipedia.org/wiki/Prolog. JACQUES ROBIN, Slides sobre Fundamentos do Prolog.  Bibliografia  Judith L. Gersting: Fundamentos Matemáticos para a Ciência da Computação, LTC Editora, 3 a edição, 1995.  Luiz A. M. Palazzo: Introdução à Programação PROLOG, Editora da Universidade Católica de Pelotas/UCPEL - Pelotas


Carregar ppt "PROLOG: Linguagem de programação Phillipe Eduardo Silva de Oliveira – Unirb – Sistema de Informação – Logica Matemática e Discreta."

Apresentações semelhantes


Anúncios Google