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:

Além dos exercícios do Krishnamurthy, faça os dois exercícios abaixo:

  1. 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.
  2. 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:

Sobre a entrega

Este trabalho deve ser entregue até o dia 20 de março, por meio do sistema Paca/Moodle. (N.B.: Entregue só as soluções desses dois exercícios. Não mande soluções dos exercícios do Krishnamurthy.)

Deve ser entregue um arquivo fonte em Scheme. Para entregar as duas versões da função merge no mesmo arquivo-fonte, renomeie a primeira versão (a que não usa recursão de cauda) para simple-merge.

O nome do arquivo entregue deve ser da forma ep0-<seu-nome>.rkt ou ep0-<seu-nome>.scm. Por exemplo: ep0-fulano-de-tal.rkt. No nome do arquivo devem ser omitidos os acentos do seu nome. Além disso, a separação entre palavras não deve ser feita com espaços. Ou seja, o arquivo não deve se chamar "ep0-joão-da-silva.rkt" nem "ep0 joao da silva.rkt".


Valid CSS! Valid XHTML 1.0! Last modified: Fri Mar 18 21:03:59 BRT 2011