Licenciatura em Engenharia Informática e Computação
Introdução à Programação I
Ano lectivo de 2001/2002

Mini-teste 1-X, Duração: 45 min, Com Consulta

Nome:


1.
Considere o seguinte procedimento em Scheme:

(define x
  (lambda (n1 n2)
    (if (< n1 n2)
        n1
        (add1 (x (sub1 n1) n2)))))
A. Analise o procedimentos x e diga qual é o resultado de (x 5 2). Diga qual é o resultado produzido, em geral, pelo procedimento x?

B. Classifique o procedimento x quanto à ordem de crescimento espacial e temporal. Justifique.

C. O processo gerado por este procedimento é recursivo. Modifique o procedimento x por forma a gerar um processo iterativo.

2.
O procedimento perimetro-quad tem 4 parâmetros que correspondem ao comprimento dos lados de um hipotético quadrilátero. Este procedimento devolve, normalmente, o perímetro do quadrilátero (a soma do comprimento dos 4 lados) ou zero, se os lados não correspondem a um quadrilátero.
Note que se o comprimento do maior dos lados for superior ou igual à soma dos comprimentos dos 3 outros lados, então não será um quadrilátero.

Complete o procedimento em Scheme quad? apresentado de seguida.

(define perimetro-quad
  (lambda (lad1 lad2 lad3 lad4)
    (if (quad? lad1 lad2 lad3 lad4)
        (+ lad1 lad2 lad3 lad4)
        0)))

(define quad?


)