Exercícios de Scheme
MAC0316/MAC5754 - Conceitos de Linguagens de Programação
Para adquirir prática com a linguagem Scheme, use estas listas de exercícios:
Essas listas foram criadas por Shriram Krishamurthy (o autor do PLAI). Elas
são empregadas na disciplina de Linguagens de Programação da Brown University.
Como usar as listas acima? Estas são as minhas recomendações:
- Use os exercícios de 2 a 10 (esses exercícios estão na lista 1) como
aquecimento. Essa primeira lista é bem fácil e tem o objetivo de ajudar
na fixação da parte básica da linguagem. (Não espere ver exercícios tão
fáceis assim numa prova!) Se você achar esses exercícios fáceis
demais, passe para a lista 2.
- Faça os exercícios de 11 a 20 (esses exercícios estão na lista 2).
- Da lista 3, faça os exercícios 24, 25 (nestes dois use
map
ou filter
- ignore a menção às funções foldl
e
foldr
, que nós ainda não estudamos), 26, 27 (só a versão
que não usa foldr
), 28, 29 e 30.
Além dos exercícios do Krishnamurthy, faça os dois exercícios abaixo:
- Escreva uma função
(merge l1 l2)
, que recebe duas listas de
números, l1
e l2
, ambas em ordem crescente, e
devolve uma terceira lista, também em ordem crescente, com os mesmos
elementos que as duas listas recebidas. Em outras palavras, a função
merge
devolve a intercalação de duas listas numéricas
crescentes. Sua implementação de merge
não precisa usar
recursão de cauda. Ela deve ser eficiente, ou seja, a função
merge
deve percorrer as listas l1
e
l2
apenas uma vez.
- Reescreva a sua função
merge
de modo que a recursão seja de
cauda. Como no exercício anterior, as listas l1
e
l2
devem ser percorridas apenas uma vez. Dicas:
- Faça a função
merge
chamar uma função auxiliar que
recebe um parâmetro adicional, o qual é uma lista contendo a
"intercalação parcial reversa" das duas listas dadas.
- Olhe a segunda
implementação de map vista em classe.
Entregue as soluções desses dois exercícios até o dia 22 de março, pelo
sistema Paca/Moodle. (N.B.: Entregue só
as soluções desses dois exercícios. Não mande soluções dos exercícios do
Krishnamurthy.)
Last modified: Tue Mar 16 16:40:44 BRT 2010