programação e computação para arquitectura – 2012/2013 · instituto superior técnico...

8
Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame – 11/01/2013 Número: Nome: Escreva o seu número em todas as folhas da prova. O tamanho das respostas deve ser limitado ao espaço fornecido para cada pergunta. Se tiver dúvidas de interpretação, faça suposições razoáveis e explicite-as na sua resposta. Pode usar os versos das folhas para rascunho. A prova tem 8 páginas e a duração é de 60/120 minutos. A cotação de cada questão encontra-se indicada entre parêntesis. Boa sorte. Se pretende fazer o Segundo Teste responda apenas às perguntas 9 e seguintes. Se pretende fazer o Exame responda a todas as perguntas. 1. (1.0) A multiplicação inteira define-se pela fórmula a × n = a + a + ··· + a | {z } n (a) (0.5) A definição anterior é recursiva? Justifique a sua resposta. A definição não é recursiva porque não está definida em termos dela própria. (b) (0.5) Sugira uma definição matemática da multiplicação inteira que elimine quaisquer ambi- guidades na sua interpretação. a × n = ( 0, se n =0 a + a × (n - 1), se n N. 2. (0.5) O que é um predicado? Dê um exemplo. É uma função que retorna verdade ou falso. A função null? é um exemplo.

Upload: phamhanh

Post on 10-Nov-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Instituto Superior Técnico

Programação e Computaçãopara Arquitectura – 2012/2013

Segundo Teste/Primeiro Exame –11/01/2013

Número:

Nome:

Escreva o seu número em todas as folhas da prova. O tamanho das respostas deve ser limitado ao espaçofornecido para cada pergunta. Se tiver dúvidas de interpretação, faça suposições razoáveis e explicite-as nasua resposta. Pode usar os versos das folhas para rascunho. A prova tem 8 páginas e a duração é de 60/120minutos. A cotação de cada questão encontra-se indicada entre parêntesis. Boa sorte.

Se pretende fazer o Segundo Teste responda apenas às perguntas 9 e seguintes. Se pretende fazero Exame responda a todas as perguntas.

1. (1.0) A multiplicação inteira define-se pela fórmula

a× n = a+ a+ · · ·+ a︸ ︷︷ ︸n

(a) (0.5) A definição anterior é recursiva? Justifique a sua resposta.

A definição não é recursiva porque não está definida em termosdela própria.

(b) (0.5) Sugira uma definição matemática da multiplicação inteira que elimine quaisquer ambi-guidades na sua interpretação.

a× n =

{0, se n = 0

a+ a× (n− 1), se n ∈ N.

2. (0.5) O que é um predicado? Dê um exemplo.

É uma função que retorna verdade ou falso. A função null? é umexemplo.

Page 2: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Número: 2

3. (1.0) Converta as seguintes expressões da notação do Racket para a notação da aritmética:

(a) (* (/ 1 2) 3)12 × 3

(b) (* 1 (- 2 3))

1× (2− 3)

(c) (/ (+ 1 2) 3)1+2

3

(d) (/ (/ 1 2) 3)12

3

(e) (/ 1 (/ 2 3))123

(f) (- (- 1 2) 3)

(1− 2)− 3

(g) (- 1 2 3)

1− 2− 3

(h) (- (- 2) 3)

−2− 3

(i) (/ (expt (cos (/ 2 (sqrt 5))) 4) 8)cos4 2√

5

8

(j) (sqrt (/ 1 (log (expt 2 (abs (- 3 (* 9 (log 28))))))))√1

log 2|(3−9 log 28)|

4. (1.0) Defina uma função Racket que recebe uma quantidade em graus centígrados ◦C e calcula ovalor correspondente em graus fahrenheit ◦F . Note que ◦F = ◦C × 9

5 + 32.

(define (fahrenheit<-centrigados graus)(+ (* graus 9/5) 32))

5. (1.0) Defina uma função recursiva potencia que, dado um número x e um expoente inteiro nãonegativo n, calcula xn.

(define (potencia x n)(if (= n 0)

1(* n (potencia x (- n 1)))))

Page 3: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Número: 3

6. (1.0) Defina uma função denominada circulos-tangentes que, dado o centro p e o raio r docírculo maior e um factor de redução do raio 0 < f < 1, cria o conjunto de círculos tangentesque se apresenta em seguida. Assuma que nenhum dos círculos pode ter raio menor que 0.1:

X

Y

(define (circulos-tangentes p r f)(if (< r 0.1)

#t(begin

(circle p r)(circulos-tangentes (+y p (* (- f 1) r)) (* f r) f))))

(circulos-tangentes u0 1 0.9)

7. (1.5) Defina a função semi-esfera-agulhas que, dado um ponto P , um comprimento l, umraio r e um número n, cria n cones de comprimento l e raio r, cuja base está centrada no pontoP e cujo apex é posicionado aleatoriamente numa semi-esfera, tal como se apresenta na seguinteimagem:

(define (semi-esfera-agulhas p r rc n)(if (= n 0)

#t(begin

(cone p rc (+sph p r (random-range 0 2pi) (random-range 0 pi/2)))(semi-esfera-agulhas p r rc (- n 1)))))

(semi-esfera-agulhas (xyz 0 0 0) 3.0 0.2 200)

Page 4: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Número: 4

8. (3.0) Pretende-se modelar uma estante cujas prateleiras estão separadas por uma distância aleató-ria. A imagem seguinte ilustra cinco destas estantes colocadas lado a lado.

Considerando que cada estante tem um dos cantos posicionado num ponto P e tem alturah e que as prateleiras têm comprimento c, profundidade l, e espessura e, e que a separaçãoentre prateleiras, embora aleatória, está contida no intervalo entre dmin e dmax, defina a funçãoestante-aleatoria capaz de modelar uma destas estantes aleatórias. Sugestão: não tentefazer tudo com uma só função.

(define (prateleiras-aleatorias p c l e dmin dmax h)(if (< h dmax)

#t(let ((d (random-range dmin dmax)))(box p c l e)(prateleiras-aleatorias(+z p d)c l edmin dmax (- h d)))))

(define (coluna-estante-aleatoria p c l e dmin dmax h)(box p e l h)(box (+x p (- c e)) e l h)(box (+z p h) c l e)(prateleiras-aleatorias (+x p e) (- c e e) l e dmin dmax h))

Page 5: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Número: 5

9. (1.0) Considere uma torre cujos pisos possuem a forma de cilindros todos com a mesma altura, talcomo se ilustra de seguida. Considere ainda que o cilindro maior está centrado no ponto P , temraio r e altura h. A diferença de raio entre dois cilindros adjacentes é ∆r e é igual para todos oscilindros. Considere ainda que a torre é constituída por n cilindros e é simétrica relativamentea um plano paralelo ao plano XZ. Defina a função torre-cilindros de modo a conseguirmodelar esta torre e garantindo que a função devolve a forma desejada como resultado (i.e.,não basta produzir efeitos secundários).

(define (torre-cilindros p r dr h n)(if (= n 0)

(empty-shape)(union(cylinder p r h)(torre-cilindros (+xz p (- dr) h) (- r dr) dr h (- n 1)))))

(torre-cilindros u0 30 2 4 10)

10. (2.0) Considere uma sequência de n cilindros de raio r, empilhados de modo a produzirem umaforma sinusoidal de amplitude a, frequência ω, e altura h, de que se apresentam três exem-plos em seguida. Considerando ainda que o cilindro mais em baixo tem a base centrada numponto P e que a sinusoide se desenvolve num plano parelelo ao plano XZ, defina a funçãocilindros-sinusoide capaz de reproduzir qualquer uma destas formas. Sugestão: use afunção map-division.

Page 6: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Número: 6

(define (cilindros-sinusoide p r a omega h n)(map-division(lambda (t)

(cylinder (+xz p (* a (sin (* omega t))) t)r(/ h n)))

0 h n))

11. (1.5) Considere a construção de uma escada em caracol tal como se apresenta nos três exemplosseguintes:

Note que cada degrau consiste simplesmente de um paralelipípedo assente em cima do degrauimediatamente abaixo e que a coluna central é um cilindro cujo diâmetro é igual à largura dodegrau. Defina a função escada-caracol capaz de construir esta escada a partir do ponto Pda base do eixo de rotação, do comprimento c, largura l e espessura e de cada degrau, do ânguloα de rotação do primeiro degrau e do incremento de rotação ∆α entre degraus consecutivos e,finalmente, do número n de degraus.

(define (degraus-caracol p c l e a da n)(if (= n 0)

(empty-shape)(union

(right-cuboid p l e (+pol p c a))(degraus-caracol

(+z p e)c l e(+ a da) da(- n 1)))))

(define (escada-caracol p c l e a da n)(union(degraus-caracol (+z p (/ e 2)) c l e a da n)(cylinder p (/ l 2) (+z p (* n e)))))

Page 7: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Número: 7

12. (1.5) Usando a função (escada-caracol P c l e α ∆α n) discutida no exercício anterior, de-fina a função escada que, para além de construir uma escada em caracol com uma rotaçãototal de 180 graus, ainda a envolve com uma parede semi-circular onde se apoiam os degraus,tal como se apresenta na seguinte imagem.

A sua função escada deverá receber, como parâmetros, o ponto P do centro da base das es-cada, os raios interior r0 e exterior r1 da parede semi-circular, a largura l de cada degrau, aaltura h a vencer e, finalmente, o número n de degraus pretendidos para vencer aquela altura.

(define (escada p r0 r1 l h n)(union

(escada-caracol p (/ (+ r0 r1) 2) l (/ h n) 0 (/ pi (- n 1)) n)(intersection

(subtraction(cylinder p r1 (+z p h))(cylinder p r0 (+z p h)))

(right-cuboid p (* 2 r1) (* 2 h) (+pol p r1 (/ pi 2.0))))))

13. (2.0) Pretende-se produzir a superfície representada na seguinte imagem à direita, a partir de umconjunto de coordenadas tri-dimensionais, tal como se apresenta na imagem à esquerda:

p0,0

p0,1 p0,2 p0,3

p0,4p0,5

p1,0

p1,1 p1,2 p1,3

p1,4p1,5

p2,0

p2,1 p2,2 p2,3

p2,4p2,5

p3,0

p3,1 p3,2 p3,3

p3,4p3,5

p4,0

p4,1 p4,2 p4,3

p4,4p4,5

p5,0

p5,1 p5,2 p5,3

p5,4p5,5

Admita que essas coordenadas estão armazenadas numa lista de listas da forma:

Page 8: Programação e Computação para Arquitectura – 2012/2013 · Instituto Superior Técnico Programação e Computação para Arquitectura – 2012/2013 Segundo Teste/Primeiro Exame

Número: 8

((p0,0 p0,1 ... p0,5)(p1,0 p1,1 ... p1,5)...(p5,0 p5,1 ... p5,5))

Defina a função superficie-interpolacao que recebe uma lista com a forma anterior, co-meça por criar uma lista de splines em que cada spline Si passa pelos pontos pi,0, pi,1, . . . , pi,5tal como se apresenta na imagem anterior à esquerda e acaba por usar essa lista de splinesS0, S1, . . . , S5 para fazer uma interpolação suave de secções, tal como se apresenta na imagemseguinte à direita:

(define (superficie-interpolacao pontos)(loft

(map spline pontos)))

14. (2.0) Um toro de raios maior r0 e menor r1 é definido parametricamente pela equação:

x = cos t(r0 + r1 cosu)

y = sin t(r0 + r1 cosu)

z = z = r1 sinu

0 ≤ u ≤ 2π; 0 ≤ v ≤ 2π;

Empregando a equação anterior, defina a função toro-esferas que gera um toro de esferassemelhante ao que se apresenta em seguida a partir do centro do toro P , dos raios maior r0 emenor r1 do toro, do raio de cada esfera re e ainda do número de intervalos m e n a considerarem cada dimensão.

(define (toro-esferas p r0 r1 re m n)(for ((u (division 0 2pi m)))

(for ((v (division 0 2pi n)))(sphere (+cyl p (+ r0 (* r1 (cos v))) u (* r1 (sin v)))

re))))