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