Escolar Documentos
Profissional Documentos
Cultura Documentos
PARA COMPUTAÇÃO
Programação Lógica
SUMÁRIO
➢ Linguagens Procedimentais e Declarativas
➢ Prolog
➢ Cláusulas de Horn
➢ Recorrência
Linguagens procedimentais e
declarativas
● Linguagem procedimental
○ Instruções para executar o algoritmo que
resolverá o problema.
○ O computador é instruído a resolver o
problema passo a passo.
C
Linguagens procedimentais e
declarativas
● Linguagem declarativa
○ Baseia-se na lógica de predicados.
○ Utiliza regras de inferência, permitindo ao
usuário obter conclusões a partir das
hipóteses.
https://www.swi-prolog.org/
Prolog
Prolog
PROgramming in LOGic - Programando em Lógica
Exemplo:
● Planta(x): x é planta
● Animal(x): x é animal
● seAlimenta(x,y): x se alimenta de y
Prolog
animal(urso) animal(veado) seAlimenta(urso, peixe)
animal(peixe) planta(grama) seAlimenta(urso, raposa)
animal(raposa) planta(flores) seAlimenta(veado, grama)
Consultas: Consultas:
?seAlimenta(veado, grama) ?seAlimenta(urso, X)
sim peixe
?seAlimenta(urso, coelho) raposa
não
Prolog
animal(urso) animal(veado) seAlimenta(urso, peixe)
animal(peixe) planta(grama) seAlimenta(urso, raposa)
animal(raposa) planta(flores) seAlimenta(veado, grama)
Consultas:
?seAlimenta(X, Y) e planta(Y)
?seAlimenta(urso, peixe) e planta(peixe)
V F
?seAlimenta(veado, grama) e planta(grama)
V V
Prolog
Regras: descrição de um predicado por meio
de um condicional.
Exemplo:
presa(X) <= seAlimenta(Y, X) e animal(X)
presa(X): x é uma presa.
[animal(X)]∧[seAlimenta(Y,X)] →[presa(X)]
?presa(X)
peixe
raposa
Prolog
animal(urso) animal(veado) seAlimenta(urso, peixe)
animal(peixe) planta(grama) seAlimenta(urso, raposa)
animal(raposa) planta(flores) seAlimenta(veado, grama)
Exemplo:
presa(X) <= seAlimenta(Y, X) e animal(X)
?presa(X)
peixe
raposa
Cláusulas de Horn
A(u) A(v) Al(u,p)
Trata-se de uma fbf formada por A(p) P(g) Al(u,r)
predicados ou negação de predicados
conectada por disjunções, onde no A(r) P(f) Al(v,g)
máximo um predicado não esteja negado. [Al(y, x)]∧ [A(x)])→Pr(x)
● Al(v, g)
Al(u,p)
Al(u,p)
Resolução
[Al(u,p)]→ [A(p)]’
[A(p)]’∨Pr(p)
∨Pr(p)
[A(p)]’∨Pr(p)
Cláusulas de Horn A(u) A(v) Al(u,p)
A(p) P(g) Al(u,r)
?presa(X)
A(r) P(f) Al(v,g)
[Al’(y, x)]∨ [A(x)]’∨Pr(x)
[A(p)]’∨Pr(p)
A(p) A(p)
nacadeiaalimentar(urso, Y)
<= seAlimenta(urso, Z) e
nacadeiaalimentar(Z, Y)
Recorrência
nacadeiaalimentar(urso, Y)
<= seAlimenta(urso, Z) e nacadeiaalimentar(Z, Y)
seAlimenta(urso, peixe)
seAlimenta(peixe, peixinho)
seAlimenta(peixinho, alga)
seAlimenta(guaxinim, peixe)
seAlimenta(urso, guaxinim)
seAlimenta(urso, raposa)
seAlimenta(raposa, coelho)
seAlimenta(coelho, grama)
seAlimenta(urso, veado)
seAlimenta(veado, grama)
seAlimenta(lince, veado)
Recorrência
nacadeiaalimentar(urso, Y)
<= seAlimenta(uso, Z) e cadeiaalimentar(Z, Y)
seAlimenta(urso, guaxinim) e
cadeiaAlimentar(guaxinin,Y)
seAlimenta(urso, raposa) e
cadeiaAlimentar(raposa,Y)
seAlimenta(urso, veado) e
cadeiaAlimentar(veado,Y)
Recorrência
nacadeiaalimentar(urso, Y)
<= seAlimenta(urso, Z) e cadeiaalimentar(Z, Y)
cadeiaAlimentar(urso,peixe)
<= seAlimenta(urso, peixe) e cadeiaalimentar(peixe, Y)
cadeiaAlimentar(peixe,peixinho)
<= seAlimenta(peixe, peixinho) e
cadeiaalimentar(peixinho, alga)
cadeiaalimentar(peixinho, alga)
<= seAlimenta(peixinho, alga))
Os conceitos e exemplos apresentados
nesses slides são baseados no conteúdo da
seção 1.5 do material-base “Fundamentos
Matemáticos para a Ciência da Computação”,
J.L. Gersting, 7a edição, LTC editora.
FUNDAMENTOS MATEMÁTICOS
PARA COMPUTAÇÃO
Programação Lógica