escargot

TP1-PROG-04 - Boucles for approfondissement#

Objectif pédagogiques#

  • approfondir le concept de boucles d’instructions

Comment dessiner une spirale ?#

Une spirale est un objet formé de segments dont la longueur augmente à chaque itération. Les premières étapes sont donc (avec un angle de 30°):

t.forward(2)
t.left(30)
t.forward(3)
t.left(30)
t.forward(4)
...

On observe que le changement dans le dessin est minime : c’est la taille du segment. On peut donc implémenter le programme avec une boucle et utiliser la valeur de la variable itérateur comme argument de la fonction t.forward()

Exercice 1 : une spirale “carrée”#

Ecrivez un programme en utilisant une boucle qui dessine une spirale qui commence avec une longueur de segment de 2 et qui augmente chaque fois de 1. L’angle choisi est de 30°

Exercice 2 : dessiner des mandala#

Un mandala est une représentation symbolique bouddhiste de l’univers, de forme géométrique et symétrique par rapport à son centre. Il sert à la méditation.

Voici quelques exemples de mandalas produits. Observez-les et reproduisez-le. Quels sont les angles choisis et pourquoi observe-t-on les effets de Moiré ?

mandala1

mandala2

mandala3

Exercice 3 (a step forward)#

Est-il possible d’améliorer la courbure de la spirale et donc d’affiner le segment en arc de cercle ?

Indications :

On peut utiliser la fonction circle() qui prend en paramètre deux nombres :

t.circle(rayon, angle)

Syntaxe complète de la boucle for#

La fonction range() se généralise avec 3 paramètres : la borne inférieure (bi), la borne supérieure (bs) ainsi que le pas (pas) :

for i in range(bi, bs, pas) :
    bloc instructions

Exercice 4 : boucle avec bornes et pas#

Le code suivant permet de dessiner un losange bleu rempli de jaune :

from turtle import *
t = Turtle()

t.pencolor("blue")
t.pensize(4)
t.fillcolor('yellow') 
t.speed(0)

t.begin_fill() 
t.forward(100)
t.left(30)
t.forward(100)
t.left(150)
t.forward(100)
t.left(30)
t.forward(100)
t.left(150)
t.end_fill() 

Modifiez ce code en utilisant une ou des boucles pour reproduire le dessin suivant :

fleur

Exercice 5 : pour aller plus loin#

Voici un code permettant de dessiner une maison dont la taille est précisée par la variable taille:

from turtle import *
t = Turtle()

t.pencolor("black")
t.pensize(2)
t.speed(0)

taille = 100

t.fillcolor('blue') 
t.begin_fill() 
for i in range(4):
    t.forward(taille)
    t.left(90)
t.end_fill() 
t.fillcolor('red')
t.penup()
t.left(90)
t.forward(taille)
t.right(90)
t.pendown()
t.begin_fill() 
for i in range(3):
    t.forward(taille)
    t.left(120)
t.end_fill() 
t.penup()
t.right(90)
t.forward(taille)
t.left(90)
t.pendown()

En ajoutant une nouvelle variable nbrMaison ainsi qu’une nouvelle boucle, reproduisez le dessin ci-dessous :

ville