3.3. Exercícios de Fixação

[RTF] [Word] [PostScript]


3.3.1. IteraçãoResolva os seguintes exercícios utilizando îforms” para a implementação de laços iterativos: do, loop, dolist

  1. Implemente uma função COMPRIMENTO que calcule de forma iterativa e devolva como resultado o número de elementos do primeiro nível de uma lista.
  2. Escreva uma função INVERSO que, dada uma lista como parâmetro, devolva o inverso da lista. Assim para a Lista (A (B C) D) a função devolveria (D (B C) A).
    Toque: você pode usar a função append.
  3. Escreva uma Função MEMBRO que, dado qualquer item (átomo ou lista) como seu primeiro parâmetro, devolva NIL se o primeiro parâmetro não aparecer no segundo, que deverá obrigatoriamente ser uma lista. Caso ele apareca, a função devolverá a lista restante, o ítem inclusive.
    Assim:
    (membro ´a ´(b c d)) = nil
    (membro ´c ´(a b c d e) = (c d e)

3.3.2. RecursãoComo já foi ressaltado em aula, a facilidade e a naturalidade com que a recursividade pode se utilizada em linguagens funcionais como LISP é um dos pontos fortes deste enfoque.

  1. Reescreva a função MEMBRO acima de forma que seja uma função recursiva.
  2. Escreva uma função recursiva INTERSECÇÂO que, dadas duas listas, devolva uma lista com os elementos comuns às duas.

3.3.3. Resposta a alguns exercícios