É muita coisa para pensar ao mesmo tempo. Vamos então por partes. Vamos supor que é apenas um quadrado e que a cor é irrelevante. O leitor atento notará logo que assim formulado, trata-se na realidade do problema 4.20. E é! Vamos então resolver o dito.
01.
def
quadrado(tartaruga,x,y,lado):
02.
"""Desenha um quadrado."""
03.
# prepara
04.
tartaruga.up()
05.
tartaruga.goto(x,y)
06.
tartaruga.hideturtle()
07.
tartaruga.down()
08.
# desenha
09.
for
i
in
range(
4
):
10.
tartaruga.forward(lado)
11.
tartaruga.right(
90
)
Esta solução não tem nada de especial: o problema foi dividido em duas partes. Na primeira, colocamos a tartaruga no sítio apropriado. Na segunda, desenhamos o quadrado, através de uma repetição de desenho do lado e rotação de 90 graus. Pensemos agora num outro detalhe: a cor.
1.
def
quadrado_cor(tartaruga,x,y,lado,cor):
2.
""" Desenha um quadrado colorido."""
3.
tartaruga.color(cor)
4.
quadrado(tartaruga,x,y,lado)
Trivial, certo? A partir daqui, vamos querer desenhar quadrados coloridos concêntricos. Quantos serão será um parâmetro do problema. E terei um ciclo for. Algo assim:
1.
def
quad_concentricos(n,tartaruga,x,y,lado,cor,d):
2.
"""Desenha n quadrados coloridos concêntricos."""
3.
for
i
in
range(n):
4.
#desenha novo quadrado colorido
Mas como os faço concêntricos? A ideia é dada pela imagem seguinte:

Ou seja. Conhecidas as coordenadas do canto inferior esquerdo do último quadrado desenhado, a do próximo resulta de eu alterar essas coordenadas retirando um dado valor a x e aumentando desse mesmo valor y (notar o modo como estão orientados os eixos!). Se eu fizer isso, resulta claro que o novo lado vale a + 2 *d, se a dor o valor do lado inicial. Daqui resulta o código:
1.
def
quad_concentricos(n,tartaruga,x,y,lado,cor,d):
2.
"""Desenha n quadrados concêntricos em cores alternadas."""
3.
for
i
in
range(n):
4.
quadrado_cor(tartaruga,x
-
i
*
d, y
+
i
*
d, lado
+
i
*
2
*
d,cor)
Uso o valor de i para controlar o incremento. E como alterno as cores??? Se pensarmos bem, veremos que não é difícil. vou usar o valor de i: se for par, azul, se for ímpar, vermelho!!! E chego ao programa final.
1.
def
quad_concentricos(n,tartaruga,x,y,lado, cor_1, cor_2,d):
2.
"""Desenha n quadrados concêntricos em cores alternadas."""
3.
for
i
in
range(n):
4.
if
i
%
2
=
=
0
:
5.
quadrado_cor(tartaruga,x
-
i
*
d, y
+
i
*
d, lado
+
i
*
2
*
d, cor_1)
6.
else
:
7.
quadrado_cor(tartaruga,x
-
i
*
d, y
+
i
*
d, lado
+
i
*
2
*
d, cor_2)

Aqui, um antigo e atento aluno!
ResponderEliminarNa última listagem, na linha 7 não deveria estar cor_2?
Cumprimentos.
Aqui, antigo aluno (e atento)!
ResponderEliminarNa última listagem, na linha 7, não deveria ser cor_2?
Cumprimentos!
Certíssimo! É o que dá em programar de uma maneira e depois apresentar de outra, para efeitos pedagógicos ... sem testar! Vou emendar.
ResponderEliminar