Upload
demis-gomes
View
265
Download
0
Embed Size (px)
Citation preview
Programação Lógica
Christian SpinelliDemis 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 ProposicionalTipo: Conjunção (^) “e”Tabela verdade:
A proposição resultante só é verdadeira quando as proposições individuais forem verdadeiras.
Lógica ProposicionalTipo: Disjunção (v) “ou”Tabela verdade:
A proposição resultante só é falsa quando as proposições individuais forem falsas.
Lógica ProposicionalTipo: 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 ProposicionalTipo: 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 ProposicionalTipo: 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 HornEla é definida da seguinte forma:
Exemplo:fato: regra:
Prolognao_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
PrologElementos:
Fatos: cláusulas sempre verdadeirasnao_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”
Humm… tô começando a entender esse troço!
PrologO “.” sempre deve estar no fim, indicando o fim da cláusula.
respeito(voltou).
PrologVoltando 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).
PrologExemplo: 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?
FIMNossa apresentação não é imortal...
ReferênciasSebesta, 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-lgicaSlides do prof. Gabriel Alves - Programação lógica: https://docs.google.com/presentation/d/14sHNHkBWZoW5ZGb5_ww5RC5JNcqiiH2nwY3O7-YKqrk/edit?hl=pt_BR#slide=id.gc118d086_8245
22