• Nenhum resultado encontrado

Autarquia Educacional do Vale do São Francisco AEVSF Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Ciência da Computação

N/A
N/A
Protected

Academic year: 2021

Share "Autarquia Educacional do Vale do São Francisco AEVSF Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Ciência da Computação"

Copied!
5
0
0

Texto

(1)

Autarquia Educacional do Vale do São Francisco – AEVSF

Faculdade de Ciências Aplicadas e Sociais de Petrolina – FACAPE

Ciência da Computação

Programação em Lógica (PL)

Prof. Sergio Faustino

1ª Lista de Exercícios Prolog

1º) Identifique as seqüências abaixo como átomos, variáveis, números, lista ou seqüência inválida, segundo a sintaxe Prolog:

a) pessoa b) Var c) 127 d) Pedro e) [1, 2, 3, 4, 5] f) '_Homem' g) fui à praia h) 'fui à praia' i) Teste j) 13.9

2º) Para o seguinte programa: p(a,c).

p(a,b). p(d,a). p(d,b).

quais serão as respostas Prolog para as consultas abaixo? Justifique sua resposta. a) ?- p(a,b). b) ?- p(a,d). c) ?- p(a,X). d) ?- p(X,b). e) ?- p(X,Y). f) ?- p(X,b), p(d,X). g) ?- p(X,Y), p(Z,X). h) ?- p(X,Y), p(Z,Y).

3º) Expresse através de fatos e regras Prolog as informações contidas na seguinte frase:

“Cassia é bonita. Marcos é rico e bonito. Ana é rica e forte. Fabiano é forte e bonito. Silvio é amável e forte. Todos os homens gostam de mulheres bonitas. Todos os homens ricos são felizes. Qualquer homem que gosta de uma mulher que gosta dele é feliz. Qualquer mulher que gosta de um homem que gosta dela é feliz. Ana gosta de qualquer homem que gosta dela. Cassia gosta de qualquer homem que gosta dela, desde que ele seja rico, amável ou bonito, e forte.”

(2)

4º) Amplie o programa apresentado na Figura 2.5, do livro de Luiz Palazzo, para representar as relações bisavô, avô paterno, avô materno, neto e padrasto.

5º) Considere a seguinte base de fatos Prolog: aluno(joao, calculo). aluno(maria, calculo). aluno(joel, programacao). aluno(joel, estrutura). frequenta(joao, puc). frequenta(maria, puc). frequenta(joel, ufrj). professor(carlos, calculo). professor(ana_paula, estrutura). professor(pedro, programacao). funcionario(pedro, ufrj). funcionario(ana_paula, puc). funcionario(carlos, puc).

Escreva as seguintes regras em Prolog: a) Quem são os alunos do professor X?

b) Quem são as pessoas que estão associadas a uma universidade X? (alunos e professores)

6º) Escreva um programa em PROLOG para representar o cenário abaixo. Defina os fatos e as regras necessárias. Posteriormente, questione quem são os alunos de humanas.

Julia é professora de direito. Leandro é professor de história.

Pedro e Raquel são professores de letras. Marcos é professor de psicologia.

Direito e História são disciplinas da área de sociais. Letras e Psicologia são disciplinas da área de humanas. Juca é aluno de Julia e de Leandro.

Laura é aluna de Julia e Raquel. Luis é aluno de Marcos e Pedro. REGRAS:

- Só é professor de sociais, se ministra pelo menos uma disciplina de sociais. - Só é professor de humanas, se ministra pelo menos uma disciplina de humanas.

- Só é aluno de sociais, se o mesmo cursar duas disciplinas ministradas por professores de sociais.

- Só é aluno de humanas, se o mesmo cursar duas disciplinas que são ministradas por professores de humanas.

7º) Resolva:

a) Escreva um programa Prolog que calcula o cubo de um dado número.

b) Escreva um programa Prolog que, dados dois números, retorna o maior entre eles. c) Escreva um predicado para obter a soma dos N primeiros números naturais.

d) Escreva um predicado primo(N) que dado um número inteiro N, determine se ele é ou não um número primo (um número primo é aquele que só é divisível por 1 e por ele próprio).

(3)

e) Defina um predicado recursivo para calcular o produto de dois números naturais usando apenas soma e subtração.

f) Defina um predicado recursivo para exibir um número natural em binário.

8º) Implemente um programa para determinar quais tipos sanguíneos podem doar/receber sangue de quais tipos. A tabela seguinte fornece a informação necessária para a implementação.

Tipos sanguíneos.

A B AB O

A Doa/Recebe - Doa Recebe

B - Doa/Recebe Doa Recebe

AB Recebe Recebe Doa/Recebe Recebe

O Doa Doa Doa Doa/Recebe

9º) Suponha os seguintes fatos: 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,4.0). nota(mary,10.0). Considerando que: nota de 7.0 a 10.0 = aprovado nota de 5.0 a 6.9 = recuperação nota de 0.0 a 4.9 = reprovado

Escreva uma regra para identificar a situação de um determinado aluno.

10º) Crie uma base de conhecimento em Prolog declarando os fatos representados na seguinte tabela:

CATÁLOGO DE FILMES

Título Gênero Diretor Ano Min.

Amnésia Suspense Nolan 2000 113 Babel Drama Inarritu 2006 142 Capote Drama Miller 2005 98 Casablanca Romance Curtiz 1942 102

Matrix Ficção Wachowsk 1999 136 Rebbeca Suspense Hitchcock 1940 130 Shrek Aventura Adamson 2001 90 Sinais Ficção Shymalan 2002 106 Spartacus Ação Kubrik 1960 184 Superman Aventura Donner 1978 143 Titanic Romance Cameron 1997 194 Tubarão Suspense Spielberg 1975 124 Volver Drama Almodóver 2006 121

(4)

10.1 Escreva regras genéricas em Prolog que possam responder as seguintes perguntas: a) Quem dirigiu o filme Titanic?

b) Quais são os filmes de suspense? c) Quais os filmes dirigidos por Donner? d) Em que ano foi lançado o filme Sinais?

e) Quais os filmes com duração inferior a 100min?

f) Quanto tempo leva ao assistir dois filmes em sequência (Matrix e Tubarão)? g) Quais os filmes lançados entre 2000 e 2005?

10.2 Usando as regras criadas anteriormente, construa o predicado “clássico”, que retorna o título dos filmes lançados antes de 1980.

10.3 Usando as regras criadas anteriormente, construa o predicado “gênero”, que retorna o título dos filmes de um gênero específico.

10.4 Usando os predicados “clássico” e “gênero”, faça uma consulta para recuperar os títulos clássicos de suspense.

11º) Assuma que os arcos em um grafo expressem custos, como no exemplo abaixo:

e sejam descritos através de assertivas da forma

arco(R, S, T)

significando que há um arco de custo T entre os nodos R e S. Por exemplo, arco(A, B, 3) descreve um arco de custo 3 entre os nodos A e B. Assuma também que o relacionamento mais(X, Y, Z) vale quando X+Y=Z. Defina o relacionamento custo(U, V, L) de forma a expressar que existe um caminho de custo L entre os nodos U e V.

12º) Sugira uma representação para retângulos, quadrados, círculos e elipses, usando uma abordagem similar à apresentada na Figura 3.4 do livro de Luiz Palazzo. Procure obter a representação mais geral possível, por exemplo, um quadrado é um caso especial de retângulo e um círculo pode ser considerado um caso especial de elipse.

13º) Considere o seguinte programa: f(1, um).

f(s(1), dois). f(s(s(1))), três).

f(s(s(s(X))), N) :- f(X, N).

Como iria o sistema Prolog responder as seguintes questões? Quando várias respostas são possíveis, dê pelo menos duas.

(5)

a. ?- f(s(1), A). b. ?- f(s(s(1)), dois). c. ?- f(s(s(s(s(s(s(1)))))), C). d. ?- f(D, três).

14º) Assumindo as seguintes definições de operadores: :- op(300, xfx, joga).

:- op(200, xfy, e).

então os dois termos seguintes possuem sintaxe válida: T1 = marcelo joga futebol e squash.

T2 = renata joga tenis e basquete e volei.

Como estes termos são interpretados pelo Prolog? Qual é o funtor principal de cada termo e qual a sua estrutura?

15º) Sugira uma apropriada definição dos operadores “era” e “do” para que seja possível a escrita de cláusulas como:

vera era secretária do departamento. e

paulo era professor do curso.

16º) Considere o seguinte programa Prolog: t(0+1, 1+0).

t(X+0+1, X+1+0). t(X+1+1, Z) :- t(X+1, X1), t(X1+1, Z).

Como irá este programa responder as seguintes questões, considerando ser + um operador infixo do tipo yfx (como usual).

a. ?- t(0+1, A). b. ?- t(0+1+1, B). c. ?- t(1+0+1+1+1, C). d. ?- t(D, 1+1+1+0). 17º) Defina o procedimento entre(N1, N2, X)

que, para dois inteiros dados, N1 e N2, produz através de backtracking todos os inteiros X que satisfazem a restrição

N1 < X < N2

18º) Defina os operadores “se”, “então”, “senão” e “:=” de modo que seja válido o termo: se X>Y então Z := X senão Z := Y

Escolha a precedência dos operadores de modo que “se” venha a ser o funtor principal. Depois defina a relação “se” como um mini-interpretador para um tipo de comando se-então da forma:

se V1>V2 então Var:=V3 senão Var:=V4

onde V1, V2, V3 e V4 são números (ou variáveis instanciadas com números) e Var é uma variável. O significado da relação “se” deve ser: “se o valor de V1 é maior que o valor de V2, então Var é instanciada com V3, senão Var é instanciada com V4”. Um exemplo do uso do mini-interpretador seria:

?-X=2, Y=3, V2 is 2*X, V4 is 4*X, se Y > V2 então Z:=Y senão Z:=V4, se Z > 5 então W=1 senão W=0. X=2 Y=3 Z=8 W=1

Referências

Documentos relacionados

Calibradores para QuantStudio™ 5 DX Placa III proporciona a calibração de uma gama de 10 fluoróforos (fluoróforos espectrais) conforme comprimento de onda absorvível por cada

Os Trojans Spy – concebidos para roubar informação financeira das suas vítimas- foram os programas maliciosos mais populares distribuídos através de mensagens de

Provavelmente como resultado dessa atitude, 83 por cento das organizações Top-Tier consideram a informática estrategicamente importante para seu avanço – contra apenas 44 por cento

A acupuntura e a técnica mais antiga que existe, parti do conceito de que o desequilíbrio se deve à má distribuição de energia pelo corpo, sendo assim aplicam-se algumas agulhas

Misture 3 xícaras de polpa de caqui, 1 xícara de creme de leite, 1 pacote de gelatina sem sabor, previamente dissolvida em 1 xícara de café de água fervendo, açúcar a gosto, 1

A presente proposta insere-se numa política de continuidade dos apoios que vinham sendo anteriormente atribuídos par os fins referidos.”.--- --- 5 – ATRIBUIÇÃO

Desenchufe siempre la sandwichera y deje que se enfríe antes de limpiarla.. No hace falta desmontar la sandwichera

719002006 Januária Abreu da Silva Mesquita - (nomeado para assumir no Campus de Patu, conforme Item 1.4 do Edital nº 001/2016 – Reitoria/FUERN Concurso Público de Provas e Títulos