Variables
A propos du chapitre
Objectif :
- Utiliser une variable pour paramétrer un dessin
- Comprendre qu'une variable représente une valeur abstraite
- Associer une valeur à une variable
Modalités :
- Programmation (Basthon)
- Un peu de réflexion
Prérequis : "Programmation/Séquence et Turtle"
Difficulté : facile
remarque prof : les activités de l'introduction demandent de se chronométrer. Comme les téléphones sont interdits, les faire utiliser un chronomètre sur l'ordi (par 2, un chrono et un code) ou solo en affichant un chrono au tableau.
Introduction : paramètre ?
Dans l'introduction, j'ai dit que le but du dessin paramétrique était de pouvoir modifier un dessin le plus rapidement et simplement possible.
Mesurons un peu.
Activité : briefing !
Mettez-vous par paires. Il est aussi possible de rester en solo.
Par groupe :
- Vous aurez besoin de deux ordinateurs.
- Sur l'un, mettez ce chapitre du cours et Basthon
- Sur l'autre, ouvrez le chrono en cliquant sur [ce lien](https://dwyl.github.io/stopwatch/)
- La personne qui a le chronomètre donne le départ pour résoudre la mission.
- L'autre doit alors résoudre la mission le plus vite possible.
- N'hésitez pas à alterner les rôles.
En solo :
- Vous n'avez besoin que d'un ordinateur.
- Vous pouvez utiliser le chrono à [ce lien](https://dwyl.github.io/stopwatch/)
- Ou alors utiliser le chrono au tableau,
- Pour plus de simplicité, commencez pile sur une minute.
Déroulement d'une mission :
- Lisez le sujet de l'activité et le descriptif de la mission sans ouvrir les dépliants.
- Quand le départ est donné, la personne qui résouds la mission a le droit d'ouvrir les dépliants, et doit résoudre la mission le plus vite possible.
- Si la mission a une limite de temps, la personne chargée du chrono prévient l'autre quand la limite est atteinte.
- N'oubliez pas de noter votre score !
Activité : C'est carré !
Votre mission
L'agent Félix nous a envoyé un code Turtle qui dessine le carré suivant.

Malheureusement, il a été distrait par une pelote de laine, et le carré est trop petit.
Vous devez ABSOLUMENT doubler la taille du carré en moins de 3 minutes !
Vite, le temps presse !
Activité : c'esT moiNS carré !
Votre mission
L'agent Félix nous a envoyé une version améliorée du code Turtle !
Il dessine maintenant la figure suivante :

Malheureusement, il a été distrait par une souris (d'ordinateur, aucun animal n'a été maltraité pour l'écriture de ce chapitre !), et le carré en haut à gauche est trop grand !
Vous devez ABSOLUMENT DIVISER PAR 2 la taille du carré en haut à gauche en moins de 5 minutes !
VITE, le temps presse !
Dépliant avec le code
from turtle import *
speed(0)
begin_fill()
forward(100)
left(90)
forward(100)
left(90)
forward(100)
end_fill()
forward(100)
left(90)
forward(100)
left(90)
forward(100)
right(180)
begin_fill()
forward(100)
left(90)
forward(100)
left(90)
forward(100)
end_fill()
forward(100)
left(90)
forward(100)
left(90)
forward(100)
done()
Activité : C'357 P45 C4rr3 !
Votre mission
L'agent Félix nous a envoyé une version encore plus puissante du code Turtle !
TODO : mission avec 9 carrés qu'il faut TOUS changer de taille
Activité : 3'&
i
!
Votre mission
L'agent Félix nous a envoyé la version ULTIME du code Turtle !
Il dessine maintenant la figure suivante :

Malheureusement, il a été distrait par le rébus de zinzin dans le titre de l'activité1 ! Le carré noir le plus bas dans la colonne de droite est trop petit !
Vous devez ABSOLUMENT multiplier par 1,5 la taille du carré noir le plus bas dans la colonne de droite en moins de 3 minutes !
VITE, LE TEMPS PRESSE !!!
Dépliant avec le code
from turtle import *
speed(7)
begin_fill()
forward(200)
left(90)
forward(100)
left(90)
forward(400)
right(90)
forward(100)
right(90)
forward(400)
right(90)
forward(400)
right(90)
forward(100)
right(90)
forward(400)
left(90)
forward(100)
left(90)
forward(400)
right(90)
forward(100)
right(90)
forward(400)
left(90)
forward(100)
left(90)
forward(400)
left(90)
forward(400)
left(90)
forward(100)
left(90)
forward(400)
right(90)
forward(100)
right(90)
forward(200)
end_fill()
done()
Bon, bravo agent NOM, PRENOM, la planète n'est pas sauvée 2, mais vous avez fait de votre mieux !
Rejoignez la salle de SNT pour le debriefing !
Activité : debriefing
Vous n'avez peut-être pas réussi à faire les modifications des deux dernières missions dans le temps imparti.
Ne vous inquiétez pas, c'est normal.
Elles illustrent chacune une difficulté que l'on peut rencontrer quand on modifie un programme.
Prenez quelques minutes pour réfléchir à ce que peuvent être ces deux difficultés. (optionel : expliquez pourquoi elles posent un gros problème pour développer des programmes)
N'hésitez pas à échanger avec vos camarades.
Solution
L'avant dernière mission demande un changement qui n'est pas très compliqué à comprendre en principe, mais long parce qu'il faut modifier presques toutes les lignes du code pour un seul petit changement : le code est redondant.
La dernière mission demande un changement qui ne modifie pas énormément de lignes de code, mais qui demande de comprendre un code complexe.
Elles posent un problème dans la programmation : même avec un code de quelques lignes, c'est déjà la galère. A titre de comparaison, voici l'ordre de grandeur de quelques programmes :
| Logiciel | Usage | Ordre de grandeur sloc | Principaux langages |
|---|---|---|---|
| OpenFlappyBird | Une version Libre de Flappy Bird | 600 | Java |
| SuperTux | Une version Libre de Super Mario | 100K | C++ |
| Terasology | Une version Libre de Minecraft | 130K | Java |
| KDenLive | Editeur vidéo non-linéaire | 150K | C++, C |
| Audacity | Enregistrement et traitement audio | 1M | Python, C, C++ |
| CPython | Interpréteur Python le plus répandu | 1.5M | Python, C |
| Blender | Modélisation 3D | 2.3M | C++, C, Python |
| llvm | Suite de compilation pour les langages de la famille du C. | 11M | C++, C, Python, LLVM IR, ASM, CMake[^cmake], Objective C |
| Firefox | Navigateur Web | 25M | C++, C, Python, JavaScript, ASM, Rust |
Bon, si on peut faire des programmes aussi complexes, c'est qu'il y a une technique.
DES techniques :
- Dans ce chapitre et le suivant, je vous explique comment résoudre la redondance, avec la généralisation et plus précisément la factorisation.
- Dans le chapitre encore après, on verra comment résoudre la complexité, avec l'abstraction et la découpage.
Variable ?
TODO continuer ici, NE PAS OUBLIER DE FAIRE LA MISSION 3
remarque prof
Autres noms de mission :
- C'est moins carré
- C'est pas carré (leet speak)
- C'est carrément horrible ! (avec des symboles genre []ment pour carrément )
- C'est carré. (avec le code propre et les variables) Derniere activité, parler de l'intervention de l'"agent Félix" mdr
-
"C'est carrément horrible !". 3ème lettre de l'alphabet, C. ' inchangé. & esperluette, utilisé pour dire "et".
: carré.
toilettes hommes, hommes en anglais : mens. : heure. i inchangé.
bleu. ↩
-
sauf si vous avez vraiment réussi à faire le dernier en moins de 3 minutes, dans ce cas là bravo, perso j'ai même pas essayé, LOL. ↩