SlideShare uma empresa Scribd logo
PROLOG: Linguagem de
programação
Phillipe Eduardo Silva de Oliveira – Unirb – Sistema de Informação – Logica Matemática e Discreta
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
 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
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”
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.
 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: a Regras: a b Consultas: b Vazia:
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
a :- b1, b2 ...bi ; bj ... bn.
“se”
SE
Condição
“OU”
E
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
 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).
 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ó
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.
 Bibliografia
 Judith L. Gersting: Fundamentos Matemáticos
para a Ciência da Computação, LTC Editora,
3a edição, 1995.
 Luiz A. M. Palazzo: Introdução à Programação
PROLOG, Editora da Universidade Católica de
Pelotas/UCPEL - Pelotas

Mais conteúdo relacionado

PPT
Aula de Prolog 06 - Recursão
PPT
Aula Prolog 01
PPSX
Polimorfismo java
PPTX
Introdução ao Prolog
PPT
IA Prolog
PDF
Linguagem Prolog - Antonio Rufino
PDF
Introdução ao Prolog - Prof. Sérgio S. Costa
PDF
Programacao logica e Inteligência Artificial
Aula de Prolog 06 - Recursão
Aula Prolog 01
Polimorfismo java
Introdução ao Prolog
IA Prolog
Linguagem Prolog - Antonio Rufino
Introdução ao Prolog - Prof. Sérgio S. Costa
Programacao logica e Inteligência Artificial

Semelhante a Apresentação1 prolog trabalho phillipe (20)

PPT
Aula Prolog 02
PDF
Programação lógica
PDF
Seminário Prolog
PPT
PDF
28-aula28.pdf
PDF
Minicurso Prolog
PDF
7-Prolog-Base (2).pdf
PPTX
Aula prolog 02 ia
PDF
33-aula33.pdf
PPT
Aula Prolog 03
PDF
Aula3 sintaxe semantica
PDF
Paradigma lógico
PDF
Programacao logica
PDF
Curso de prolog parte _003_modeloComputacional.pdf
PPT
Introdução a Programação em Lógica e Prolog
PPT
E:\Plp 2009 2\Plp Aula11
PPTX
Noções de programação lógica
PDF
32-aula32.pdf
PDF
36-aula36.pdf
PPT
Lógica de Descrições pelo professor dr Fred Freitas
Aula Prolog 02
Programação lógica
Seminário Prolog
28-aula28.pdf
Minicurso Prolog
7-Prolog-Base (2).pdf
Aula prolog 02 ia
33-aula33.pdf
Aula Prolog 03
Aula3 sintaxe semantica
Paradigma lógico
Programacao logica
Curso de prolog parte _003_modeloComputacional.pdf
Introdução a Programação em Lógica e Prolog
E:\Plp 2009 2\Plp Aula11
Noções de programação lógica
32-aula32.pdf
36-aula36.pdf
Lógica de Descrições pelo professor dr Fred Freitas
Anúncio

Último (12)

PPTX
Tipos de servidor em redes de computador.pptx
PDF
Jira Software projetos completos com scrum
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Processos no SAP Extended Warehouse Management, EWM100 Col26
PPT
Conceitos básicos de Redes Neurais Artificiais
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Analise Estatica de Compiladores para criar uma nova LP
PPTX
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
PPTX
Utilizando code blockes por andre backes
Tipos de servidor em redes de computador.pptx
Jira Software projetos completos com scrum
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Processos no SAP Extended Warehouse Management, EWM100 Col26
Conceitos básicos de Redes Neurais Artificiais
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Analise Estatica de Compiladores para criar uma nova LP
Aula 9 - Funções em Python (Introdução à Ciência da Computação)
Utilizando code blockes por andre backes
Anúncio

Apresentação1 prolog trabalho phillipe

  • 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  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”
  • 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.  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: a Regras: a b Consultas: 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 a :- b1, b2 ...bi ; bj ... bn. “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  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).
  • 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  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.  Bibliografia  Judith L. Gersting: Fundamentos Matemáticos para a Ciência da Computação, LTC Editora, 3a edição, 1995.  Luiz A. M. Palazzo: Introdução à Programação PROLOG, Editora da Universidade Católica de Pelotas/UCPEL - Pelotas