Apresentação feita na disciplina de Paradigmas de Programação no semestre 2015.1 onde discutimos brevemente a programação lógica.
Autores:
Christian Spinelli
Renan Azeredo
Demis Gomes
2. #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
3. # 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
4. 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
5. Lógica Proposicional
Tipo: Conjunção (^) “e”
Tabela verdade:
A proposição resultante só é verdadeira quando as
proposições individuais forem verdadeiras.
7. 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.
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.
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.
13. Prolog
● Criada por Alain 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 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).
16. Prolog
O “.” sempre deve 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
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).
19. 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!
22. 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