Escolar Documentos
Profissional Documentos
Cultura Documentos
Expresses Aritmticas
1
2
n2 + 20
(c) 2
1
n
est diretamente relacionado porcentagem de ligaes entre citosina e guanina (C-G) existentes no DNA. Seja p esta porcentagem. A temperatura em graus Celsius em que 50% do DNA
est desnaturado dada por Tm = 69.3 + 0.41 p.
Considerando as porcentagens de ligaes C-G (p) dadas a seguir, determine, mo, o resultado
da expresso e, posteriormente, desenvolva um programa no DrRacket que calcule automaticamente a temperatura Tm necessria para que a desnaturao ocorra a partir da porcentagem
p de ligaes C-G contida na molcula de DNA, sendo p:
(a) 7%
(b) 28%
(c) 40%
(d) 65%
(e) 76%
Expresses Condicionais
6. Desenvolver a funo juro que produz no a taxa a ser paga mas a quantidade de juro paga. O
banco paga uma taxa constante de 4% para depsitos at $1000, taxa de 4,5% para depsitos at
$5000, e uma taxa de 5% para depsitos acima de %5000. Por exemplo, (juro 1000) produz
40.
7. Desenvolva a funo mdias que consome 4 nmeros e realiza um clculo de valor mdio com
eles. A funo deve fazer o clculo correto dependendo do valor do primeiro nmero informado: caso ele seja 1, a sada deve ser o mdia aritmtica dos outros trs valores; se for 2, o
clculo dever ser da mdia harmnica.
8. Desenvolva a funo imposto, que consome um salrio bruto e produz a quantia de imposto
devida. Para um salrio bruto de R$240 ou menos, o imposto de 0%. Para salrios entre
R$240 e R$480, o imposto de 15%. Acima de R$480, o imposto devido de 28%.
9. Sabe-se que construtoras recebem um certo valor de um contratante pela execuo de uma obra,
o qual denominado lucro bruto. Ao receber pela obra, a construtora deve descontar um valor
de imposto a ser pago ao governo, o qual de 1020.000, 15% para obras com valores entre R$
20.000 e R$ 100.000 e de 20% para obras com valor superior a R$ 100.000. O valor resultante do
desconto do imposto chamado de lucro lquido. Crie uma funo que calcule o lucro lquido
obtido por esta construtora ao fim de uma obra dado o valor desta obra e considerando-se o
imposto a ser pago. Faa a descrio completa da funo.
10. O pH uma medida que indica a acidez, neutralidade ou alcalinidade de uma soluo aquosa.
Solues com pH abaixo de 7 so ditas cidas, enquanto pH acima de 7 caracterstico de
solues bsicas. Solues neutras possuem pH igual a 7.
(a) Seguindo estas informaes, desenvolva uma funo que consome o pH de uma substncia e verifica se a mesma um cido.
(b) Repita o tem anterior, desenvolvendo agora uma funo que consome o pH de uma substncia e verifica se trata-se de uma base.
Expresses Simblicas
60kg, 1,63m
80kg, 1,70m
51.5kg, 1,68m
105kg, 1,85m
(b) Desenvolva uma funo que consome o peso e a altura de um indivduo e verifica se este
indivduo est acima do peso normal, retornando true em caso positivo e false em caso
negativo. Para determinar o estado de sade do indivduo, baseie-se na tabela abaixo fornecida pela OMS. Teste a funo para alguns casos, dentre os quais os exemplos fornecidos
no item (a).
Situao
Abaixo do peso
Peso normal
Sobrepeso
Obesidade Grau I
Obesidade Grau II
Obesidade Grau II
ndice (IMC)
Abaixo de 18.4
18.5 24.9
25.0 29.9
30.0 34.9
35.0 39.9
Acima de 40
(c) Desenvolva uma funo que dados o peso e altura de um indivduo, retorna a situao de
sua sade em relao ao seu IMC seguindo as informaes contidas na tabela acima. Teste
a funo para alguns casos, dentre os quais os exemplos fornecidos no item (a).
13. Com base nas informaes fornecidas no exerccio 10, desenvolva um programa que consome
o pH de uma substncia e retorna ao usurio o tipo de substncia, isto , se a mesma cida,
neutra ou bsica.
14. Um tipo sangneo se baseia na presena ou ausncia de duas protenas, A e B, na superfcie
das clulas vermelhas do sangue. Adicionalmente, o tipo sanguneo controlado por um par
de genes, denominado gentipo, cada qual podendo se apresentar em trs formas: iA , iB e i.
Como duas protenas esto envolvidas, h quatro combinaes possveis, ou seja, quatro tipos
sanguneos (grupos ABO):
tipo A: apenas a protena A est presente. Gentipo: iA iA ou iA i.
tipo B: apenas a protena B est presente. Gentipo: iB iB ou iB i.
tipo AB: ambas as protenas esto presentes. Gentipo: iA iB .
tipo O: nenhuma das protenas est presente. Gentipo: ii.
Estruturas
24. Desenvolva uma funo que consuma duas estruturas data e produza como resposta quantos
dias faltam da primeira data para a segunda. Para efeitos de clculo, considere que todos os
meses tm mesmo nmero de dias.
25. Em poca de eleies, voc foi encarregado de criar um programa para a informatizao da
eleio na cidadezinha de Abandonados do Sul. Para tanto, apresente o qu pedido:
(a) Escreva a definio de dados de uma estrutura candidato que armazena dados para um
candidato a prefeito. Cada candidato a prefeito identificado por seu nome, pelo nmero
do partido e pela quantidade de votos recebidos.
(b) D dois exemplos da criao de estruturas para armazenar dados de candidatos a prefeito.
(c) Crie uma funo que, dadas as informaes sobre dois candidatos na disputa de um segundo turno, gere como resultado o nome do candidato eleito. Em caso de empate, o
vencedor o candidato cujos dados foram fornecidos primeiro.
(d) Faa uma funo que, a partir das informaes sobre dois candidatos que disputaram
o segundo turno, diga qual foi a porcentagem de votos vlidos obtida pelo candidato
vencedor.
26. Defina uma estrutura time, a qual armazena o nome e o nmero de pontos ganhos de um time
de futebol e uma estrutura partida que armazene dados sobre um jogo de futebol. Para cada
partida, so dados o time local, o time visitante, o nmero de gols marcados pelo time local e o
nmero de gols marcados pelo time visitante.
27. Escreva uma funo resultado-partida, a qual, sendo fornecidos os dados de uma partida (definida conforme exerccio anterior), apresenta o resultado da mesma da seguinte forma:
Local, se houve vitria do time local;
Visitante, se houve vitria do time visitante;
Empate, se no houve vencedor.
28. Escreva uma funo atualiza-ptos que recebe dados de um time e de uma partida deste time
(definidos no exerccio 26) e, dependendo do resultado, atualiza os seus pontos. Considerandose que uma vitria vale 3 pontos, um empate vale 1 ponto e uma derrota no d ponto algum,
a funo deve gerar como sada uma estrutura que contenha os dados do time em questo com
a sua pontuao atualizada.
29. Voc foi designado para criar um sistema de busca de doadores de sangue em um hospital
utilizando o Racket. Cada paciente est registrado em uma espcie de banco de dados atravs
de seu nome e tipo sanguneo (despreze o fator Rh). Desenvolva uma funo que consome as
informaes de dois pacientes e verifica se o segundo paciente pode ser doador de sangue para
o primeiro. Lembre que o tipo sanguneo O o doador universal e o tipo sanguneo AB o
receptor universal.
Tipos Mistos
30. Uma revenda de automveis classifica seus veculos em 2 classes: populares e de luxo.
(a) Construa uma estrutura (com a respectiva definio de dados) para descrever a classe
automveis populares. Os atributos relevantes desta classe so: o modelo do automvel,
o ano, o rendimento (em km/l) e o preo;
(b) Construa uma estrutura (com a respectiva definio de dados) para descrever a classe
automveis de luxo. Os atributos relevantes desta classe so: o modelo do automvel, o
ano, a cor e o preo;
(c) Faa uma definio de dados para o tipo automvel, que pode conter tanto automveis
populares quanto automveis de luxo.
31. Desenvolva a funo rea que consome ou um crculo ou um quadrado e calcula sua rea.
32. Exercise 7.2.1. Desenvolva estruturas necessrias para a definio de uma coleo de animais
de um zoolgico. A coleo inclui:
zebras, sobre as quais interessam o nmero de listras e o volume ocupado por cada uma
delas;
elefantes, cujos atributos relevantes so a cor e o volume ocupado;
macacos, sobre os quais devemos saber o nvel de inteligncia e o volume ocupado.
As estruturas criadas devem permitir armazenar os dados pertinentes de cada animal, mas
tambm permitir que todos sejam tratados genericamente como animais.
Aps isto, crie uma funo cabe? que, dados 3 animais e o volume total disponvel para
transporte, indica de se possvel transportar estes 3 animais juntos.
Listas
40. Defina a funo preo-mdio. Ela consome uma lista de preos e produz o preo mdio.
41. Assumindo-se que nenhum empregado deve trabalhar mais que 100 horas por semana, reescreva a funo horas->salrio a fim de que ela tambm teste se a lista de horas trabalhadas
por semana contm nmeros acima de 100. Em caso afirmativo, a funo deve produzir a seguinte string: muitas horas trabalhadas.
42. Desenvolva a funo converte-euro que converte uma lista de valores em dlares americanos para uma lista de valores em euros. Assuma que a taxa de converso (cmbio) 1.22.
43. Desenvolva a funo nome-rob que consome uma lista de nomes de brinquedos (smbolos)
e substitui o smbolo rob por R2D2. Posteriormente, generalize da a funo para que ela
consuma uma lista de nomes de brinquedos e 2 smbolos denominados novo e antigo, de forma
a produzir uma nova lista de brinquedos substituindo todas as ocorrncias de antigo por novo.
44. Adapte a funo contm-boneca? j vista para que ela consuma um inventrio (ver cap. 10)
ao invs de uma lista de smbolos.
45. Desenvolva a funo preo-de que consome um nome de um brinquedo e um inventrio e
produz o preo deste brinquedo.
46. Desenvolva a funo concatena-strings, que recebe uma lista no-vazia do tipo lista-de-strings
e retorna a concatenao de todas as strings da lista. Por exemplo:
(concatena-strings (cons Fundamentos de Algoritmos
(cons uma disciplina
(cons muito legal! empty))))
===>
"Fundamentos de Algoritmos uma disciplina muito legal!"
47. Um cozinheiro deve preparar uma receita. Antes de comear, ele precisa ter certeza de que
possui todos os ingredientes necessrios. Para ajudar esse cozinheiro, apresente a definio de
dados do tipo lista-de-ingredientes e crie um programa que, a partir da lista de ingredientes em estoque e da lista de ingredientes da receita, retorne OK se todos os ingredientes
estiverem disponveis. Caso contrrio, o programa deve informar quais ingredientes esto faltando.
48. Um nibus percorre uma determinada linha, passando por diversas paradas. Apresente a definio de dados para lista-de-paradas e crie um programa que indique se possvel utilizar
este nibus para um deslocamento de uma parada inicial at uma parada final. Assuma que o
percurso de volta o inverso do percurso de ida.
49. Dadas trs listas l1, l2 e l3 do tipo lista-de-nmeros, definido abaixo, crie um programa
que diga qual das trs listas possui mais nmeros dentro de um intervalo fechado entre dois
nmeros ini-int e fim-int.
;;
;;
;;
;;
Uma lista-de-nmeros ou
- empty, ou
- (cons n ldn), onde
n : number
;; ldn : lista-de-nmeros
50. (4 pontos) O sistema de uma locadora de DVD controla a lista de filmes que a locadora possui.
Cada filme registrado com um ttulo, um gnero e um valor de locao. Sabendo que o
sistema deve ainda controlar uma lista de filmes locados, a qual tem a mesma estrutura da lista
de filmes, mas contm apenas os filmes correntemente locados, faa o qu pedido:
(a) Escreva as definies de dados necessrias para o sistema em questo.
(b) Desenvolva uma funo que atualize os preos de locao dos filmes da lista. Os reajustes
devem ser feitos de acordo com o gnero do filme:
Romance: aumento de 10%;
Demais gneros: reduo de 5%.
(c) Crie uma funo que, dada uma lista de ttulos de filmes que um cliente queira locar,
verifique quais destes filmes esto disponveis.
51. A agncia de namoros NamoreMe possui um cadastro com os perfis de seus usurios. Para
cada usurio, so armazenados os seguintes dados:
Nome (string)
Sexo (m ou f)
Preferncia de parceiro (m ou f)
Para facilitar a identificao de potenciais correspondncias entre perfis, crie um programa
encontra-pares. Este programa deve, dado um perfil de usurio, identificar a lista de perfis
que se encaixam na preferncia deste perfil e que busquem algum com o perfil recebido. No
esquea de fazer as definies de dados necessrias.
52. Relembrando o exerccio 14, a respeito de tipos sanguneos, reformule o programa para que
agora a entrada seja dada na forma de lista, contendo o gentipo dos pais e o gentipo da criana. Exemplo: (cons A (cons i (cons A (cons A (cons i (cons i empty)))))).
53. Relembrando o exerccio 29 sobre doao de sangue, aprimore o seu programa para que a entrada passe a consistir dos dados de um paciente aguardando por doao e de uma lista com
os dados de todos os doadores cadastrados no sistema hospitalar e retorne uma lista com os
doadores compatveis encontrados.
54. Desenvolva a funo raiz-da-equao que resolve equaes de grau 2. Esta funo consome
3 coeficientes, a, b e c e calcula a raiz dependendo destes coeficientes. Se a = 0, a funo deve
produzir o smbolo degenerada. Se b2 < 4ac, a funo deve produzir a string no h soluo
2
real. Se b2 = 4ac a funo deve produzir a nica soluo b
2a . Se b > 4ac a funo produz as
duas razes sob a forma de uma lista de 2 nmeros (um
b+ b2 4ac
2a
e o outro
b b2 4ac
).
2a
55. Desenvolva um programa que ordena, em ordem crescente, lista de mensagens (emails) pela
data (dia apenas) deste email. Considere que:
uma estrutura email definida da seguinte forma:
(define-struct email (remetente dia texto))
(cond
[(empty? (rest ldn)) (first ldn)]
[else (cond
[(> (first ldn) (maximo (rest ldn))) (first ldn)]
[else (maximo (rest ldn))])]))
Notar que ambas as clusulas da expresso cond computam (maximo (rest ldn)). Logo,
esta uma candidata natural a uma expresso local. Reformule a funo dada usando a expresso local e teste ambas as verses com (list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
16 17 18 19 20). Qual o efeito? Explique.
64. Considere a seguinte definio de funo e considere inventrio conforme definido anteriormente neste curso:
;; menos-de-1 : inventrio -> inventrio
;; Cria um inventrio a partir de inventrio dado com
;; todos os tens que custam menos de $1
(define (menos-de-1 inv)
(cond
[(empty? inv) empty]
[else (cond
[(<= (item-preo (first inv)) 1.00)
(cons (first inv) (menos-de-1 (rest inv)))]
[else (menos-de-1 (rest inv))])]))
J que ambas as clusulas da expresso cond extraem o primeiro tem de um inventrio, reformule o exemplo usando a expresso local.
- false, ou
- (make-n val esq dir),
onde val nmero, esq e dir so AB
Defina a funo valores-AB que, dada uma rvore binria de entrada, retorna uma lista com
os valores de todos os ns da rvore (em qualquer ordem).
70. Escreva uma funo acha-maior-AB que encontre o maior valor armazenado em uma rvore
binria.
71. Apresente um programa converte-rvores, o qual, dada uma AB, converte esta estrutura
em uma ABP.
72. Desenvolva a funo contem-ab? que consome um nmero n e uma rvore binria cujos
nodos so nmeros. Se a rvore contiver o nmero em algum dos nodos, retornar true, seno
false.
73. Desenvolva a funo pesquisar-ab que consome um nmero e uma rvore binria cujos
nodos contm estruturas que armazenam dados sobre um determinado contribuinte. As informaes relevantes sobre contribuintes so: seu CPF e seu nome; alm disto os nodos precisam
apontar para os nodos anterior (esquerda) e posterior (direita). Esta funo produz o nome do
contribuinte caso o nmero exista na rvore e false em caso contrrio.
74. Desenvolva a funo na-ordem que consome uma rvore binria referente a contribuintes e
produz uma lista de todos os CPF destes contribuintes. Tal lista deve conter os nmeros na
ordem em que aparecem na rvore, da esquerda para a direita.
Dica: use a funo append: lista lista -> lista que concatena 2 ou mais listas.
75. Desenvolva a funo pesquisar-abp que consome um nmero n e uma ABP (rvore binria
de pesquisa). Se a rvore contiver um nodo cuja estrutura tem o CPF igual a n, a funo retorna
o nome do contribuinte. Caso contrario, produz false. Compare com o resultado produzido
pela funo pesquisar-ab (ver exerccio nesta lista).
76. Desenvolva a funo insere-n. A funo recebe uma ABP B, um nmero n e um smbolo s.
A funo cria uma nova ABP igual a anterior mas com a adio do n com valores n e s.
77. Desenvolva a funo constri-ABP a partir de uma lista-de-nmeros. Use as listas exemplos
apresentadas na pgina 204 do livro.
Uma lista-de-nmeros-e-smbolos :
empty
(cons (list id nome) lnum) onde id um nmero, nome um smbolo, e lnum uma
lista-de-nmeros-e-smbolos
78. Simule manualmente (descendente-olhos-azuis?
(descendente-olhos-azuis? Bettina).
79. Desenvolva a funo quo-longe? que determina quo longe, na rvore, est um dado
genitor de um de seus descendentes de olhos azuis, caso haja algum. Se um dado genitor
tem olhos azuis, a distncia zero. Em caso contrrio, se pelo menos um de seus filhos tem
olhos azuis, a distncia um, e assim por diante. Se nenhum descendente tiver olhos azuis,
ento a funo deve retornar false.
80. Desenvolver a funo conta-descendentes que consome um nodo do tipo genitor e conta
o nmero de seus descendentes, incluindo a si mesmo. Modifique o exerccio e crie a funo
conta-descendentes-exclusivo que realiza o mesmo porm exclui a si mesmo.
81. Desenvolver a funo cor-dos-olhos que consome um genitor e produz uma lista com
todas as cores de olhos em sua rvore genealgica (seus descendentes). Uma cor pode ocorrer
mais de uma vez na lista.
82. Um catlogo de telefones armazena informaes sobre contatos de uma empresa. Cada contato
cadastrado com um nome, um nmero de telefone e um nmero de registro. Sabendo que tal
catlogo representado por uma rvore binria de pesquisa (ABP), onde o nmero de registro
usado para organizar a rvore, faa o qu pedido:
(a) Apresente a definio da estrutura de um n desta ABP;
(b) Crie uma funo que, dado o nmero de registro de um contato, apresente o nome e o
telefone deste contato.
(c) Descreva, sucintamente, quais seriam os passos necessrios para remover um determinado n dado o seu nmero de registro, detalhando estruturas de dados e funes utilizadas.
83. Uma pgina web :
(a) empty, ou
(b) (cons s wp), onde s um smbolo e wp uma pgina web, ou
(c) (cons ewp wp), onde ewp e wp so pginas web
A partir dessa definio de dados, desenvolva a funo troca. A funo recebe dois smbolos,
novo e velho, e uma pgina web wp. A funo produz uma pgina com a mesma estrutura de
wp, mas com todas as ocorrncias de velho trocadas por novo.
84. Muitos usurios no gostam de navegar em pginas web que tm muitos subnveis at que
se atinja a informao necessria. Por isso, um web designer quer medir qual a profundidade
(nmero de nveis) de uma pgina. Se uma pgina contem apenas smbolos, ento sua profundidade zero. Uma pgina que remete a uma sub-pgina tem a profundidade desta mais
um. Se uma pgina remete a diversas pginas, a profundidade dela a mxima profundidade
entre as pginas para as quais ela remete, mais um. Desenvolva a funo profundidade que
consome uma pgina web e calcula sua profundidade.
85. Desenvolver a funo tamanho-pgina que consome uma pgina web (como definida) e produz o nmero de smbolos (palavras que ela contem).
86. Desenvolva a funo ocorre-smbolo? que consome um smbolo e uma pgina web e determina se tal smbolo ocorre em algum lugar da pgina, incluindo suas sub-pginas.
87. Desenvolva a funo encontra-smbolo. Ela produz false se um dado smbolo no ocorre em
uma dada pgina ou em alguma de suas sub-pginas. Se o smbolo ocorre pelo menos uma vez,
a funo deve produzir uma lista dos cabealhos das pginas percorridas. Considere que uma
estrutura webpage contm um cabealho (um smbolo) e um corpo (uma lista de smbolos).
Dica: defina uma funo auxiliar similar mas que produza apenas true quando uma webpage
contem o smbolo desejado.
10
Recurso Generativa
95. Simule todos os passos at a soluo usando a funo quick-sort quando aplicada a
(list 11 9 2 18 12 14 4 1).
96. O que acontece se usarmos quick-sort com a lista (list 11 8 7 8 14 7))? Modifique
quick-sort para que nos devolva uma lista com o mesmo tamanho da lista passada como
argumento.
97. A funo quick-sort reduz o tamanho do problema em muitos casos, mas ela muito lenta
quando se trata de problemas pequenos. Desta forma, em geral se usa quick-sort para reduzir o tamanho do problema, aliada funo ordena (vista na aula sobre o cap. 12) para
tratar os sub-problemas. Desenvolva uma verso da quick-sort que usa a funo ordena se
o tamanho da lista est abaixo de um limiar (dado como argumento).
98. Teste as funes quick-sort e ordena com o auxlio de (time (...)), para diversos tamanhos de listas e constate que ordena mais rpida para listas de at um certo tamanho.
Determine que tamanho este.
99. Escreva a funo move-bolas que, dada uma lista de bolas, move cada uma at que todas
estejam fora do limite da mesa (uma nica mesa)
100. Desafio (exerccio 12.4 do livro). Desenvolva a funo permuta que, dada uma palavra (representada como uma lista de smbolos), retorna uma lista de todas as suas possveis permutaes.
Por exemplo:
(permuta (list o l a))
====> (list (list
(list
(list
(list
(list
(list
o
o
l
l
a
a
l
a
o
a
a
l
a)
l)
a)
o)
l)
o) )
Crie um programa que, dada uma lista de cidades e suas conexes, ache o menor caminho entre
uma cidade de origem e uma cidade de destino. O comprimento do caminho a ser considerado
o nmero de estradas a serem percorridas entre cidades; i.e., o menor caminho possvel entre duas cidades seria uma estrada que ligue as duas diretamente. No entanto, no deve ser
assumido que sempre existe uma ligao direta entre todas as cidades.
103. As Torres de Hani so um quebra-cabea que consiste em uma base contendo trs pinos. Em
um destes pinos, so colocados 3 discos, uns sobre os outros, seguindo a ordem decrescente de
dimetro (i.e, disco com maior dimetro colocado sob os demais). O desafio passar todos
os discos do pino atual para um dos outros dois sem que a ordem dos discos no novo pino seja
modificada em relao ordem atual. O pino que no nem origem e nem destino dos discos
usado como auxiliar neste processo.
Dado este problema, apresente o qu pedido:
(a) Descreva, em Portugus, os passos necessrios para solucionar este problema;
(b) Crie um programa que implemente a soluo proposta;
(c) Modifique o programa anterior para que, agora, ele funcione tambm para um cenrio de
5 pinos, em vez de 3;
(d) possvel desenvolver-se um programa genrico, o qual, dado um nmero n qualquer de
discos, encontre uma soluo?
11
Grafos
104. Crie uma funo nodos que coleta o conjunto (sem repetio) dos nodos de um grafo.
105. Desenvolva a funo prximos que cria a lista de nodos diretamente alcanveis a partir de
um dado nodo.
106. Faa uma funo encontra-rota, que devolve um caminho entre dois nodos ou false, se
no existir tal caminho.
107. Apresente uma funo possui-ciclo? que verifica se um determinado grafo dirigido possui
ciclo ou no.