SlideShare uma empresa Scribd logo
1 de 55
Baixar para ler offline
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Inteligˆencia Artificial - Programac¸ ˜ao L´ogica
Professor Dr. Eduardo S. Pereira.
28 de agosto de 2017
Dr. E. S. Pereira 1
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
1 Programac¸ ˜ao L´ogica
2 Programas L´ogicos
3 Programac¸ ˜ao L´ogica em Prolog
4 Exerc´ıcios
Dr. E. S. Pereira 2
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programac¸ ˜ao L´ogica
Programac¸ ˜ao L´ogica
Usa L´ogica Formal de Primeira Ordem;
Uma das bases s˜ao as Cl´ausulas de Horn;
Uma Cl´ausula de Horn ou ´e uma cl´ausula de programa ou
uma cl´ausula go
Dr. E. S. Pereira 3
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programac¸ ˜ao L´ogica
Programac¸ ˜ao L´ogica
Usa L´ogica Formal de Primeira Ordem;
Uma das bases s˜ao as Cl´ausulas de Horn;
Uma Cl´ausula de Horn ou ´e uma cl´ausula de programa ou
uma cl´ausula go
Dr. E. S. Pereira 4
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programac¸ ˜ao L´ogica
Programac¸ ˜ao L´ogica
Usa L´ogica Formal de Primeira Ordem;
Uma das bases s˜ao as Cl´ausulas de Horn;
Uma Cl´ausula de Horn ou ´e uma cl´ausula de programa ou
uma cl´ausula go
Dr. E. S. Pereira 5
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula de Programa
Cl´ausula de Programa
Possui apenas uma literal na cabec¸a.
O corpo pode ou n˜ao ser vazio.
a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn
b- Corpo vazio (Incondicional): A ←
Dr. E. S. Pereira 6
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula de Programa
Cl´ausula de Programa
Possui apenas uma literal na cabec¸a.
O corpo pode ou n˜ao ser vazio.
a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn
b- Corpo vazio (Incondicional): A ←
Dr. E. S. Pereira 7
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula de Programa
Cl´ausula de Programa
Possui apenas uma literal na cabec¸a.
O corpo pode ou n˜ao ser vazio.
a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn
b- Corpo vazio (Incondicional): A ←
Dr. E. S. Pereira 8
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula de Programa
Cl´ausula de Programa
Possui apenas uma literal na cabec¸a.
O corpo pode ou n˜ao ser vazio.
a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn
b- Corpo vazio (Incondicional): A ←
Dr. E. S. Pereira 9
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula gol
Cl´ausula gol
Cabec¸a vazia.
Indica negac¸ ˜ao.
Cl´ausula gol: ← B1,...,Bn
← p(x) indica ¬∃xp(x);
Dr. E. S. Pereira 10
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula gol
Cl´ausula gol
Cabec¸a vazia.
Indica negac¸ ˜ao.
Cl´ausula gol: ← B1,...,Bn
← p(x) indica ¬∃xp(x);
Dr. E. S. Pereira 11
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula gol
Cl´ausula gol
Cabec¸a vazia.
Indica negac¸ ˜ao.
Cl´ausula gol: ← B1,...,Bn
← p(x) indica ¬∃xp(x);
Dr. E. S. Pereira 12
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula gol
Cl´ausula gol
Cabec¸a vazia.
Indica negac¸ ˜ao.
Cl´ausula gol: ← B1,...,Bn
← p(x) indica ¬∃xp(x);
Dr. E. S. Pereira 13
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula vazia
Cl´ausula vazia
Sem corpo e sem cabec¸a.
Indica contradic¸ ˜ao.
Representada por
Dr. E. S. Pereira 14
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula vazia
Cl´ausula vazia
Sem corpo e sem cabec¸a.
Indica contradic¸ ˜ao.
Representada por
Dr. E. S. Pereira 15
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula vazia
Cl´ausula vazia
Sem corpo e sem cabec¸a.
Indica contradic¸ ˜ao.
Representada por
Dr. E. S. Pereira 16
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Cl´ausula de Horn
Cl´ausula Horn
Dr. E. S. Pereira 17
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programas L´ogicos
Programas L´ogicos
´E um conjunto finito de cl´ausulas de programa.
(1) p(a,b) ← .
(2) q(a,b) ← .
(3) r(x,y) ← p(x,y).
(4) s(x,y) ← q(y,x).
Dr. E. S. Pereira 18
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programas L´ogicos
Programas L´ogicos
´E um conjunto finito de cl´ausulas de programa.
(1) p(x) ← q(x).
(2) p(a) ← .
(3) q(c) ← .
(4) p(b) ← .
Dr. E. S. Pereira 19
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programas L´ogicos
Programas L´ogicos
p(a) ´e um axioma.
q(b) ´e um axioma.
Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro.
Usamos como regra de inferˆencia: i)regra de modus ponens
e a ii) regra de particularizac¸ ˜ao.
Podemos construir uma teoria formal axiom´atica a partir de
um programa.
Dr. E. S. Pereira 20
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programas L´ogicos
Programas L´ogicos
p(a) ´e um axioma.
q(b) ´e um axioma.
Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro.
Usamos como regra de inferˆencia: i)regra de modus ponens
e a ii) regra de particularizac¸ ˜ao.
Podemos construir uma teoria formal axiom´atica a partir de
um programa.
Dr. E. S. Pereira 21
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programas L´ogicos
Programas L´ogicos
p(a) ´e um axioma.
q(b) ´e um axioma.
Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro.
Usamos como regra de inferˆencia: i)regra de modus ponens
e a ii) regra de particularizac¸ ˜ao.
Podemos construir uma teoria formal axiom´atica a partir de
um programa.
Dr. E. S. Pereira 22
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programas L´ogicos
Programas L´ogicos
p(a) ´e um axioma.
q(b) ´e um axioma.
Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro.
Usamos como regra de inferˆencia: i)regra de modus ponens
e a ii) regra de particularizac¸ ˜ao.
Podemos construir uma teoria formal axiom´atica a partir de
um programa.
Dr. E. S. Pereira 23
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Programas L´ogicos
Programas L´ogicos
p(a) ´e um axioma.
q(b) ´e um axioma.
Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro.
Usamos como regra de inferˆencia: i)regra de modus ponens
e a ii) regra de particularizac¸ ˜ao.
Podemos construir uma teoria formal axiom´atica a partir de
um programa.
Dr. E. S. Pereira 24
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Prolog
Prolog
Programming in Logic - Programando em L´ogica.
A primeira implementac¸ ˜ao da linguagem Prolog foi realizada
por Alain Colmenrauer e sua equipe, na Universidade de
Aix-Mareseille, na Franc¸a, em 1972.
A formalizac¸ ˜ao semˆantica da programac¸ ˜ao com cl´ausulas de
Horn ´e devido a Kowalski (1974) e especificac¸ ˜oes do primeiro
”standard”, foi realizado por Warrern e Pereira em 1977.
Dr. E. S. Pereira 25
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Prolog
Prolog
Programming in Logic - Programando em L´ogica.
A primeira implementac¸ ˜ao da linguagem Prolog foi realizada
por Alain Colmenrauer e sua equipe, na Universidade de
Aix-Mareseille, na Franc¸a, em 1972.
A formalizac¸ ˜ao semˆantica da programac¸ ˜ao com cl´ausulas de
Horn ´e devido a Kowalski (1974) e especificac¸ ˜oes do primeiro
”standard”, foi realizado por Warrern e Pereira em 1977.
Dr. E. S. Pereira 26
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Prolog
Prolog
Programming in Logic - Programando em L´ogica.
A primeira implementac¸ ˜ao da linguagem Prolog foi realizada
por Alain Colmenrauer e sua equipe, na Universidade de
Aix-Mareseille, na Franc¸a, em 1972.
A formalizac¸ ˜ao semˆantica da programac¸ ˜ao com cl´ausulas de
Horn ´e devido a Kowalski (1974) e especificac¸ ˜oes do primeiro
”standard”, foi realizado por Warrern e Pereira em 1977.
Dr. E. S. Pereira 27
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Prolog
Prolog
A programac¸ ˜ao em Prolog consiste em estabelecer relac¸ ˜oes
entre objetos e em formular consultas sobre tais relac¸ ˜oes de
forma n˜ao num´erica, mas simb´olica.
Um programa Prolog ´e formado por cl´ausulas: fatos ou
assertivas, regras ou procedimentos e consultas.
Interrogar um programa acerca de suas relac¸ ˜oes por meio de
uma consulta corresponde a consultar uma base de
conhecimento.
Dr. E. S. Pereira 28
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Prolog
Prolog
A programac¸ ˜ao em Prolog consiste em estabelecer relac¸ ˜oes
entre objetos e em formular consultas sobre tais relac¸ ˜oes de
forma n˜ao num´erica, mas simb´olica.
Um programa Prolog ´e formado por cl´ausulas: fatos ou
assertivas, regras ou procedimentos e consultas.
Interrogar um programa acerca de suas relac¸ ˜oes por meio de
uma consulta corresponde a consultar uma base de
conhecimento.
Dr. E. S. Pereira 29
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Prolog
Prolog
A programac¸ ˜ao em Prolog consiste em estabelecer relac¸ ˜oes
entre objetos e em formular consultas sobre tais relac¸ ˜oes de
forma n˜ao num´erica, mas simb´olica.
Um programa Prolog ´e formado por cl´ausulas: fatos ou
assertivas, regras ou procedimentos e consultas.
Interrogar um programa acerca de suas relac¸ ˜oes por meio de
uma consulta corresponde a consultar uma base de
conhecimento.
Dr. E. S. Pereira 30
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Fatos
Fatos
Denota uma verdade incondicional.
Composto por um predicado que estabelece uma relac¸ ˜ao
entre seus argumentos, encerrado por ponto(.).
1 progenitor(maria,jos´e).
2 progenitor(jo˜ao,jos´e).
3 progenitor(jo˜ao,ana).
4 progenitor(jos´e,j´ulia).
5 progenitor(jos´e,´ıris).
Dr. E. S. Pereira 31
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Fatos
Fatos
Denota uma verdade incondicional.
Composto por um predicado que estabelece uma relac¸ ˜ao
entre seus argumentos, encerrado por ponto(.).
1 progenitor(maria,jos´e).
2 progenitor(jo˜ao,jos´e).
3 progenitor(jo˜ao,ana).
4 progenitor(jos´e,j´ulia).
5 progenitor(jos´e,´ıris).
Dr. E. S. Pereira 32
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Fatos
Fatos
Denota uma verdade incondicional.
Composto por um predicado que estabelece uma relac¸ ˜ao
entre seus argumentos, encerrado por ponto(.).
1 progenitor(maria,jos´e).
2 progenitor(jo˜ao,jos´e).
3 progenitor(jo˜ao,ana).
4 progenitor(jos´e,j´ulia).
5 progenitor(jos´e,´ıris).
Dr. E. S. Pereira 33
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Regras
Regras
Definem as condic¸ ˜oes que devem ser satisfeitas para que
uma certa declarac¸ ˜ao seja considerada verdadeira.,
Regras especificam algo que ”pode ser verdadeiro se
algumas condic¸ ˜oes forem satisfeitas”.
1 filho(Y,X) :- progenitor(X,Y).
Dr. E. S. Pereira 34
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Regras
Regras
Definem as condic¸ ˜oes que devem ser satisfeitas para que
uma certa declarac¸ ˜ao seja considerada verdadeira.,
Regras especificam algo que ”pode ser verdadeiro se
algumas condic¸ ˜oes forem satisfeitas”.
1 filho(Y,X) :- progenitor(X,Y).
Dr. E. S. Pereira 35
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Regras
Regras
Definem as condic¸ ˜oes que devem ser satisfeitas para que
uma certa declarac¸ ˜ao seja considerada verdadeira.,
Regras especificam algo que ”pode ser verdadeiro se
algumas condic¸ ˜oes forem satisfeitas”.
1 filho(Y,X) :- progenitor(X,Y).
Dr. E. S. Pereira 36
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
´Atomos e N´umeros
´Atomos e N´umeros
Constantes s˜ao escritos em min´usculas (j´ulia, jos´e, maria),
vari´aveis comec¸am com mai´uscula ou (X,Y,Casa, 194).
Conectivos: (,) e; (;) ou; (:-) implicac¸ ˜ao.
N´umeros: inteiros (1, 3, 5, -449) ou reais (-1.234, 0.42134)
Dr. E. S. Pereira 37
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
´Atomos e N´umeros
´Atomos e N´umeros
Constantes s˜ao escritos em min´usculas (j´ulia, jos´e, maria),
vari´aveis comec¸am com mai´uscula ou (X,Y,Casa, 194).
Conectivos: (,) e; (;) ou; (:-) implicac¸ ˜ao.
N´umeros: inteiros (1, 3, 5, -449) ou reais (-1.234, 0.42134)
Dr. E. S. Pereira 38
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
´Atomos e N´umeros
´Atomos e N´umeros
Constantes s˜ao escritos em min´usculas (j´ulia, jos´e, maria),
vari´aveis comec¸am com mai´uscula ou (X,Y,Casa, 194).
Conectivos: (,) e; (;) ou; (:-) implicac¸ ˜ao.
N´umeros: inteiros (1, 3, 5, -449) ou reais (-1.234, 0.42134)
Dr. E. S. Pereira 39
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Recurs˜ao
Recurs˜ao
progenitor(maria ,jos´e).
progenitor(jo˜ao ,jos´e).
progenitor(antˆonio ,maria).
progenitor(marta ,maria).
progenitor(clara ,jo˜ao).
progenitor(andr´e ,jo˜ao).
home(jos´e).
home(jo˜ao).
home(andr´e).
mulher(maria).
mulher(marta).
mulher(clara).
pai(X,Y):- progenitor(X,Y),home(X).
mae(X,Y) :- progenitor(X,Y),mulher(X).
avoh(X,Y) : pai(X,Z),pai(Z,Y).
avom(X,Y) : mae(X,Z),mae(Z,Y).
Dr. E. S. Pereira 40
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Operadores Matem´aticos
* Multiplicac¸ ˜ao;
/ divis˜ao.
div divis˜ao inteira;
mod resto da divis˜ao inteira;
ˆpotenciac¸ ˜ao.
Dr. E. S. Pereira 41
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Operadores Matem´aticos
* Multiplicac¸ ˜ao;
/ divis˜ao.
div divis˜ao inteira;
mod resto da divis˜ao inteira;
ˆpotenciac¸ ˜ao.
Dr. E. S. Pereira 42
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Operadores Matem´aticos
* Multiplicac¸ ˜ao;
/ divis˜ao.
div divis˜ao inteira;
mod resto da divis˜ao inteira;
ˆpotenciac¸ ˜ao.
Dr. E. S. Pereira 43
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Operadores Matem´aticos
* Multiplicac¸ ˜ao;
/ divis˜ao.
div divis˜ao inteira;
mod resto da divis˜ao inteira;
ˆpotenciac¸ ˜ao.
Dr. E. S. Pereira 44
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Operadores Matem´aticos
* Multiplicac¸ ˜ao;
/ divis˜ao.
div divis˜ao inteira;
mod resto da divis˜ao inteira;
ˆpotenciac¸ ˜ao.
Dr. E. S. Pereira 45
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Operadores de Comparac¸ ˜ao
Operadores de Comparac¸ ˜ao
Operador Significado
> Maior que
< Menor que
>= Maior ou igual a
=< Menor ou igual a
=:= Valores iguais
=  = Valores diferentes;
Dr. E. S. Pereira 46
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Func¸ ˜oes pr´e definidas.
Func¸ ˜oes pr´e definidas.
Operador Significado
abs(X) Valor absoluto
acos(X) arco-cosseno
asin(X) arco-seno
atan(X) arco-tangente
cos(X) cosseno
sin(X) seno
tan(X) tangente
exp(X) valor de ”e”elevado a x
ln(X) logaritmo natural
log(X) logaritmo decimal
sqrt(X) raiz quadrada
round(X,N) Arrendondamento de X para N casas decimais
pi valor de Pi com 15 casas decimais (X is pi.)
random(X) um n´umero aleat´orio entre 0 e 1.Dr. E. S. Pereira 47
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Exemplo
X is pi.
X is tan(0.45).
teste(X):- random(0,10,X),
write("O valor de X ´e: "),
write(X).
Dr. E. S. Pereira 48
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Calculo do Peso
aceleracao_da_gravidade(terra ,9.8).
aceleracao_da_gravidade(lua ,2.1).
peso(Massa ,Local ,Peso) :-
write("Digite um local: "),nl,
read(Local),
aceleracao_da_gravidade(Local ,G),
Peso is (Massa * G),
write("O Peso ´e: "),write(Peso),fail.
Dr. E. S. Pereira 49
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Condicional ou
teste_maior(X,Y,Z) :- ((X > Y), Z is X);
((Y>X), Z is Y).
Se X for maior que Y, ent˜ao Z ter´a o valor de X, do contr´ario, Se Y
for maior que X, Z ter´a o valor de Y.
Dr. E. S. Pereira 50
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Exerc´ıcio 1
Escreva um programa em Prolog para representar os
seguinte:
1. Jo˜ao nasceu em S˜ao Jos´e dos Campos e Jean nasceu em
Paris.
2. S˜ao Jos´e dos Campos fica no Brasil.
3. Paris fica na Franc¸a.
4. S´o ´e paulista quem Nasceu no estado de S˜ao Paulo
5. S˜ao Jos´e fica em S˜ao Paulo
Consulte se Jo˜ao ´e paulista.
Dr. E. S. Pereira 51
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Exerc´ıcio 2
Escreva um programa em Prolog, baseado na ´arvore
geneal´ogica abaixo, para representar as relac¸ ˜oes: pai, m˜ae,
filho, filha, tio, tia, primo, avˆo, av´o, cunhada.
Dr. E. S. Pereira 52
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Exerc´ıcio 3
Escreva a f´ormula de Bhaskara em Prolog. Fac¸a de modo
que o usu´ario digite os valores de a, b e c, sabendo que
∆ = b2 −4ac e x1 = (−b+
√
∆)/(2a) e
x2 = (−b+
√
∆)/(2a).
Dr. E. S. Pereira 53
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
Exerc´ıcio 4
Escreva um predicado distancia(X1, Y1,X2, Y2, D) em que D
deve ser a distˆancia entre os pontos (X1, Y1) e (X2, Y2) no
plano cartesiano. Sabendo que a distˆancia ´e dada por
D = (X2−X1)2 +(Y2−Y1)2
Dr. E. S. Pereira 54
Dr. E. S.
Pereira
Sum´ario
Programac¸ ˜ao
L´ogica
Programas
L´ogicos
Programac¸ ˜ao
L´ogica em
Prolog
Exerc´ıcios
FIM
Grato
MUITO OBRIGADO.
Dr. E. S. Pereira 55

Mais conteúdo relacionado

Mais de Eduardo S. Pereira

Mais de Eduardo S. Pereira (20)

Aula 10 Modelagem de Dados
Aula 10 Modelagem de DadosAula 10 Modelagem de Dados
Aula 10 Modelagem de Dados
 
Aula 9 Modelagem de Dados
Aula 9 Modelagem de DadosAula 9 Modelagem de Dados
Aula 9 Modelagem de Dados
 
Aula 7 Modelagem de Dados
Aula 7 Modelagem de DadosAula 7 Modelagem de Dados
Aula 7 Modelagem de Dados
 
Aula 8 Modelagem de Dados
Aula 8 Modelagem de DadosAula 8 Modelagem de Dados
Aula 8 Modelagem de Dados
 
Primeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de DadosPrimeira Lista de Exercícios de Modelagem de Dados
Primeira Lista de Exercícios de Modelagem de Dados
 
Aula 06 Modelagem de Dados
Aula 06 Modelagem de DadosAula 06 Modelagem de Dados
Aula 06 Modelagem de Dados
 
Aula05
Aula05Aula05
Aula05
 
Aula04
Aula04Aula04
Aula04
 
Aula03
Aula03Aula03
Aula03
 
Aula02
Aula02Aula02
Aula02
 
Aula01
Aula01Aula01
Aula01
 
Aula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de DadosAula 7 - Algoritmos e Estrutura de Dados
Aula 7 - Algoritmos e Estrutura de Dados
 
Linguagens Formais e Autômatos aula 04
Linguagens Formais e Autômatos aula 04Linguagens Formais e Autômatos aula 04
Linguagens Formais e Autômatos aula 04
 
Inteligência Artificial - Aula 01
Inteligência Artificial - Aula 01Inteligência Artificial - Aula 01
Inteligência Artificial - Aula 01
 
Primeira Lista de Exercícios de Inteligência Artificial
Primeira Lista de Exercícios de Inteligência ArtificialPrimeira Lista de Exercícios de Inteligência Artificial
Primeira Lista de Exercícios de Inteligência Artificial
 
Linguagens Formais e Autômatos
Linguagens Formais e AutômatosLinguagens Formais e Autômatos
Linguagens Formais e Autômatos
 
Algoritmo e Estrutura de dados em C - Aula 06 - 2019
Algoritmo e Estrutura de dados em C - Aula 06 - 2019Algoritmo e Estrutura de dados em C - Aula 06 - 2019
Algoritmo e Estrutura de dados em C - Aula 06 - 2019
 
Algoritmo e Estrutura de dados em C - Aula 04 e 05 - 2019
Algoritmo e Estrutura de dados em C - Aula 04 e 05 - 2019Algoritmo e Estrutura de dados em C - Aula 04 e 05 - 2019
Algoritmo e Estrutura de dados em C - Aula 04 e 05 - 2019
 
Algoritmo e Estrutura de dados em C - Aula 03 - 2019
Algoritmo e Estrutura de dados em C - Aula 03 - 2019Algoritmo e Estrutura de dados em C - Aula 03 - 2019
Algoritmo e Estrutura de dados em C - Aula 03 - 2019
 
Algoritmo e Estrutura de dados em C - Aula 02 - 2019
Algoritmo e Estrutura de dados em C - Aula 02 - 2019Algoritmo e Estrutura de dados em C - Aula 02 - 2019
Algoritmo e Estrutura de dados em C - Aula 02 - 2019
 

Programacao logica e Inteligência Artificial

  • 1. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Inteligˆencia Artificial - Programac¸ ˜ao L´ogica Professor Dr. Eduardo S. Pereira. 28 de agosto de 2017 Dr. E. S. Pereira 1
  • 2. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios 1 Programac¸ ˜ao L´ogica 2 Programas L´ogicos 3 Programac¸ ˜ao L´ogica em Prolog 4 Exerc´ıcios Dr. E. S. Pereira 2
  • 3. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programac¸ ˜ao L´ogica Programac¸ ˜ao L´ogica Usa L´ogica Formal de Primeira Ordem; Uma das bases s˜ao as Cl´ausulas de Horn; Uma Cl´ausula de Horn ou ´e uma cl´ausula de programa ou uma cl´ausula go Dr. E. S. Pereira 3
  • 4. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programac¸ ˜ao L´ogica Programac¸ ˜ao L´ogica Usa L´ogica Formal de Primeira Ordem; Uma das bases s˜ao as Cl´ausulas de Horn; Uma Cl´ausula de Horn ou ´e uma cl´ausula de programa ou uma cl´ausula go Dr. E. S. Pereira 4
  • 5. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programac¸ ˜ao L´ogica Programac¸ ˜ao L´ogica Usa L´ogica Formal de Primeira Ordem; Uma das bases s˜ao as Cl´ausulas de Horn; Uma Cl´ausula de Horn ou ´e uma cl´ausula de programa ou uma cl´ausula go Dr. E. S. Pereira 5
  • 6. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula de Programa Cl´ausula de Programa Possui apenas uma literal na cabec¸a. O corpo pode ou n˜ao ser vazio. a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn b- Corpo vazio (Incondicional): A ← Dr. E. S. Pereira 6
  • 7. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula de Programa Cl´ausula de Programa Possui apenas uma literal na cabec¸a. O corpo pode ou n˜ao ser vazio. a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn b- Corpo vazio (Incondicional): A ← Dr. E. S. Pereira 7
  • 8. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula de Programa Cl´ausula de Programa Possui apenas uma literal na cabec¸a. O corpo pode ou n˜ao ser vazio. a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn b- Corpo vazio (Incondicional): A ← Dr. E. S. Pereira 8
  • 9. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula de Programa Cl´ausula de Programa Possui apenas uma literal na cabec¸a. O corpo pode ou n˜ao ser vazio. a- Corpo n˜ao vazio (Condicional): A ← B1,...,Bn b- Corpo vazio (Incondicional): A ← Dr. E. S. Pereira 9
  • 10. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula gol Cl´ausula gol Cabec¸a vazia. Indica negac¸ ˜ao. Cl´ausula gol: ← B1,...,Bn ← p(x) indica ¬∃xp(x); Dr. E. S. Pereira 10
  • 11. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula gol Cl´ausula gol Cabec¸a vazia. Indica negac¸ ˜ao. Cl´ausula gol: ← B1,...,Bn ← p(x) indica ¬∃xp(x); Dr. E. S. Pereira 11
  • 12. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula gol Cl´ausula gol Cabec¸a vazia. Indica negac¸ ˜ao. Cl´ausula gol: ← B1,...,Bn ← p(x) indica ¬∃xp(x); Dr. E. S. Pereira 12
  • 13. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula gol Cl´ausula gol Cabec¸a vazia. Indica negac¸ ˜ao. Cl´ausula gol: ← B1,...,Bn ← p(x) indica ¬∃xp(x); Dr. E. S. Pereira 13
  • 14. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula vazia Cl´ausula vazia Sem corpo e sem cabec¸a. Indica contradic¸ ˜ao. Representada por Dr. E. S. Pereira 14
  • 15. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula vazia Cl´ausula vazia Sem corpo e sem cabec¸a. Indica contradic¸ ˜ao. Representada por Dr. E. S. Pereira 15
  • 16. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula vazia Cl´ausula vazia Sem corpo e sem cabec¸a. Indica contradic¸ ˜ao. Representada por Dr. E. S. Pereira 16
  • 17. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Cl´ausula de Horn Cl´ausula Horn Dr. E. S. Pereira 17
  • 18. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programas L´ogicos Programas L´ogicos ´E um conjunto finito de cl´ausulas de programa. (1) p(a,b) ← . (2) q(a,b) ← . (3) r(x,y) ← p(x,y). (4) s(x,y) ← q(y,x). Dr. E. S. Pereira 18
  • 19. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programas L´ogicos Programas L´ogicos ´E um conjunto finito de cl´ausulas de programa. (1) p(x) ← q(x). (2) p(a) ← . (3) q(c) ← . (4) p(b) ← . Dr. E. S. Pereira 19
  • 20. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programas L´ogicos Programas L´ogicos p(a) ´e um axioma. q(b) ´e um axioma. Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro. Usamos como regra de inferˆencia: i)regra de modus ponens e a ii) regra de particularizac¸ ˜ao. Podemos construir uma teoria formal axiom´atica a partir de um programa. Dr. E. S. Pereira 20
  • 21. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programas L´ogicos Programas L´ogicos p(a) ´e um axioma. q(b) ´e um axioma. Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro. Usamos como regra de inferˆencia: i)regra de modus ponens e a ii) regra de particularizac¸ ˜ao. Podemos construir uma teoria formal axiom´atica a partir de um programa. Dr. E. S. Pereira 21
  • 22. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programas L´ogicos Programas L´ogicos p(a) ´e um axioma. q(b) ´e um axioma. Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro. Usamos como regra de inferˆencia: i)regra de modus ponens e a ii) regra de particularizac¸ ˜ao. Podemos construir uma teoria formal axiom´atica a partir de um programa. Dr. E. S. Pereira 22
  • 23. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programas L´ogicos Programas L´ogicos p(a) ´e um axioma. q(b) ´e um axioma. Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro. Usamos como regra de inferˆencia: i)regra de modus ponens e a ii) regra de particularizac¸ ˜ao. Podemos construir uma teoria formal axiom´atica a partir de um programa. Dr. E. S. Pereira 23
  • 24. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Programas L´ogicos Programas L´ogicos p(a) ´e um axioma. q(b) ´e um axioma. Para todo x, se ¬p(x) ´e verdadeiro ent˜ao ¬p(x) ´e verdadeiro. Usamos como regra de inferˆencia: i)regra de modus ponens e a ii) regra de particularizac¸ ˜ao. Podemos construir uma teoria formal axiom´atica a partir de um programa. Dr. E. S. Pereira 24
  • 25. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Prolog Prolog Programming in Logic - Programando em L´ogica. A primeira implementac¸ ˜ao da linguagem Prolog foi realizada por Alain Colmenrauer e sua equipe, na Universidade de Aix-Mareseille, na Franc¸a, em 1972. A formalizac¸ ˜ao semˆantica da programac¸ ˜ao com cl´ausulas de Horn ´e devido a Kowalski (1974) e especificac¸ ˜oes do primeiro ”standard”, foi realizado por Warrern e Pereira em 1977. Dr. E. S. Pereira 25
  • 26. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Prolog Prolog Programming in Logic - Programando em L´ogica. A primeira implementac¸ ˜ao da linguagem Prolog foi realizada por Alain Colmenrauer e sua equipe, na Universidade de Aix-Mareseille, na Franc¸a, em 1972. A formalizac¸ ˜ao semˆantica da programac¸ ˜ao com cl´ausulas de Horn ´e devido a Kowalski (1974) e especificac¸ ˜oes do primeiro ”standard”, foi realizado por Warrern e Pereira em 1977. Dr. E. S. Pereira 26
  • 27. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Prolog Prolog Programming in Logic - Programando em L´ogica. A primeira implementac¸ ˜ao da linguagem Prolog foi realizada por Alain Colmenrauer e sua equipe, na Universidade de Aix-Mareseille, na Franc¸a, em 1972. A formalizac¸ ˜ao semˆantica da programac¸ ˜ao com cl´ausulas de Horn ´e devido a Kowalski (1974) e especificac¸ ˜oes do primeiro ”standard”, foi realizado por Warrern e Pereira em 1977. Dr. E. S. Pereira 27
  • 28. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Prolog Prolog A programac¸ ˜ao em Prolog consiste em estabelecer relac¸ ˜oes entre objetos e em formular consultas sobre tais relac¸ ˜oes de forma n˜ao num´erica, mas simb´olica. Um programa Prolog ´e formado por cl´ausulas: fatos ou assertivas, regras ou procedimentos e consultas. Interrogar um programa acerca de suas relac¸ ˜oes por meio de uma consulta corresponde a consultar uma base de conhecimento. Dr. E. S. Pereira 28
  • 29. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Prolog Prolog A programac¸ ˜ao em Prolog consiste em estabelecer relac¸ ˜oes entre objetos e em formular consultas sobre tais relac¸ ˜oes de forma n˜ao num´erica, mas simb´olica. Um programa Prolog ´e formado por cl´ausulas: fatos ou assertivas, regras ou procedimentos e consultas. Interrogar um programa acerca de suas relac¸ ˜oes por meio de uma consulta corresponde a consultar uma base de conhecimento. Dr. E. S. Pereira 29
  • 30. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Prolog Prolog A programac¸ ˜ao em Prolog consiste em estabelecer relac¸ ˜oes entre objetos e em formular consultas sobre tais relac¸ ˜oes de forma n˜ao num´erica, mas simb´olica. Um programa Prolog ´e formado por cl´ausulas: fatos ou assertivas, regras ou procedimentos e consultas. Interrogar um programa acerca de suas relac¸ ˜oes por meio de uma consulta corresponde a consultar uma base de conhecimento. Dr. E. S. Pereira 30
  • 31. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Fatos Fatos Denota uma verdade incondicional. Composto por um predicado que estabelece uma relac¸ ˜ao entre seus argumentos, encerrado por ponto(.). 1 progenitor(maria,jos´e). 2 progenitor(jo˜ao,jos´e). 3 progenitor(jo˜ao,ana). 4 progenitor(jos´e,j´ulia). 5 progenitor(jos´e,´ıris). Dr. E. S. Pereira 31
  • 32. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Fatos Fatos Denota uma verdade incondicional. Composto por um predicado que estabelece uma relac¸ ˜ao entre seus argumentos, encerrado por ponto(.). 1 progenitor(maria,jos´e). 2 progenitor(jo˜ao,jos´e). 3 progenitor(jo˜ao,ana). 4 progenitor(jos´e,j´ulia). 5 progenitor(jos´e,´ıris). Dr. E. S. Pereira 32
  • 33. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Fatos Fatos Denota uma verdade incondicional. Composto por um predicado que estabelece uma relac¸ ˜ao entre seus argumentos, encerrado por ponto(.). 1 progenitor(maria,jos´e). 2 progenitor(jo˜ao,jos´e). 3 progenitor(jo˜ao,ana). 4 progenitor(jos´e,j´ulia). 5 progenitor(jos´e,´ıris). Dr. E. S. Pereira 33
  • 34. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Regras Regras Definem as condic¸ ˜oes que devem ser satisfeitas para que uma certa declarac¸ ˜ao seja considerada verdadeira., Regras especificam algo que ”pode ser verdadeiro se algumas condic¸ ˜oes forem satisfeitas”. 1 filho(Y,X) :- progenitor(X,Y). Dr. E. S. Pereira 34
  • 35. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Regras Regras Definem as condic¸ ˜oes que devem ser satisfeitas para que uma certa declarac¸ ˜ao seja considerada verdadeira., Regras especificam algo que ”pode ser verdadeiro se algumas condic¸ ˜oes forem satisfeitas”. 1 filho(Y,X) :- progenitor(X,Y). Dr. E. S. Pereira 35
  • 36. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Regras Regras Definem as condic¸ ˜oes que devem ser satisfeitas para que uma certa declarac¸ ˜ao seja considerada verdadeira., Regras especificam algo que ”pode ser verdadeiro se algumas condic¸ ˜oes forem satisfeitas”. 1 filho(Y,X) :- progenitor(X,Y). Dr. E. S. Pereira 36
  • 37. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios ´Atomos e N´umeros ´Atomos e N´umeros Constantes s˜ao escritos em min´usculas (j´ulia, jos´e, maria), vari´aveis comec¸am com mai´uscula ou (X,Y,Casa, 194). Conectivos: (,) e; (;) ou; (:-) implicac¸ ˜ao. N´umeros: inteiros (1, 3, 5, -449) ou reais (-1.234, 0.42134) Dr. E. S. Pereira 37
  • 38. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios ´Atomos e N´umeros ´Atomos e N´umeros Constantes s˜ao escritos em min´usculas (j´ulia, jos´e, maria), vari´aveis comec¸am com mai´uscula ou (X,Y,Casa, 194). Conectivos: (,) e; (;) ou; (:-) implicac¸ ˜ao. N´umeros: inteiros (1, 3, 5, -449) ou reais (-1.234, 0.42134) Dr. E. S. Pereira 38
  • 39. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios ´Atomos e N´umeros ´Atomos e N´umeros Constantes s˜ao escritos em min´usculas (j´ulia, jos´e, maria), vari´aveis comec¸am com mai´uscula ou (X,Y,Casa, 194). Conectivos: (,) e; (;) ou; (:-) implicac¸ ˜ao. N´umeros: inteiros (1, 3, 5, -449) ou reais (-1.234, 0.42134) Dr. E. S. Pereira 39
  • 40. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Recurs˜ao Recurs˜ao progenitor(maria ,jos´e). progenitor(jo˜ao ,jos´e). progenitor(antˆonio ,maria). progenitor(marta ,maria). progenitor(clara ,jo˜ao). progenitor(andr´e ,jo˜ao). home(jos´e). home(jo˜ao). home(andr´e). mulher(maria). mulher(marta). mulher(clara). pai(X,Y):- progenitor(X,Y),home(X). mae(X,Y) :- progenitor(X,Y),mulher(X). avoh(X,Y) : pai(X,Z),pai(Z,Y). avom(X,Y) : mae(X,Z),mae(Z,Y). Dr. E. S. Pereira 40
  • 41. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Operadores Matem´aticos * Multiplicac¸ ˜ao; / divis˜ao. div divis˜ao inteira; mod resto da divis˜ao inteira; ˆpotenciac¸ ˜ao. Dr. E. S. Pereira 41
  • 42. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Operadores Matem´aticos * Multiplicac¸ ˜ao; / divis˜ao. div divis˜ao inteira; mod resto da divis˜ao inteira; ˆpotenciac¸ ˜ao. Dr. E. S. Pereira 42
  • 43. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Operadores Matem´aticos * Multiplicac¸ ˜ao; / divis˜ao. div divis˜ao inteira; mod resto da divis˜ao inteira; ˆpotenciac¸ ˜ao. Dr. E. S. Pereira 43
  • 44. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Operadores Matem´aticos * Multiplicac¸ ˜ao; / divis˜ao. div divis˜ao inteira; mod resto da divis˜ao inteira; ˆpotenciac¸ ˜ao. Dr. E. S. Pereira 44
  • 45. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Operadores Matem´aticos * Multiplicac¸ ˜ao; / divis˜ao. div divis˜ao inteira; mod resto da divis˜ao inteira; ˆpotenciac¸ ˜ao. Dr. E. S. Pereira 45
  • 46. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Operadores de Comparac¸ ˜ao Operadores de Comparac¸ ˜ao Operador Significado > Maior que < Menor que >= Maior ou igual a =< Menor ou igual a =:= Valores iguais = = Valores diferentes; Dr. E. S. Pereira 46
  • 47. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Func¸ ˜oes pr´e definidas. Func¸ ˜oes pr´e definidas. Operador Significado abs(X) Valor absoluto acos(X) arco-cosseno asin(X) arco-seno atan(X) arco-tangente cos(X) cosseno sin(X) seno tan(X) tangente exp(X) valor de ”e”elevado a x ln(X) logaritmo natural log(X) logaritmo decimal sqrt(X) raiz quadrada round(X,N) Arrendondamento de X para N casas decimais pi valor de Pi com 15 casas decimais (X is pi.) random(X) um n´umero aleat´orio entre 0 e 1.Dr. E. S. Pereira 47
  • 48. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Exemplo X is pi. X is tan(0.45). teste(X):- random(0,10,X), write("O valor de X ´e: "), write(X). Dr. E. S. Pereira 48
  • 49. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Calculo do Peso aceleracao_da_gravidade(terra ,9.8). aceleracao_da_gravidade(lua ,2.1). peso(Massa ,Local ,Peso) :- write("Digite um local: "),nl, read(Local), aceleracao_da_gravidade(Local ,G), Peso is (Massa * G), write("O Peso ´e: "),write(Peso),fail. Dr. E. S. Pereira 49
  • 50. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Condicional ou teste_maior(X,Y,Z) :- ((X > Y), Z is X); ((Y>X), Z is Y). Se X for maior que Y, ent˜ao Z ter´a o valor de X, do contr´ario, Se Y for maior que X, Z ter´a o valor de Y. Dr. E. S. Pereira 50
  • 51. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Exerc´ıcio 1 Escreva um programa em Prolog para representar os seguinte: 1. Jo˜ao nasceu em S˜ao Jos´e dos Campos e Jean nasceu em Paris. 2. S˜ao Jos´e dos Campos fica no Brasil. 3. Paris fica na Franc¸a. 4. S´o ´e paulista quem Nasceu no estado de S˜ao Paulo 5. S˜ao Jos´e fica em S˜ao Paulo Consulte se Jo˜ao ´e paulista. Dr. E. S. Pereira 51
  • 52. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Exerc´ıcio 2 Escreva um programa em Prolog, baseado na ´arvore geneal´ogica abaixo, para representar as relac¸ ˜oes: pai, m˜ae, filho, filha, tio, tia, primo, avˆo, av´o, cunhada. Dr. E. S. Pereira 52
  • 53. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Exerc´ıcio 3 Escreva a f´ormula de Bhaskara em Prolog. Fac¸a de modo que o usu´ario digite os valores de a, b e c, sabendo que ∆ = b2 −4ac e x1 = (−b+ √ ∆)/(2a) e x2 = (−b+ √ ∆)/(2a). Dr. E. S. Pereira 53
  • 54. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios Exerc´ıcio 4 Escreva um predicado distancia(X1, Y1,X2, Y2, D) em que D deve ser a distˆancia entre os pontos (X1, Y1) e (X2, Y2) no plano cartesiano. Sabendo que a distˆancia ´e dada por D = (X2−X1)2 +(Y2−Y1)2 Dr. E. S. Pereira 54
  • 55. Dr. E. S. Pereira Sum´ario Programac¸ ˜ao L´ogica Programas L´ogicos Programac¸ ˜ao L´ogica em Prolog Exerc´ıcios FIM Grato MUITO OBRIGADO. Dr. E. S. Pereira 55