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 Outros Exemplos:  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 Conclusão :  Como podemos ver, o Prolog é uma linguagem muito poderosa, principalmente na área de Inteligência Artificial onde é líder absoluta. Mostramos os principais comandos da linguagem, mas vale lembrar que vimos apenas o básico do Prolog, existem muitas outras propriedades não abordadas no artigo, e muitas implementações diferentes da linguagem, cada um com o seu próprio padrão. Entre as implementações do Prolog, podemos citar o Visual Prolog (Turbo Prolog), o SWI Prolog, GNU Prolog, Amzi! Prolog, entre muitas outras já existentes.

9 Bibliografia :  http://www.linhadecodigo.com.br/Artigo.aspx?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.  PROLOG. Disponível em: http://www.din.uem.br/ia/ferramen/prolog/. Acesso em: 25 novembro 2007 PROLOG, Wikipédia - Enciclopédia livre. Disponível em: http://pt.wikipedia.org/wiki/Prolog. Acesso em: 25 novembro 2007 JACQUES ROBIN, Slides sobre Fundamentos do Prolog. Read more: http://www.linhadecodigo.com.br/artigo/1697/descobrindo- o-prolog.aspx#ixzz4hRTk7nihhttp://www.linhadecodigo.com.br/artigo/1697/descobrindo- o-prolog.aspx#ixzz4hRTk7nih  http://www.linhadecodigo.com.br/Artigo.aspx?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.  PROLOG. Disponível em: http://www.din.uem.br/ia/ferramen/prolog/. Acesso em: 25 novembro 2007 PROLOG, Wikipédia - Enciclopédia livre. Disponível em: http://pt.wikipedia.org/wiki/Prolog. Acesso em: 25 novembro 2007 JACQUES ROBIN, Slides sobre Fundamentos do Prolog. Read more: http://www.linhadecodigo.com.br/artigo/1697/descobrindo- o-prolog.aspx#ixzz4hRTk7nihhttp://www.linhadecodigo.com.br/artigo/1697/descobrindo- o-prolog.aspx#ixzz4hRTk7nih  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  Bratko, I., “Prolog Programming for Artificial Intelligence” (3rd edition), Addison Wesley, 2000. Clocksin, W.F., Mellish, C.S., “Programming in Prolog” (5th edition), Springer, 2003. Sterling, L., Shapiro, E., “The Art of Prolog” (2th edition), MIT Press, 1994


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