SlideShare uma empresa Scribd logo
1 de 25
PROGRAMAÇÃO EM LÓGICA
Profª. Janaide Nogueira
EXEMPLO
 Um exemplo simples de fato com dois argumentos
seria a relação amiga:
 Amiga (joana, maria).
PORTANTO...
 Assim, definimos uma relação (amizade) entre dois
argumentos (joana e maria).
 Obviamente podemos ter um fato com apenas um
argumento:
 homem(carlos).
CLAUSULAS: REGRAS E FATOS
 filho(X,Y):-pai(Y,X).
cabeça
corpo
Conclusão Condições
EXEMPLO
PROGRAMA 1.1
 pai(adão,cain).
 pai(adão,abel).
 pai(adão,seth).
 pai(seth,enos).
Consultas
?- pai(adão,cain).
CONSULTAS
 As consultas tornam-se ainda mais interessantes
quando empregamos variáveis, ou seja,
identificadores para objetos não especificados. Por
exemplo,
 ?- pai(X,abel).
 Resposta
 X = adão.
CONSULTA
 Uma consulta com variáveis pode ter mais de uma
resposta. Nesse caso, o sistema apresentará a
primeira resposta e ficará aguardando até que seja
pressionado enter, que termina a consulta, ou
ponto-e-vírgula, que faz com que a próxima
resposta possível, se houver, seja apresentada.
 ?- pai(adão,X).
 X = cain ;
 X = abel ;
 X = seth ;
 no
QUEM É O PAI DO PAI DE ENOS?
 Então, como o pai de Enos não é conhecido a
priori, a consulta correspondente a essa pergunta
tem dois objetivos:
 primeiro, descobrir quem é o pai de Enos, digamos que
seja Y;
 depois, descobrir quem é o pai de Y.
 ?- pai(Y,enos), pai(X,Y).
 Y = seth
 X = adão
 yes
VARIÁVEL ANÔNIMA
 Outro tipo de variável importante é a variável
anônima. Uma variável anônima deve ser usada
quando seu valor específico for irrelevante numa
determinada consulta. Por exemplo, considerando
o Programa 1.1, suponha que desejássemos saber
quem já procriou, ou seja, quem tem filhos. Então,
como o nome dos filhos é uma informação
irrelevante, poderíamos digitar:
 ?- pai(X,_).
 A essa consulta o sistema responderia X = adão e X =
seth.
REGRAS
 Regras nos permitem definir novas relações em
termos de outras relações já existentes. Por
exemplo, a regra:
 avô(X,Y) :- pai(X,Z), pai(Z,Y).
 define a relação avô em termos da relação pai, ou
seja, estabelece que X é avô de Y se X tem um
filho Z que é pai de Y. Com essa regra, podemos
agora realizar consultas tais como
 ?- avô(X,enos).
 X = adão
REGRAS
 A regra para definir o relacionamento IRMÃO é
escrita como:
 irmão(X,Y) :- pai(Z,X), pai(Z,Y), X=Y.
 Evidentemente, poderíamos definir a relação irmão
simplesmente listando todas as suas instâncias.
Veja:
 irmão(cain,abel).
 irmão(cain,seth).
 irmão(abel,cain).
 irmão(abel,seth).
 irmão(seth,cain).
 irmão(seth,abel).
EXERCÍCIOS
 Digite o Programa 1.1, incluindo as regras que
definem as relações avô e irmão, e realize as
seguintes consultas:
 a) Quem são os filhos de Adão?
 b) Quem são os netos de Adão?
 c) Quem são os tios de Enos?
 Considere a seguinte base de fatos:
 aluno(joao, paradigmas).
 aluno(maria, paradigmas).
 aluno(joel, lab2).
 aluno(joel, estruturas).
 frequenta(joao, fied).
 frequenta(maria, fied).
 frequenta(joel, ifce).
 professor(carlos, paradigmas).
 professor(ana_paula, estruturas).
 professor(pedro, lab2).
 funcionario(pedro, ifce).
 funcionario(ana_paula, fied).
 funcionario(carlos, fied).
 Escreva as seguintes regras em prolog:
 a) Quem são os alunos do professor carlos?
 b) Quem são os alunos do professor X?
 b) Quem são as pessoas da universidade X? (alunos ou
docentes)
EXERCÍCIOS
EXERCÍCIOS
 Pouco se sabe da história passada da família
Pinheiro. Existem alguns registros antigos que
indicam que o casal José e Maria criou dois filhos,
o João e a Ana. Que a Ana teve duas filhas, a
Helena e a Joana, também parece ser verdade,
segundo os mesmos registros. Além disso, o Mário
é filho do João, pois muito se orgulha ele disso.
Estranho também, foi constatar que o Carlos
nasceu da relação entre a Helena, muito formosa,
e o Mário.
 a) Utilizando o predicado progenitor(X,Y) (ou seja,
X é progenitor de Y), represente em Prolog todos
os progenitores da família Pinheiro.
 b) Represente em Prolog as relações: sexo
(masculino ou feminino), irmã, irmão, descendente,
mãe, pai, primo.
 c) Formule em Prolog as seguintes questões:
 1. O João é filho do José?
 2. Quem são os filhos da Maria?
 3. Quem são os primos do Mário?
 Obs.: Exemplo de representação
 progenitor(mario,carlos).
 sexo(ana,feminino).
CONSIDERE A ÁRVORE GENEALÓGICA A SEGUIR:
 Usando fatos, defina as relações pai e mãe. Em seguida,
consulte o sistema para ver se suas definições estão
corretas.
 Acrescente ao programa os fatos necessários para
definir as relações homem e mulher. Por exemplo, para
estabelecer que Ana é mulher e Ivo é homem,
acrescente os fatos mulher(ana) e homem(ivo).
 Usando duas regras, defina a relação gerou(X,Y) tal que
X gerou Y se X é pai ou mãe de Y. Faça consultas para
verificar se sua definição está correta. Por exemplo, para
a consulta gerou(X,eva) o sistema deverá apresentar as
respostas X = ana e X = ivo.
 Codifique as regras equivalentes às seguintes
sentenças:
 a) Todo mundo que tem filhos é feliz.
 b) Um casal é formado por duas pessoas que têm filhos
em comum.
BANCO DE DADOS DEDUTIVO
ARITMÉTICA
 Prolog oferece um predicado especial is, bem
como um conjunto operadores, através dos quais
podemos efetuar operações aritméticas.
 ?- X is 2+3.
 X = 5
 Os operadores aritméticos são + (adição), -
(subtração), * (multiplicação), mod (resto), / (divisão
real), // (divisão inteira) e ^ (potenciação).
PROGRAMA 2.1: ÁREA E POPULAÇÃO DOS
PAÍSES.
 % país(Nome, Área, População)
 país(brasil, 9, 130).
 país(china, 12, 1800).
 país(eua, 9, 230).
 país(índia, 3, 450).
 O Programa 2.1 representa uma tabela que relaciona a
cada país sua área em Km2 e sua população em
milhões de habitantes. Com base nesse programa, por
exemplo, podemos determinar a densidade demográfica
do Brasil, através da seguinte consulta:
 ?- país(brasil,A,P), D is P/A.
 A = 9
 P = 130
 D = 14.4444
 Uma outra consulta que poderia ser feita é a
seguinte: "Qual a diferença entre a população da
China e da Índia?".
 ?- país(china,_,X), país(índia,_,Y), Z is X-Y.
 X = 1800
 Y = 450
 Z = 1350
COMPARAÇÃO
 Para realizar comparações numéricas podemos usar os
seguintes predicados primitivos: =:= (igual) , ==
(diferente), > (maior), >= (maior ou igual), < (menor) e
=< (menor ou igual). Por exemplo, com esses
predicados, podemos realizar consultas tais como:
 A área do Brasil é igual à área dos Estados Unidos?
 ?- país(brasil,X,_), país(eua,Y,_), X =:= Y.
 X = 9
 Y = 9
 Yes
 • A população dos Estados Unidos é maior que a
população da Índia?
 ?- país(eua,_,X), país(índia,_,Y), X > Y.
 No
EXERCÍCIOS
 Inclua no Programa 2.1 uma regra para o
predicado dens(P,D), que relaciona cada país P à
sua densidade demográfica correspondente D. Em
seguida, faça consultas para descobrir:
 a) qual a densidade demográfica de cada um dos
países;
 b) se a Índia é mais populosa que a China.
REFERÊNCIA
 LAGO, Silvio. INTRODUÇÃO À LINGUAGEM
PROLOG

Mais conteúdo relacionado

Mais procurados

Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)Gustavo Zimmermann
 
Lista de exercicios algoritmos com pseudocodigo
Lista de exercicios   algoritmos com pseudocodigoLista de exercicios   algoritmos com pseudocodigo
Lista de exercicios algoritmos com pseudocodigoMauro Pereira
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoLeinylson Fontinele
 
Unidade 04 - Estatística - Medidas de dispersão.ppt
Unidade 04 - Estatística - Medidas de dispersão.pptUnidade 04 - Estatística - Medidas de dispersão.ppt
Unidade 04 - Estatística - Medidas de dispersão.pptCrobelEtiquetas
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosFábio dos Reis
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosNatanael Simões
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Gercélia Ramos
 
Modelagem De Banco De Dados
Modelagem De Banco De DadosModelagem De Banco De Dados
Modelagem De Banco De Dadosmgoberto
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
 
Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)DaviMatos25
 
08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_erWalter Alves Pereira
 

Mais procurados (20)

Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
Banco de Dados II: Dinâmica de Perguntas e Respostas (aula 4)
 
Lista de exercicios algoritmos com pseudocodigo
Lista de exercicios   algoritmos com pseudocodigoLista de exercicios   algoritmos com pseudocodigo
Lista de exercicios algoritmos com pseudocodigo
 
#5 CRUD no MongoDB
#5   CRUD  no MongoDB#5   CRUD  no MongoDB
#5 CRUD no MongoDB
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Curso MySQL #03 - Criando um Banco de Dados MySQL
Curso MySQL #03 - Criando um Banco de Dados MySQLCurso MySQL #03 - Criando um Banco de Dados MySQL
Curso MySQL #03 - Criando um Banco de Dados MySQL
 
Aula 2 - Introdução a Banco de Dados
Aula 2 - Introdução a Banco de DadosAula 2 - Introdução a Banco de Dados
Aula 2 - Introdução a Banco de Dados
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
 
Unidade 04 - Estatística - Medidas de dispersão.ppt
Unidade 04 - Estatística - Medidas de dispersão.pptUnidade 04 - Estatística - Medidas de dispersão.ppt
Unidade 04 - Estatística - Medidas de dispersão.ppt
 
POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de Dados
 
Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)Pseudocódigo ou Portugol (Lógica de Programação)
Pseudocódigo ou Portugol (Lógica de Programação)
 
Aula 6 - Cardinalidade
Aula 6 - CardinalidadeAula 6 - Cardinalidade
Aula 6 - Cardinalidade
 
Modelagem De Banco De Dados
Modelagem De Banco De DadosModelagem De Banco De Dados
Modelagem De Banco De Dados
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)
 
08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er08 modelo conceitual_fisico_logico_er
08 modelo conceitual_fisico_logico_er
 
Sistema binario
Sistema binarioSistema binario
Sistema binario
 
Apostila informática
Apostila informáticaApostila informática
Apostila informática
 

Último

William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERDeiciane Chaves
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -Aline Santana
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxRonys4
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 

Último (20)

William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VERELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
ELETIVA TEXTOS MULTIMODAIS LINGUAGEM VER
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
DESAFIO LITERÁRIO - 2024 - EASB/ÁRVORE -
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptxD9 RECONHECER GENERO DISCURSIVO SPA.pptx
D9 RECONHECER GENERO DISCURSIVO SPA.pptx
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 

Programação Lógica com Prolog

  • 2. EXEMPLO  Um exemplo simples de fato com dois argumentos seria a relação amiga:  Amiga (joana, maria).
  • 3. PORTANTO...  Assim, definimos uma relação (amizade) entre dois argumentos (joana e maria).  Obviamente podemos ter um fato com apenas um argumento:  homem(carlos).
  • 4. CLAUSULAS: REGRAS E FATOS  filho(X,Y):-pai(Y,X). cabeça corpo Conclusão Condições
  • 5. EXEMPLO PROGRAMA 1.1  pai(adão,cain).  pai(adão,abel).  pai(adão,seth).  pai(seth,enos). Consultas ?- pai(adão,cain).
  • 6. CONSULTAS  As consultas tornam-se ainda mais interessantes quando empregamos variáveis, ou seja, identificadores para objetos não especificados. Por exemplo,  ?- pai(X,abel).  Resposta  X = adão.
  • 7. CONSULTA  Uma consulta com variáveis pode ter mais de uma resposta. Nesse caso, o sistema apresentará a primeira resposta e ficará aguardando até que seja pressionado enter, que termina a consulta, ou ponto-e-vírgula, que faz com que a próxima resposta possível, se houver, seja apresentada.  ?- pai(adão,X).  X = cain ;  X = abel ;  X = seth ;  no
  • 8. QUEM É O PAI DO PAI DE ENOS?  Então, como o pai de Enos não é conhecido a priori, a consulta correspondente a essa pergunta tem dois objetivos:  primeiro, descobrir quem é o pai de Enos, digamos que seja Y;  depois, descobrir quem é o pai de Y.  ?- pai(Y,enos), pai(X,Y).  Y = seth  X = adão  yes
  • 9. VARIÁVEL ANÔNIMA  Outro tipo de variável importante é a variável anônima. Uma variável anônima deve ser usada quando seu valor específico for irrelevante numa determinada consulta. Por exemplo, considerando o Programa 1.1, suponha que desejássemos saber quem já procriou, ou seja, quem tem filhos. Então, como o nome dos filhos é uma informação irrelevante, poderíamos digitar:  ?- pai(X,_).  A essa consulta o sistema responderia X = adão e X = seth.
  • 10. REGRAS  Regras nos permitem definir novas relações em termos de outras relações já existentes. Por exemplo, a regra:  avô(X,Y) :- pai(X,Z), pai(Z,Y).  define a relação avô em termos da relação pai, ou seja, estabelece que X é avô de Y se X tem um filho Z que é pai de Y. Com essa regra, podemos agora realizar consultas tais como  ?- avô(X,enos).  X = adão
  • 11. REGRAS  A regra para definir o relacionamento IRMÃO é escrita como:  irmão(X,Y) :- pai(Z,X), pai(Z,Y), X=Y.  Evidentemente, poderíamos definir a relação irmão simplesmente listando todas as suas instâncias. Veja:  irmão(cain,abel).  irmão(cain,seth).  irmão(abel,cain).  irmão(abel,seth).  irmão(seth,cain).  irmão(seth,abel).
  • 12. EXERCÍCIOS  Digite o Programa 1.1, incluindo as regras que definem as relações avô e irmão, e realize as seguintes consultas:  a) Quem são os filhos de Adão?  b) Quem são os netos de Adão?  c) Quem são os tios de Enos?
  • 13.  Considere a seguinte base de fatos:  aluno(joao, paradigmas).  aluno(maria, paradigmas).  aluno(joel, lab2).  aluno(joel, estruturas).  frequenta(joao, fied).  frequenta(maria, fied).  frequenta(joel, ifce).  professor(carlos, paradigmas).  professor(ana_paula, estruturas).  professor(pedro, lab2).  funcionario(pedro, ifce).  funcionario(ana_paula, fied).  funcionario(carlos, fied).  Escreva as seguintes regras em prolog:  a) Quem são os alunos do professor carlos?  b) Quem são os alunos do professor X?  b) Quem são as pessoas da universidade X? (alunos ou docentes) EXERCÍCIOS
  • 14. EXERCÍCIOS  Pouco se sabe da história passada da família Pinheiro. Existem alguns registros antigos que indicam que o casal José e Maria criou dois filhos, o João e a Ana. Que a Ana teve duas filhas, a Helena e a Joana, também parece ser verdade, segundo os mesmos registros. Além disso, o Mário é filho do João, pois muito se orgulha ele disso. Estranho também, foi constatar que o Carlos nasceu da relação entre a Helena, muito formosa, e o Mário.
  • 15.  a) Utilizando o predicado progenitor(X,Y) (ou seja, X é progenitor de Y), represente em Prolog todos os progenitores da família Pinheiro.  b) Represente em Prolog as relações: sexo (masculino ou feminino), irmã, irmão, descendente, mãe, pai, primo.  c) Formule em Prolog as seguintes questões:  1. O João é filho do José?  2. Quem são os filhos da Maria?  3. Quem são os primos do Mário?  Obs.: Exemplo de representação  progenitor(mario,carlos).  sexo(ana,feminino).
  • 16. CONSIDERE A ÁRVORE GENEALÓGICA A SEGUIR:  Usando fatos, defina as relações pai e mãe. Em seguida, consulte o sistema para ver se suas definições estão corretas.
  • 17.  Acrescente ao programa os fatos necessários para definir as relações homem e mulher. Por exemplo, para estabelecer que Ana é mulher e Ivo é homem, acrescente os fatos mulher(ana) e homem(ivo).  Usando duas regras, defina a relação gerou(X,Y) tal que X gerou Y se X é pai ou mãe de Y. Faça consultas para verificar se sua definição está correta. Por exemplo, para a consulta gerou(X,eva) o sistema deverá apresentar as respostas X = ana e X = ivo.
  • 18.  Codifique as regras equivalentes às seguintes sentenças:  a) Todo mundo que tem filhos é feliz.  b) Um casal é formado por duas pessoas que têm filhos em comum.
  • 19. BANCO DE DADOS DEDUTIVO
  • 20. ARITMÉTICA  Prolog oferece um predicado especial is, bem como um conjunto operadores, através dos quais podemos efetuar operações aritméticas.  ?- X is 2+3.  X = 5  Os operadores aritméticos são + (adição), - (subtração), * (multiplicação), mod (resto), / (divisão real), // (divisão inteira) e ^ (potenciação).
  • 21. PROGRAMA 2.1: ÁREA E POPULAÇÃO DOS PAÍSES.  % país(Nome, Área, População)  país(brasil, 9, 130).  país(china, 12, 1800).  país(eua, 9, 230).  país(índia, 3, 450).  O Programa 2.1 representa uma tabela que relaciona a cada país sua área em Km2 e sua população em milhões de habitantes. Com base nesse programa, por exemplo, podemos determinar a densidade demográfica do Brasil, através da seguinte consulta:  ?- país(brasil,A,P), D is P/A.  A = 9  P = 130  D = 14.4444
  • 22.  Uma outra consulta que poderia ser feita é a seguinte: "Qual a diferença entre a população da China e da Índia?".  ?- país(china,_,X), país(índia,_,Y), Z is X-Y.  X = 1800  Y = 450  Z = 1350
  • 23. COMPARAÇÃO  Para realizar comparações numéricas podemos usar os seguintes predicados primitivos: =:= (igual) , == (diferente), > (maior), >= (maior ou igual), < (menor) e =< (menor ou igual). Por exemplo, com esses predicados, podemos realizar consultas tais como:  A área do Brasil é igual à área dos Estados Unidos?  ?- país(brasil,X,_), país(eua,Y,_), X =:= Y.  X = 9  Y = 9  Yes  • A população dos Estados Unidos é maior que a população da Índia?  ?- país(eua,_,X), país(índia,_,Y), X > Y.  No
  • 24. EXERCÍCIOS  Inclua no Programa 2.1 uma regra para o predicado dens(P,D), que relaciona cada país P à sua densidade demográfica correspondente D. Em seguida, faça consultas para descobrir:  a) qual a densidade demográfica de cada um dos países;  b) se a Índia é mais populosa que a China.
  • 25. REFERÊNCIA  LAGO, Silvio. INTRODUÇÃO À LINGUAGEM PROLOG