1/7
animal(guaxinim). animal(mosca). animal(peixinho). planta(grama). planta(alga). planta(planta_carnvora). b) Salve este arquivo (File Save buffer) no precisa fech-lo c) Compile o programa atravs da opo: Compile Compile buffer d) Faa perguntas ao ambiente (volte janela principal, mas no precisa fechar o editor): come(urso,peixe). come(urso,tigre). animal(planta_carnvora). come(X,peixe). animal(X). come(X,Y). Obs.: Aparecer a resposta Yes confirmando a veracidade da informao. Aparecer a resposta No indicando que esta informao no existe. Planta carnvora animal? No Quais so os elementos que comem peixe? Tecle ; para listar todos. Quais so os elementos com propriedade animal? Quais so todos os elementos que participam da relao come? - Digite sempre aps o prompt ?- Para fazer o prompt reaparecer tecle ponto e ENTER. Use seta para cima para voltar as digitaes anteriores. Tecle ; para obter o prximo item da resposta, caso exista mais de uma.
IV. Incluso das regras a) Tabela de converso: Lgica a b a b a' a b a b (a b)' Significado a e b a ou b negao de a se a ento b a equivalente a b a no equivalente a b Prolog a,b a;b \+a b:-a a=b a\=b (somente para regras)
b) Observe a regra abaixo: Portugus: Carnvoro quem come animal. Lgica: (x)(y)come( x, y) animal ( y) carnivoro( x) Prolog: carnvoro(X):-come(X,Y), animal(Y). Obs.: as regras devem ser digitadas no mesmo arquivo dos fatos.
2/7
c) Escreva as regras no mesmo editor em que esto os fatos. Obs.: as variveis devem ser maisculas %% carnvoro quem como animal carnvoro(X):-come(X,Y), animal(Y). %% herbvoro quem come planta e no come animal herbvoro(X):-come(X,Y),planta(Y),\+carnvoro(X). %% predador carnvoro e tambm animal predador(X):-carnvoro(X),animal(X). %% presa quem comido por predador e tambm animal presa(X):-come(Y,X),predador(Y),animal(X). %% caado quem presa caado(X):-presa(X). %% X pertence a cadeia alimentar de Y pertence_a_cadeia(X,Y):-come(Y,X). pertence_a_cadeia(X,Y):-come(Z,X),pertence_a_cadeia(Z,Y). d) Para fazer perguntas, salve novamente o arquivo (File-Save buffer) e recompile (Compile Compile buffer): Tecle ; (ponto-e-vrgula) para obter o prximo item da resposta. Perguntas em portugus 1. Peixe come peixinho e minhoca? 2. Quais so as plantas? 3. Quem comido pelo urso? 4. Quem come peixe? 5. Quem predador? 6. Quem predador e tambm presa? 7. Quem presa e herbvoro? 8. Quem pertence a cadeia alimentar do urso? 9. Quem pertence a cadeia alimentar do urso e ao mesmo tempo come planta? 10. A minhoca pertence a cadeia alimentar de quem? Perguntas em Prolog come(peixe,peixinho),come(peixe,minhoca). planta(X). come(urso,X). come(X,peixe). predador(X). presa(X),predador(X). presa(X),herbvoro(X). pertence_a_cadeia(X,urso). pertence_a_cadeia(X,urso),herbvoro(X). pertence_a_cadeia(minhoca,X).
3/7
V. Exerccios
1. A partir dos elementos construdos no exemplo sobre cadeia alimentar, crie a regra onvoro. Ela define um animal que come planta e tambm come animal. 2. Suponha os seguintes fatos para registrar a mdia destes alunos:
nota(joao,5.0). nota(maria,6.0). nota(joana,8.0). nota(mariana,9.0). nota(cleuza,8.5). nota(jose,6.5). nota(jaoquim,4.5). nota(mara,-1). nota(mary,11). ...
Construa regras para identificar o estado dos alunos quanto a: aprovado (de 7.0 a 10.0), recuperao (de 5.0 at menor que 7.0), reprovado (de 0.0 a menor que 5.0) e erro se nenhuma das faixas anteriores. Obs.: o operador menor ou igual deve ser escrito como =<. 3. Num banco de dados, feito em Prolog, para registrar relacionamentos afetivos envolvendo o sexo, o gosto por filmes e o gosto por faixa etria do parceiro, e a partir dos fatos informados, escreva as regras pedidas.
homem(pedro). homem(marcos). homem(ze). mulher(maria). mulher(joana). idade(ze,30). idade(maria,40). idade(marcos,20). idade(pedro,25). idade(joana,28). gosta(ze,aventura). gosta(maria,comedia). gosta(joana,romance). gosta(marcos,terror). gosta(marcos,romance). gosta(pedro,romance). gosta(maria,romance).
4/7
opcao(ze,20,40). // significa que o z gostaria de se relacionar com pessoas 20 a 40 anos opcao(maria,25,55). ...
a. afinidade_filme(X,Y) Seleciona pessoas com o mesmo gosto de filme. (sendo X e Y pessoas, X possui o mesmo gosto de filme do que Y) b. casal(X,Y) Seleciona casais (sexos diferentes) c. casal_afinidade_filme(X,Y) Seleciona casais com o mesmo gosto de filme d. casal_afinidade_idade(X,Y) Seleciona casais cujos gostos de faixa etrias sejam atndidos e. casal_total(X,Y) Seleciona casais com afinidade em filme e faixa etria
4. Em Prolog, suponha os seguintes fatos para registrar informaes sobre capitais, estados e regies:
cidade(so_mateus,pequena). cidade(vitria,mdia). cidade(so_paulo,grande). cidade(macei,mdia). cidade(campos,pequena). cidade(cariacica,pequena). cidade(colatina,pequena). ... capital(vitria). capital(macei). capital(sopaulo). ... estado(es,sudeste). estado(al,nordeste). estado(sp,sudeste). ... pertence(so_mateus,es). pertence(vitria,es). pertence(santos,sp). pertence(macei,al). pertence(colatina,es). pertence(cariacica,es). ...
5/7
k. cidade_pequena_do_estado(X,Y)
5. Suponha que existe um banco de dados Prolog que fornece informaes sobre peas de um motor de automvel. Os predicados grande(X), pequena(X) e parte_de(X,Y) esto includos.
a. Escreva uma pergunta para encontrar todas as peas pequenas que fazem parte de outras peas. b. Escreva uma pergunta para encontrar todas as peas grandes que so formadas por peas pequenas. c. Formule uma regra para definir pea_tamanho_indefinido(x) como sendo toda pea que no pequena nem grande.
6. Crie um banco de dados para representar as relaes de parentesco da sua famlia. A partir de 4 tipos de fatos (filho ambos os sexos, casado, homem e mulher), crie regras para: pai(X,Y) me(X,Y) neto(X,Y) neta(X,Y) av(X,Y) bisav(X,Y) bisneta(X,Y) irmo(X,Y) irm(X,Y) tia(X,Y) sobrinha(X,Y) primo(X,Y) cunhado(X,Y) sogra(X,Y) genro(X,Y) 6/7
Neste caso, se for perguntado quais so as irms de Joaquim, em Prolog: irm(X,joaquim). o sistema responder: ana.
7/7