Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Programação - 1a Prova - 1o semestre - 2015 Algumas das questões a seguir usam o sistema gráfico Processing para desenhar. Para quem não se lembra, eis uma lista das funções usadas. Lembre também que em Processing o eixo y aponta para baixo, e que o ponto de coordenadas (0,0) é o do canto superior esquerdo da janela size(w,h) Abre uma janela com w pixels de largura e h de altura. triangle(x0,y0,x1,y1,x2,y2) Desenha um triângulo com vértices nos pontos (xi,yi). rect(x,y,w,h) Desenha um retângulo com canto superior esquerdo em (x,y), largura w e altura h. ellipse(x,y,w,h) Desenha uma elipse centrada em (x,y), largura w e altura h. fill(c) Configura a cor de preenchimento de figuras. c = 0 significa preto e c = 255 significa branco. PI É igual a pi. 1. (2 pontos) Esboce o desenho produzido pelo código abaixo. def desenho(x,y,l): v = [0,1] for d in l: xx,yy = x+v[0]*d,y+v[1]*d line (x,y,xx,yy) x,y = xx,yy v=[-v[1],v[0]] size(400,400) desenho(width/2,height/2,[100,150,200,300,100,150]) 2. (2 pontos) O que imprime o código abaixo? def f (l): while len(l)>1: r = [] for i in range(len(l)/2): j = len(l)-i-1 r = r + [l[i:i+1]+l[j:j+1]] l = r return l print f(range(8)) 3. Escreva a função particiona(l, i) que Rearranja os elementos de l de tal forma que o elemento originalmente em l[i], x digamos, é movido para a posição j, todos elementos menores que x são movidos para posições menores que j, e todos os elementos maiores ou iguais a x são movidos para posições maiores que j. Os elementos menores que x não devem ter sua posição relativa alterada, isto é, se na lista original dois elementos menores que x aparecem nas posições a e b, a < b, então na lista rearranjada eles podem se mover para novas posições c e d, mas c < d. De forma análoga, os elementos maiores que x também devem ter suas posições relativas mantidas. Note que a função altera l. O valor retornado é a nova posição j do elemento x. Por exemplo, o código l = [1,5,3,4,2,6,7,8,0] print particiona(l,3),l imprime 4 [1, 3, 2, 0, 4, 5, 6, 7, 8] 4. (3 pontos) Escreva a função quadrados_centrados(x, y, tam, l) que desenha quadra- dos cujos tamanhos estão na lista l, centralizados sobre um segmento de reta horizontal de tamanho tam cujo ponto médio está no ponto x, y. Os quadrados devem ser desenha- dos se tocando e com seus pontos centrais sobre o segmento de reta. O segmento de reta também deve ser desenhado, bem como seu ponto médio, que deve ser desenhado como um círculo de raio 5. Eis um exemplo de chamada à função e a figura obtida: size(400,400) quadrados_centrados(width/2,height/2,width*0.75,[30,20,80,50,40])
Compartilhar