22
Programação Lógica Christian Spinelli Demis Gomes Renan Azeredo

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

Embed Size (px)

Citation preview

Page 1: Noções de programação lógica

Programação Lógica

Christian SpinelliDemis Gomes

Renan Azeredo

Page 2: Noções de programação lógica

#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

Page 3: Noções de programação lógica

# 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

Page 4: Noções de programação lógica

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

Page 5: Noções de programação lógica

Lógica ProposicionalTipo: Conjunção (^) “e”Tabela verdade:

A proposição resultante só é verdadeira quando as proposições individuais forem verdadeiras.

Page 6: Noções de programação lógica

Lógica ProposicionalTipo: Disjunção (v) “ou”Tabela verdade:

A proposição resultante só é falsa quando as proposições individuais forem falsas.

Page 7: Noções de programação lógica

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.

Page 8: Noções de programação lógica

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.

Page 9: Noções de programação lógica

Lógica ProposicionalTipo: bicondicional ( ) “se e somente se”Tabela verdade:

A proposição resultante só é falsa quando as proposição tem valores diferentes.

Page 10: Noções de programação lógica

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.

Page 11: Noções de programação lógica

Cláusulas de HornEla é definida da seguinte forma:

Exemplo:fato: regra:

Page 12: Noções de programação lógica

Prolognao_morre(algo,perpétuo).imortal(_) :- nao_morre(algo,perpétuo).final(_).imortalSandy(_) :- nao_morre(algo,perpétuo), final(_).

Page 13: Noções de programação lógica

Prolog● Criada por Alain Colmerauer, Philipe Roussel e Robert

Kowalski em 1970● Deriva de PROgrammation en LOGiqué● Implementa as cláusulas de Horn

Page 14: Noções de programação lógica

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).

Page 15: Noções de programação lógica

Prolog, significa “E”:- significa <-_ significa “não importa” ou “don’t care”

Humm… tô começando a entender esse troço!

Page 16: Noções de programação lógica

PrologO “.” sempre deve estar no fim, indicando o fim da cláusula.

respeito(voltou).

Page 17: Noções de programação lógica

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?

Page 18: Noções de programação lógica

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).

Page 19: Noções de programação lógica

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!

Page 20: Noções de programação lógica

Dúvidas?

Page 21: Noções de programação lógica

FIMNossa apresentação não é imortal...

Page 22: Noções de programação lógica

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