Séquence et Turtle
A propos du chapitre
Objectif :
- Dessiner des formes géométriques simples
- Comprendre l'exécution séquentielle des instruction d'un programme
- Connaître les instructions de base de Turtle
- Acquérir un réflexe d'essai-erreur
Modalités :
- Programmation (Basthon)
- Un peu de réflexion
Prérequis : "Programmation/premiers_pas"
Difficulté : facile
Introduction : basthon, turtle, erreur
Un programme en Python est fait d'une séquence d'instructions :
Les instructions sont exécutées de haut en bas, dans l'ordre.
Pour illustrer ce principe, nous allons faire des dessins avec l'outils turtle.
C'est une tortue graphique, c'est à dire une sorte de stylo que l'on peut diriger avec du code pour dessiner.
On appelle celà une tortue, parce que c'est ... lent, pour nous permettre de bien voir le déroulement de l'exécution du programme.
Activité : turtle dans Basthon
Ouvrez Basthon.
Copiez le programme suivant dans la partie éditeur :
Dans la partie console, cliquez sur ce bouton pour afficher la "vue graphique" :

Executez le programme en cliquant sur "executer" :

Normalement, vous devriez voir apparaître une tortue, puis la voir avancer vers la droite.
Quelques explications de ce que fait le programme :
# Si un # est présent sur une ligne,
# tout ce qui est après est ignoré par l'interpréteur.
# Celà permet de commenter le code en langue naturelle (français, anglais)
# pour le rendre plus compréhensible pour nous humains.
from turtle import * # on dit à l'interpréteur de charger Turtle pour pouvoir l'utiliser
forward(200) # on déplace la tortue tout droit de 200 unités
done() # Le dessin est terminé, on peut l'afficher
Activité : erreur
Remplacez le programme dans la partie éditeur par le suivant :
Executez-le.
Vous devriez observer... rien !
C'est parce que le programme comporte une erreur
Dans la partie console, cliquez sur le bouton suivant pour afficher la console :

Normalement, vous devriez voir un message d'erreur :

Décorticons un peu ce message.
File "<basthon-input-2-8c1b484d0e93>" indique le fichier où se trouve l'instruction qui a déclenché l'erreur.
Il a un nom bizarre : c'est celui de l'éditeur en ligne de Basthon.
line 3 indique a quelle ligne du fichier se trouve l'instruction qui a déclenché l'erreur.
Cette ligne est affiché juste en dessous dans le message :
Finalement, SyntaxError: '(' was never closed nous renseigne sur la nature de l'erreur :
C'est une erreur de syntaxe, ce qui veut dire que le code n'est pas bien structuré.
Et plus précisément, une parenthèse n'a pas été refermée avant la fin du fichier.
Corrigez l'erreur, executez bien le programme pour vérifier que tout est bon.
Pro tip : expérimentez !
Plutôt que de réfléchir longtemps pour écrire un programme correct du premier coup,
il vaut mieux :
- Réfléchir un peu pour avoir une idée de ce que le programme doit faire
- Ecrire un programme imparfait à partir de cette idée
- Observer ce que le programme fait bien/pas bien
- Réfléchir un peu pour avoir une idée de comment corriger
- Faire une correction imparfaite à partir de cette idée
- Observer ce que le programme fait bien/pas bien
- etc jusqu'à avoir un programme qui marche !
TODO schéma ici ?
Instructions Turtle de base
Turtle comporte de nombreuses instructions pour contrôler la tortue. En voici quelques unes :
| instruction | description | exemple |
|---|---|---|
forward( DISTANCE ) |
Avancer de la DISTANCE donnée | forward(100) |
left ( ANGLE ) |
Tourner vers la gauche de l'ANGLE donné, en degrés | left(90) |
right ( ANGLE ) |
Tourner vers la droite de l'ANGLE donné, en degrés | right(120) |
goto ( X , Y ) |
Positionner la tortue en (X, Y). La position de départ est (0, 0) | goto(100, 50) |
speed( VITESSE ) |
Modifier la VITESSE de la tortue, de 1 (lent) à 10 (rapide). 0 pour dessin instantané | speed(4) |
Voici quelques activités pour expérimenter.
Activité : carré
Dessinez un carré de côté avec Turtle 100 :

Activité : triangle équilatéral
Dessinez un triangle équilatéral de côté 100 :

Rappels : - Un demi tour complet, c'est 180 degrés. - Un triangle équilatéral a des angles de 60 degrés.
Solution
TODO vérifier la terminologie avec prof math. Ajouter schéma L'angle intérieur d'un triangle équilatéral fait 60 degrés. Comme on tourne par "l'extérieur", il faut prendre l'angle complémentaire :
180 - 60 = 120.
Activité : triangle rectangle
Dessinez un triangle rectangle

Couleur du trait
L'instruction color permet de changer la couleur appliquée aux tracés suivants.
| instruction | description | exemple |
|---|---|---|
color( NOM ) |
choisit une couleur de trait à partir de son NOM | color( "blue" ) |
**Le nom de la couleur doit être entre guillemets ! "comme ça" ou 'comme ça'
Les noms des couleurs

source : https://wiki.mchobby.be/index.php?title=Fichier:Python-Turtle-Exemple2-11a.png
Activité : trait coloré
Dessinez un trait d'une couleur différente du noir (gris, rose, ...)
Choisissez bien entendu une couleur que vous arrivez à percevoir.
Dans l'exemple ci-dessous, j'ai pris "gray"

Activité : carré coloré
Dessinez un carré avec un trait d'une couleur différente du noir (gris, rose, ...)
Choisissez bien entendu une couleur que vous arrivez à percevoir.
Dans l'exemple ci-dessous, j'ai pris "gray"

Activité : petite réflexion
Avez-vous eu plus de difficultés à dessiner le carré dans la section précédente, ou le carré coloré à la question précédente ?
Expliquez pourquoi à votre prof
Couleur de remplissage
Turtle permet aussi de remplir une forme, pour peu qu'elle soit "fermée".
Par exemple :
from turtle import *
fillcolor("gray")
begin_fill()
forward(100)
left(120)
forward(100)
left(120)
forward(100)
end_fill()
done()
Activité : testons !
Executez le code ci-dessus. Que fait-il ?
Voici quelques explications :
| instruction | description | exemple |
|---|---|---|
fillcolor( NOM ) |
choisit une couleur de remplissage à partir de son NOM | color( "blue" ) |
begin_fill( ) |
démarre le remplissage | begin_fill() |
end_fill( ) |
termine le remplissage et remplit la forme dessinée depuis begin_fill() |
end_fill() |
Activité : carré rempli
Dessinez un carré rempli d'une couleur différente du noir (gris, rose, ...)
Choisissez bien entendu une couleur que vous arrivez à percevoir.
Dans l'exemple ci-dessous, j'ai pris "gray":

Activité : ça se complique
Ecrivez un programme qui reproduit le dessin ci-dessous :
La couleur utilisée est du `"gray"', mais vous pouvez en utiliser une autre
Solution
Levée de stylo
Turtle nous permet de déplacer la tortue sans dessiner, avec les instructions suivantes.
| instruction | description | exemple |
|---|---|---|
penup( ) |
Lève le stylo. Les commandes de déplacement ne dessinent plus. | penup() |
pendown( ) |
Baisse le stylo. Les commandes de déplacement dessinent. | pendown() |
Activité : un peu d'expérimentation
Reproduisez la figure suivante :

Les deux carrés font 100 de côté et son espacés de 100.