Skip to content

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

  1. Allume l'ordinateur et ouvre la session Windows avec tes identifiants.
  2. Ouvre le navigateur, puis va sur l'ENT de l'établissement.
  3. Connecte-toi à l'ENT avec tes identifiants ENT.
  4. Ouvre Capytale (dans l'ENT, via le Médiacentre ou les services numériques).
  5. 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é :

répète 3 fois :
    droite
répète 3 fois :
    bas
répète 3 fois :
    gauche
répète 3 fois :
    haut

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 soi
  • tourne : 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) :

répète 4 fois :
    avance
    avance
    avance
    tourne

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 ?

répète 3 fois :
    avance
    tourne
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 ?

Correction

répète 2 fois :
    avance
    avance
    avance
    tourne
    avance
    tourne
Le geste répété : un grand côté (3 cases), quart de tour, un petit côté (1 case), quart de tour. Deux 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, done va chercher, dans la boîte à outils turtle, le modèle de tortue (Turtle) et l'instruction done.
  • 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 :

from turtle import Turtle, done
hortense = Turtle()
hortense.forward(100)
done()

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 ; avance et tourne dé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 for répète un bloc indenté : for _ in range(4): veut dire « répète 4 fois », comme notre répète 4 fois :.
  • Le cours est ici ; on s'entraîne sur Capytale.