Programmation en Sciences de la nature
Des contenants étiquetés pour ranger les valeurs
Des bols et des verres
Une variable, c'est un contenant étiqueté
Le signe = se lit « affecter » : on verse une valeur
La mémoire, pas à pas
Le défi : échanger deux verres
Des bols, des verres et des étiquettes
Pour cuisiner ou bricoler, on prépare des bols étiquetés : un nom collé dessus, un contenu à l'intérieur.
On dit « passe-moi le bol de sucre » sans regarder dedans : le nom suffit pour retrouver le contenu.
Bol ou verre, même idée.
On dessinera des verres : on voit le niveau.
Une variable, c'est une étiquette collée sur un contenant qui garde une valeur en mémoire.
Le programme dit ensuite « temperatureCelsius » et l'ordinateur va chercher le contenu, comme on va chercher le bol de sucre.
Ce n'est pas une équation impossible : on prend le contenu de x, on ajoute 1, puis on reverse le résultat dans x.
Réaffecter, c'est vider le verre et y verser autre chose. L'ancienne valeur est jetée : il n'en reste rien.
Retenez ce détail : il explique tout le défi de la fin.
Un bon nom dit ce qu'il y a dedans, comme l'étiquette sur le bol. On écrit en mixedCase (premier mot en minuscules, majuscule à chaque mot suivant) et on évite les abréviations : le code se lit comme une phrase.
Exception assumée : x et y dans les exemples courts de ce diaporama, pour garder les verres lisibles.
| Type | Description | Exemples |
|---|---|---|
| int | nombre entier | 3, -7, 1024 |
| float | nombre à virgule | 9.8, -0.5, 3.14 |
| str | chaîne de caractères (texte) | 'eau', "H2O" |
| bool | booléen (vrai ou faux) | True, False |
Le type, c'est la nature de l'ingrédient dans le verre : de l'eau, du sable, du jus. La fonction type() révèle le type d'une valeur.
Chaque rangée est une photo de la mémoire après l'instruction. Le verre entouré d'orange vient de changer.
La couleur suit la valeur, pas le verre : le verre garde son étiquette, le liquide change.
masse = 12.5masse est crééevolume = 5.0volume est crééemasse = 13.0masse change, 12.5 est jetéx = 3, y = 5 ... et si on les échangeait ?
Mission : écrire les instructions pour qu'à la fin, x contienne 5 et y contienne 3.
Indice : que devient l'ancien contenu quand on verse dans un verre déjà plein ?
Objectif : x = 5 et y = 3
Raté. Dès la première ligne, on vide x pour y verser une copie de y : le 3 est jeté. À la fin, les deux verres contiennent 5.
x = yx reçoit une copie de y : le 3 est jetéy = xy reçoit une copie de x... qui vaut déjà 5Raté encore. Cette fois c'est le 5 qui est jeté : les deux verres contiennent 3.
Peu importe l'ordre : le premier versement détruit une des deux valeurs. Il nous manque un endroit où la mettre en sécurité.
y = xy reçoit une copie de x : le 5 est jetéx = yx reçoit une copie de y... qui vaut déjà 3Réussi ! x contient 5, y contient 3. Le troisième verre a gardé le 3 en sécurité pendant qu'on vidait x.
temporaire = xle 3 est mis en sécuritéx = yx reçoit 5, sans regrety = temporairey récupère le 3 sauvegardéComme deux verres de jus : pour échanger leur contenu, il faut un troisième verre vide.
Bonus, en Python seulement :
Python prépare les deux valeurs de droite avant de verser : le troisième verre est caché à l'intérieur.
Dans Google Colab (ou le compilateur en ligne de programiz), teste les trois versions et observe ce que print affiche :
x = y puis y = x : qu'affiche print ?x, y = y, x.input() au lieu d'écrire 3 et 5.Pour rejouer chaque tentative verre par verre, avec ton propre code :
code.experimentations.xyz/visualisateur/variables/visualisateur-pas-a-pas.html