Programação Lógica
Christian Spinelli
Demis Gomes
Renan Azeredo
#Com base em Sebesta e Tucker#
Programação lógica é um paradigma de programação que
difere dos demais por ser declarativa.
- Somente as especificações dos resultados(objetivos)
desejados são declarados.
- Os objetivos são organizados como uma coleção de regras.
- Os programas são expressos na forma de lógica simbólica.
- Um processo de inferência lógica é utilizado para produzir
os resultados.
Programação lógica⇔Programação declarativa⇔Programação
baseada em regras
Introdução
# Segundo Tucker#
As aplicações de programação lógica se classificam em
dois domínios principais:
- Inteligência artificial (Prolog e MYCIN)
- Acesso a informação em banco de dados (SQL)
Introdução
Proposição é uma sentença negativa ou positiva na qual
podemos atribuir um valor de verdadeiro (v) ou falso (f).
As proposições lógicas podem ser compostas de
conectivos lógicos ¬ (negação), ^ (conjunção, “e”), v
(disjunção, “ou”), ⊕(disjunção exclusiva),
(condicional, “se..então”), (bicondicional, “se
somente se”).
Lógica Proposicional
4
Lógica Proposicional
Tipo: Conjunção (^) “e”
Tabela verdade:
A proposição resultante só é verdadeira quando as
proposições individuais forem verdadeiras.
Lógica Proposicional
Tipo: Disjunção (v) “ou”
Tabela verdade:
A proposição resultante só é falsa quando as proposições
individuais forem falsas.
Lógica Proposicional
Tipo: Disjunção exclusiva (v)
Tabela verdade:
A proposição resultante só é verdadeira quando uma
proposição individual for verdadeira e a outra for falsa.
Lógica Proposicional
Tipo: condicional ( ) “se… então”
Tabela verdade:
A proposição resultante só é falsa quando a proposição
antecedente for verdadeira e a consequente for falsa.
Lógica Proposicional
Tipo: bicondicional ( ) “se e somente se”
Tabela verdade:
A proposição resultante só é falsa quando as proposição tem
valores diferentes.
Cláusulas de Horn
● É a linguagem utilizada para a programação lógica
● Linguagem mais “orientada ao homem”
● Uma cláusula de Horn tem uma única ou nenhuma
proposicao implicada.
● A cláusula que não tem nenhuma proposição é
considerada um fato.
Cláusulas de Horn
Ela é definida da seguinte forma:
Exemplo:
fato: regra:
Prolog
nao_morre(algo,perpétuo).
imortal(_) :- nao_morre(algo,perpétuo).
final(_).
imortalSandy(_) :- nao_morre(algo,perpétuo), final(_).
Prolog
● Criada por Alain Colmerauer, Philipe Roussel e Robert
Kowalski em 1970
● Deriva de PROgrammation en LOGiqué
● Implementa as cláusulas de Horn
Prolog
Elementos:
Fatos: cláusulas sempre verdadeiras
nao_morre(algo,imortal).
Regras: conjunto de condições necessárias para um termo
ser verdadeiro.
gostaGOT(pessoa) :- estudaBSI(pessoa),gostaSeries(pessoa),
gostaSacanagem(pessoa).
Prolog
, significa “E”
:- significa <-
_ significa “não importa” ou “don’t care”
Prolog
O “.” sempre deve estar no fim, indicando o fim da cláusula.
respeito(voltou).
Prolog
Voltando ao exemplo:
nao_morre(algo,perpétuo).
imortal(_) :- nao_morre(algo,perpétuo).
final(_).
imortalSandy(_) :- nao_morre(algo,perpétuo), final(_).
Se algo
não morre,
ele é
imortal
Mas pra Sandy, o
imortal não morre
no final
Perceberam que o
imortalSandy e o
imortal são a
mesma coisa?
PUTS! PQ
NÃO
ESTUDEI
ISSO
ANTES?
Prolog
Morena é
um ladrão
Outro exemplo de música:
Mc Rael (Vem Morena)
“O amarelo lembra ouro,
O ouro lembra ladrão,
Ladrão lembra você
Que roubou meu coração”
amarelo_lembra(ouro).
ouro_lembra(ladrao).
rouba(_).
ladrao() :- rouba(_).
morena() :- rouba(meu_coracao).
Prolog
Exemplo: O que falar?
Algumas pessoas falam sobre determinados assuntos. O
programa a seguir irá informar quais assuntos as pessoas
podem conversar entre si, caso a pessoa 1 também fale algo
que a pessoa 2 também fala.
Vamos ao código!
Dúvidas?
FIM
Nossa apresentação não é imortal...
Referências
Sebesta, R. Conceitos de Linguagem de Programação, 5ª ed. Bookmamn,
2005.
Tucker, A; Noonan, R. Linguagens de Programação: Princípios e Paradigmas.
2ª ed. McGraw-Hill, 2009.
http://letras.mus.br/mc-rael/1513730/
http://pt.slideshare.net/GJ510/programao-lgica
Slides do prof. Gabriel Alves - Programação lógica:
https://docs.google.com/presentation/d/14sHNHkBWZoW5ZGb5_ww5RC5JNc
qiiH2nwY3O7-YKqrk/edit?hl=pt_BR#slide=id.gc118d086_8245
22

Noções de programação lógica

  • 1.
  • 2.
    #Com base emSebesta e Tucker# Programação lógica é um paradigma de programação que difere dos demais por ser declarativa. - Somente as especificações dos resultados(objetivos) desejados são declarados. - Os objetivos são organizados como uma coleção de regras. - Os programas são expressos na forma de lógica simbólica. - Um processo de inferência lógica é utilizado para produzir os resultados. Programação lógica⇔Programação declarativa⇔Programação baseada em regras Introdução
  • 3.
    # Segundo Tucker# Asaplicações de programação lógica se classificam em dois domínios principais: - Inteligência artificial (Prolog e MYCIN) - Acesso a informação em banco de dados (SQL) Introdução
  • 4.
    Proposição é umasentença negativa ou positiva na qual podemos atribuir um valor de verdadeiro (v) ou falso (f). As proposições lógicas podem ser compostas de conectivos lógicos ¬ (negação), ^ (conjunção, “e”), v (disjunção, “ou”), ⊕(disjunção exclusiva), (condicional, “se..então”), (bicondicional, “se somente se”). Lógica Proposicional 4
  • 5.
    Lógica Proposicional Tipo: Conjunção(^) “e” Tabela verdade: A proposição resultante só é verdadeira quando as proposições individuais forem verdadeiras.
  • 6.
    Lógica Proposicional Tipo: Disjunção(v) “ou” Tabela verdade: A proposição resultante só é falsa quando as proposições individuais forem falsas.
  • 7.
    Lógica Proposicional Tipo: Disjunçãoexclusiva (v) Tabela verdade: A proposição resultante só é verdadeira quando uma proposição individual for verdadeira e a outra for falsa.
  • 8.
    Lógica Proposicional Tipo: condicional( ) “se… então” Tabela verdade: A proposição resultante só é falsa quando a proposição antecedente for verdadeira e a consequente for falsa.
  • 9.
    Lógica Proposicional Tipo: bicondicional( ) “se e somente se” Tabela verdade: A proposição resultante só é falsa quando as proposição tem valores diferentes.
  • 10.
    Cláusulas de Horn ●É a linguagem utilizada para a programação lógica ● Linguagem mais “orientada ao homem” ● Uma cláusula de Horn tem uma única ou nenhuma proposicao implicada. ● A cláusula que não tem nenhuma proposição é considerada um fato.
  • 11.
    Cláusulas de Horn Elaé definida da seguinte forma: Exemplo: fato: regra:
  • 12.
  • 13.
    Prolog ● Criada porAlain Colmerauer, Philipe Roussel e Robert Kowalski em 1970 ● Deriva de PROgrammation en LOGiqué ● Implementa as cláusulas de Horn
  • 14.
    Prolog Elementos: Fatos: cláusulas sempreverdadeiras nao_morre(algo,imortal). Regras: conjunto de condições necessárias para um termo ser verdadeiro. gostaGOT(pessoa) :- estudaBSI(pessoa),gostaSeries(pessoa), gostaSacanagem(pessoa).
  • 15.
    Prolog , significa “E” :-significa <- _ significa “não importa” ou “don’t care”
  • 16.
    Prolog O “.” sempredeve estar no fim, indicando o fim da cláusula. respeito(voltou).
  • 17.
    Prolog Voltando ao exemplo: nao_morre(algo,perpétuo). imortal(_):- nao_morre(algo,perpétuo). final(_). imortalSandy(_) :- nao_morre(algo,perpétuo), final(_). Se algo não morre, ele é imortal Mas pra Sandy, o imortal não morre no final Perceberam que o imortalSandy e o imortal são a mesma coisa? PUTS! PQ NÃO ESTUDEI ISSO ANTES?
  • 18.
    Prolog Morena é um ladrão Outroexemplo de música: Mc Rael (Vem Morena) “O amarelo lembra ouro, O ouro lembra ladrão, Ladrão lembra você Que roubou meu coração” amarelo_lembra(ouro). ouro_lembra(ladrao). rouba(_). ladrao() :- rouba(_). morena() :- rouba(meu_coracao).
  • 19.
    Prolog Exemplo: O quefalar? Algumas pessoas falam sobre determinados assuntos. O programa a seguir irá informar quais assuntos as pessoas podem conversar entre si, caso a pessoa 1 também fale algo que a pessoa 2 também fala. Vamos ao código!
  • 20.
  • 21.
  • 22.
    Referências Sebesta, R. Conceitosde Linguagem de Programação, 5ª ed. Bookmamn, 2005. Tucker, A; Noonan, R. Linguagens de Programação: Princípios e Paradigmas. 2ª ed. McGraw-Hill, 2009. http://letras.mus.br/mc-rael/1513730/ http://pt.slideshare.net/GJ510/programao-lgica Slides do prof. Gabriel Alves - Programação lógica: https://docs.google.com/presentation/d/14sHNHkBWZoW5ZGb5_ww5RC5JNc qiiH2nwY3O7-YKqrk/edit?hl=pt_BR#slide=id.gc118d086_8245 22