Buscar

1a prova 2015

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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])

Outros materiais