Dessiner avec la tortue
Sur le parcours blanc, tu as écrit tes premiers programmes Python. Aujourd'hui, on écrit du Python dans notre propre éditeur, et on retrouve notre point de départ : des programmes qui dessinent. Mais d'abord, on reprend l'idée mise de côté à la première séance : l'autre façon de décrire un tracé, du point de vue du crayon. C'est elle qui va rendre le carré beaucoup plus simple.
Cours ici, exercices sur Capytale
Cette page est le cours : lis-la et observe les exemples. Les exercices, où tu écris et exécutes le code, sont sur Capytale (via l'ENT) : tes programmes s'y exécutent dans le navigateur, rien à installer. Ton professeur te donnera le lien de l'activité.
Se connecter la première fois
- Allume l'ordinateur et ouvre la session Windows avec tes identifiants.
- Ouvre le navigateur, puis va sur l'ENT de l'établissement.
- Connecte-toi à l'ENT avec tes identifiants ENT.
- Ouvre Capytale (dans l'ENT, via le Médiacentre ou les services numériques).
- Colle le code ou le lien de l'activité donné par ton professeur, et c'est parti.
Rappel : tes identifiants sont ton matériel essentiel, à chaque séance.
Le carré de la première séance
Souviens-toi du carré du langage de tracé :
Quelque chose cloche. Un carré, c'est quatre fois exactement le même geste : un côté, puis un quart de tour. Pourtant notre programme a besoin de quatre blocs différents. La répétition est là, mais nos mots ne savent pas la dire : droite, bas, gauche, haut sont des directions vues de la feuille, et chaque côté part dans une direction différente.
Deux mots qui changent tout : avance et tourne
Changeons de point de vue : mets-toi à la place du crayon. Un crayon qui se déplace regarde toujours quelque part. De son point de vue, il n'y a plus ni droite ni bas : il y a devant soi, et il y a pivoter. Ajoutons ces deux mots au langage :
avance: trace un trait d'une case, devant soitourne: pivote sur place d'un quart de tour vers la gauche (sans tracer)
Remarque qu'on a fixé le sens du quart de tour : à la première séance, tourne disait « pivote d'un quart de tour » sans préciser de quel côté. Un implicite qui traînait encore ; maintenant, le mot est défini sans aucun doute possible.
C'est l'idée qu'on avait mise de côté : avec ces mots, le tracé ne dépend plus de la feuille, mais de la direction de celui qui trace.
Réécrivons le carré (départ : coin en bas à gauche, tourné vers la droite) :
Un seul bloc répété quatre fois. La répétition cachée du carré apparaît enfin : trois cases devant soi, un quart de tour, et c'est le même geste pour les quatre côtés. C'est le signe qu'on a trouvé les bons mots.
Exercice - Lire
On part du coin en bas à gauche, tourné vers la droite. Que dessine ce programme ?
Indice
Ne devine pas la figure : exécute le programme à la main, une instruction à la fois, en notant à chaque fois où est le crayon et vers où il regarde.
Indice plus précis
répète 3 fois : exécute le bloc trois fois de suite. Le bloc contient deux instructions, donc six instructions en tout. Le carré, lui, en demandait quatre répétitions.
Avant d'ouvrir la correction
En une phrase, sur ton cahier : combien de côtés ce programme trace-t-il, et pourquoi ce n'est pas quatre ?
Correction
Trois côtés d'un carré d'une case (une case devant soi, quart de tour, trois fois) : il manque le dernier côté. Le tracé s'arrête juste au-dessus du point de départ, crayon tourné vers lui.
Exercice - Écrire
Toujours en partant du coin en bas à gauche, tourné vers la droite : écris, avec avance et tourne seulement, un programme qui trace un rectangle de 3 cases de large et 1 case de haut. Cherche le geste qui se répète.
Indice
Écris d'abord le tour complet, sans chercher à répéter quoi que ce soit. Tu verras ensuite ce qui revient.
Indice plus précis
Le tour complet fait : 3 avance, tourne, 1 avance, tourne, 3 avance, tourne, 1 avance, tourne. Coupe cette liste en deux moitiés et compare-les.
Avant d'ouvrir la correction
En une phrase, sur ton cahier : quel groupe d'instructions se répète, et combien de fois ?
La tortue : notre langage, pour de vrai
Ce langage du « point de vue du crayon » existe en Python, prêt à l'emploi : c'est la tortue, un crayon qu'on pilote et qui trace derrière lui. On va créer une tortue, lui donner un nom, et lui parler avec nos deux mots, en version Python.
Tous nos programmes de dessin ont la même structure : on crée la tortue au début, et on termine par done().
from turtle import Turtle, done
hortense = Turtle()
# ... ici, on donne des ordres à hortense ...
done()
from turtle import Turtle, doneva chercher, dans la boîte à outilsturtle, le modèle de tortue (Turtle) et l'instructiondone.hortense = Turtle()crée une tortue et lui donne un nom :hortense. C'est ce nom qu'on emploiera ensuite chaque fois qu'on voudra lui parler.done()se met à la fin : elle affiche le dessin et garde la fenêtre ouverte. Elle agit sur toute la fenêtre, pas sur une tortue en particulier : c'est pour ça qu'on l'appelle seule, sans point ni nom de tortue devant.
Le nom hortense est un choix. Tu peux nommer ta tortue comme tu veux (robert, ninja, zoe…) : c'est toi le maître de ton programme. Ce qui compte, c'est de parler à ta tortue par ce nom ensuite.
Lui donner des ordres
La notation pointée, c'est tout simplement la façon de parler à la tortue : on lui envoie un message. On écrit son nom, un point, puis l'ordre qu'on lui donne.
hortense.forward(100) se lit « hortense, avance de 100 ». À gauche du point, à qui on parle (hortense) ; à droite, le message qu'on lui envoie (avance de 100).
Nos deux mots sont là, avec un réglage en plus, comme les instructions du parcours blanc :
| Notre langage | Python | Effet |
|---|---|---|
avance |
hortense.forward(100) |
avancer de 100 pas (plus fin que nos cases), en traçant |
tourne |
hortense.left(90) |
pivoter à gauche de 90 degrés (le quart de tour) |
hortense.right(90) |
pivoter à droite de 90 degrés |
Les réglages rendent les mots plus puissants : forward(50) avance moins loin, left(45) pivote d'un huitième de tour. Et la tortue sait aussi tourner à droite (right), ce que notre tourne ne savait pas.
Un premier programme complet :
Il crée la tortue, lui fait tracer un trait de 100 pas, puis done() affiche le dessin. Au départ, la tortue regarde vers la droite, comme dans nos exercices débranchés.
Traduire le carré
Il reste à traduire répète 4 fois :. En Python, c'est la boucle for :
from turtle import Turtle, done
hortense = Turtle()
for _ in range(4):
hortense.forward(100)
hortense.left(90)
done()
for _ in range(4): veut dire exactement « répète 4 fois ». Les instructions indentées en dessous forment le bloc répété, comme le bloc indenté après répète 4 fois :. Ligne à ligne, c'est notre programme débranché : un côté (forward(100) remplace les trois avance, grâce au réglage), un quart de tour, quatre fois.
Pour l'instant, for _ in range(n) = « répéter n fois »
Le _ signifie juste qu'on n'a pas besoin de retenir un numéro de tour. À ce stade, for _ in range(4):, c'est « répète 4 fois », un point c'est tout. Ne te pose pas d'autre question là-dessus pour le moment.
L'indentation, encore
Comme dans le langage de tracé, le décalage vers la droite indique ce qui est répété. Ce qui n'est pas indenté n'est pas dans la boucle.
Ce qu'on retient
- Les mots
droite,bas… dépendent de la feuille ;avanceettournedépendent de celui qui trace. Ce changement de point de vue fait apparaître la répétition cachée du carré : un seul bloc répété. - La tortue est ce langage en Python : on crée une tortue, on lui donne un nom, et on lui parle avec un point (
hortense.forward(100): « avance de 100 pas » ;hortense.left(90): « pivote de 90 degrés »). Les réglages (distance, angle) rendent les mots plus puissants. - Tout programme se termine par
done()(qui affiche le dessin), appelé seul, sans point. - Une boucle
forrépète un bloc indenté :for _ in range(4):veut dire « répète 4 fois », comme notrerépète 4 fois :. - Le cours est ici ; on s'entraîne sur Capytale.