- a) Faça um programa que escolha aleatoriamente um número. Se ele for par, desenhe um quadrado; se for ímpar, desenhe um círculo (ou polígono).
b) Faça um programa que escolha aleatoriamente um número. Se ele for par, avance 1 unidade com o forward(); se for ímpar, gire 1 grau para direita com right(). Repita esse trecho de código 3 mil vezes.
c) Altere o programa anterior para avançar
unidades e girar y graus, onde
e
são número aleatórios.
b) Faça um programa que escolha aleatoriamente um número. Se ele for par, avance 1 unidade com o forward(); se for ímpar, gire 1 grau para direita com right(). Repita esse trecho de código 3 mil vezes.
c) Altere o programa anterior para avançar
Passo 1
O enunciado pede três programas separados:
(a) Escolher um número aleatório; se for par desenhar um quadrado, se for ímpar desenhar um círculo (ou polígono).
(b) Escolher um número aleatório; se for par, avançar unidade com com vezes.
(c) Alterar o programa do item (b) para que, em vez de sempre usar , se avance
unidades e se gire
graus, onde
e
são números aleatórios (supõe-se que
e
sejam gerados a cada iteração).
(a) Escolher um número aleatório; se for par desenhar um quadrado, se for ímpar desenhar um círculo (ou polígono).
(b) Escolher um número aleatório; se for par, avançar
forward(); se for ímpar, girar
right(). Repetir esse trecho
(c) Alterar o programa do item (b) para que, em vez de sempre usar
Informações relevantes dadas:
- Precisamos decidir e gerar números aleatórios.
- Precisamos testar paridade (par/ímpar) do número sorteado.
- Usaremos comandos de desenho como
forward(),right(),circle()(assumo uso da bibliotecaturtledo Python). - No item (b) foi informado repetir o trecho
vezes. - No item (c)
e devem ser aleatórios; vou gerar como distância e como ângulo por iteração.
Passo 2
Entendendo como gerar números aleatórios (aula rápida): em Python usamos o módulo e
, inclusive. Exemplo:
random. A função mais comum é random.randint(a, b), que retorna um inteiro aleatório entre
cria um inteiro
entre
e
. Use isso para escolher o número cuja paridade vamos testar. Se você quiser números reais (com casas decimais) use
random.uniform(a, b).Passo 3
Entendendo paridade (aula rápida): para saber se um inteiro
é par ou ímpar usamos o resto da divisão por
. Em matemática escrevemos
; em Python usamos o operador
%. A condição é:-
é par se (em Python: n % 2 == 0). -
é ímpar se (n \bmod 2 = 1` (em Python: n % 2 == 1).
Exemplo em Python:
significa “se
for par”.)
Passo 4
Noções básicas do
turtle (aula prática): os comandos que vamos usar:turtle.Turtle()cria o objeto de desenho.forward(d)oufd(d)andaunidades para frente. right(a)girapara a direita. circle(r)desenha um círculo de raio. speed(...),hideturtle(),tracer(0,0)eupdate()ajudam a acelerar o desenho para muitos passos (útil no item (b) e (c)).turtle.done()encerra a janela (outurtle.mainloop()).
Vamos sempre colocar iterações) para não ficar lento.
turtle.speed('fastest') ou turtle.tracer(0,0) quando repetirmos muitas vezes (como
Passo 5
Construindo o programa do item (a) passo a passo:
- Importar módulos:
randompara números aleatórios eturtlepara desenhar. - Criar a tartaruga:
t = turtle.Turtle(). - Sortear um inteiro
n, por exemplo entre1e100. - Testar paridade com
n % 2 == 0. - Se par: desenhar um quadrado. Como desenhar um quadrado? Um quadrado tem
lados iguais; cada canto vira . Em código: - repetir 4 vezes:
forward(size)eright(90).
- repetir 4 vezes:
- Se ímpar: desenhar um círculo com
circle(radius)ou um polígono aproximando um círculo. Aqui usocircle(radius)para ficar simples.
Explico os parâmetros:
size é o comprimento do lado do quadrado; radius é o raio do círculo. Você pode ajustar para caber na tela.Passo 6
Código explicativo do item (a):
- O código abaixo está pronto para copiar e executar em Python (versão padrão com
turtle):
# (a) sorteia um número; par -> quadrado, ímpar -> círculo
import random
import turtle
t = turtle.Turtle()
t.speed('fastest') # acelerar desenho
n = random.randint(1, 100) # sorteia n entre 1 e 100
print("Número sorteado:", n)
if n % 2 == 0:
size = 100 # comprimento do lado do quadrado (ajuste se quiser)
for _ in range(4):
t.forward(size)
t.right(90)
else:
radius = 50 # raio do círculo
t.circle(radius)
turtle.done()
Observações didáticas: a linha . Simples assim.
if n % 2 == 0: testa a paridade; o laço for _ in range(4): repete quatro lados; t.right(90) vira
Passo 7
Construindo o programa do item (b) passo a passo:
- Queremos repetir um trecho
vezes. Em Python: for i in range(3000):. - A cada iteração, sorteamos um inteiro
n(por exemplo entre1e100). - Se
nfor par (n % 2 == 0) avançamos1unidade comt.forward(1); se for ímpar giramos1grau comt.right(1). - Como são muitas iterações, use
turtle.tracer(0, 0)para desligar o desenho automático eturtle.update()ao final para mostrar tudo de uma vez; também esconder a tartaruga comhideturtle()e usarspeed('fastest')para performance.
Dica visual: com passos tão pequenos (
) as mudanças são sutis; você pode aumentar a unidade para ver mais claramente, mas seguirei o pedido literal.
Passo 8
Código explicativo do item (b):
# (b) 3000 iterações: se número aleatório for par -> forward(1), se ímpar -> right(1)
import random
import turtle
t = turtle.Turtle()
t.hideturtle()
t.speed('fastest')
turtle.tracer(0, 0) # desliga atualização automática para ficar rápido
for i in range(3000): # repetir 3000 vezes
n = random.randint(1, 100)
if n % 2 == 0:
t.forward(1)
else:
t.right(1)
turtle.update() # desenha tudo de uma vez
turtle.done()
Explicação: cada iteração decide mover ou girar 1; o caminho gerado pode ser uma linha ondulada/espiral dependendo das sequências de par/ímpar.
Passo 9
Construindo o programa do item (c) passo a passo:
- Mantemos a estrutura do item (b) com
for i in range(3000):. - Em cada iteração sorteamos três números:
n: para decidir par/ímpar (como antes).x: distância de avanço quandonfor par.y: ângulo de giro quandonfor ímpar.
- Decisões:
- Se
n % 2 == 0:t.forward(x). - Caso contrário:
t.right(y).
- Se
- Defina intervalos razoáveis para
e . Por exemplo: -
entre e unidades ( random.randint(1, 10)). -
entre e ( random.randint(1, 90)).
Você pode mudar estes intervalos para efeitos visuais diferentes. Também pode usarrandom.uniform(a, b)se quiser distâncias ou ângulos não inteiros (floats).
-
Passo 10
Código explicativo do item (c):
# \text{(c)} 3000 iterações: sorteia n para par/ímpar; se par -> forward(x), se ímpar -> right(y)
import random
import turtle
t = turtle.Turtle()
t.hideturtle()
t.speed('fastest')
turtle.tracer(0, 0)
for i in range(3000):
n = random.randint(1, 100) # decide paridade
x = random.randint(1, 10) # distância (unidades) quando for par
y = random.randint(1, 90) # ângulo (graus) quando for ímpar
if n % 2 == 0:
t.forward(x)
else:
t.right(y)
turtle.update()
turtle.done()
Variação com números reais (floats), se preferir movimentos menos “em degraus”:
# variação: x e y como floats
import random, turtle
t = turtle.Turtle()
t.hideturtle()
t.speed('fastest')
turtle.tracer(0, 0)
for i in range(3000):
n = random.randint(1, 100)
x = random.uniform(0.5, 10.0) # float entre 0.5 e 10.0
y = random.uniform(0.5, 180.0) # float entre 0.5 e 180.0
if n % 2 == 0:
t.forward(x)
else:
t.right(y)
turtle.update()
turtle.done()
Passo 11
Dicas finais e testes rápidos:
- Se o desenho parecer muito pequeno, aumente os intervalos de
ou diminua o número de iterações. - Para depurar, reduza
range(3000)pararange(50)e coloqueprint()s para ver os valores den,e . - Se quiser resultados reproduzíveis, use
random.seed(s)com um inteirosfixo antes de sortear, assim a sequência aleatória será a mesma em cada execução. - Experimente alterar os intervalos de
e para ver padrões interessantes: por exemplo, ysempre múltiplo degera formas ortogonais; yem torno depode criar curvas bonitas (número áureo relacionado a phyllotaxis).
Você consegue rodar cada um dos programas copiando o código para um arquivo
.py e executando com Python. Vai dar tudo certo — começa com o (a), depois (b) e por último (c). Boa sorte e, se travar, me manda o erro que eu te explico passo a passo.Resposta
(a)
# (a) sorteia um número; par -> quadrado, ímpar -> círculo
import random
import turtle
t = turtle.Turtle()
t.speed('fastest') # acelerar desenho
n = random.randint(1, 100) # sorteia n entre 1 e 100
print("Número sorteado:", n)
if n % 2 == 0:
size = 100 # comprimento do lado do quadrado (ajuste se quiser)
for _ in range(4):
t.forward(size)
t.right(90)
else:
radius = 50 # raio do círculo
t.circle(radius)
turtle.done()
(b)
# (b) 3000 iterações: se número aleatório for par -> forward(1), se ímpar -> right(1)
import random
import turtle
t = turtle.Turtle()
t.hideturtle()
t.speed('fastest')
turtle.tracer(0, 0) # desliga atualização automática para ficar rápido
for i in range(3000): # repetir 3000 vezes
n = random.randint(1, 100)
if n % 2 == 0:
t.forward(1)
else:
t.right(1)
turtle.update() # desenha tudo de uma vez
turtle.done()
(c)
# \text{(c)} 3000 iterações: sorteia n para par/ímpar; se par -> forward(x), se ímpar -> right(y)
import random
import turtle
t = turtle.Turtle()
t.hideturtle()
t.speed('fastest')
turtle.tracer(0, 0)
for i in range(3000):
n = random.randint(1, 100) # decide paridade
x = random.randint(1, 10) # distância (unidades) quando for par
y = random.randint(1, 90) # ângulo (graus) quando for ímpar
if n % 2 == 0:
t.forward(x)
else:
t.right(y)
turtle.update()
turtle.done()