Introduction

Les paramètres abordés dans la dernière section nous permettent maintenant de réaliser un grand nombre de tâches avec une seule commande en fonction du paramètre choisi. Une unique commande est par exemple suffisante pour dessiner un carré de taille et de couleur quelconques.

Du point de vue de l'ordinateur, un paramètre est un emplacement mémoire possédant un nom particulier. On peut s'imaginer que Python stocke l'ensemble des paramètres dans une sorte de tableau de correspondance. Dès que l'ordinateur a besoin de connaître la valeur d'un paramètre x, il consulte la ligne du tableau correspondante. Il travaille ensuite avec la valeur présente dans le tableau. Dans ce chapitre, nous allons généraliser le concept de paramètre pour construire le concept de variable. Les paramètres sont utilisés pour enregistrer des valeurs sous un nom donné et y accéder ultérieurement. La différence avec les variables est que l'on s'autorise en plus à modifier leur valeur durant l'exécution du programme et à utiliser la nouvelle valeur pour dessiner, calculer ou écrire du texte.

Dans ce chapitre, vous allez apprendre à utiliser les variables pour développer des programmes permettant de résoudre des problèmes encore plus complexes.

Modifier une valeur

Lorsque nous avions défini une fonction prenant des paramètres, par exemple la fonction square, la valeur des paramètres ne changeait pas durant l'exécution de la commande. Elle ne pouvait changer que d'une exécution de la commande à l'autre. Considérons le code suivant vu dans la section précédente sur les commandes avec paramètres :

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f525a742-df5b-4f0f-ae0f-c6011f9f870d/Untitled.png

Lors de l'appel de la commande square, les valeurs concrètes passées à la commande sont enregistrées dans un tableau qui fait correspondre à chaque nom de paramètre la valeur correspondante passée lors de l'appel. Ces valeurs peuvent être différentes à chaque appel de la fonction square selon le bon vouloir du programmeur mais elles ne sont pas modifiées durant l'exécution de la commande square.

Il est possible d'utiliser le débogueur pas-à-pas de TigerJython pour observer ce phénomène en temps réel pendant l'exécution du programme. Pour activer le débogueur de TigerJython permettant d'inspecter les valeurs des variables, cliquer sur le petit insecte dans la barre d'outils.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/bd2e1421-6826-42f1-bea9-1a49f675f10c/Untitled.png

Animation illustration l'utilisation du débogueur intégré de TigerJython pour observer la valeur des paramètres passés à la commande dans le "tableau de correspondance" propre à l'exécution de la fonction.

Animation illustration l'utilisation du débogueur intégré de TigerJython pour observer la valeur des paramètres passés à la commande dans le "tableau de correspondance" propre à l'exécution de la fonction.

Avec les variables, la différence c'est que l'on va pouvoir en modifier la valeur durant l'exécution du programme. C'est la raison pour laquelle l'introduction des variables dans un programme peut engendrer tout un cas de problèmes si l'on ne comprend pas bien ce que l'on fait. Mais nous allons procéder de manière méthodique dans ce cours pour que puissiez vraiment bien comprendre les variables et les utiliser à bon escient.

Exemple 1

On veut dessiner une spirale avec le serpent en partant du centre de la matrice LED. Pour cela, on commence par avancer de 2 cases, puis de 3, de 4 et ainsi de suite jusqu'à 8. Concrètement, avec ce que l'on sait jusqu'à présent, cela donnerait quelque chose comme

from oxosnake import *

def spiral(size):
    forward(size)
    right(90)
    forward(size + 1)
    right(90)
    forward(size + 2)
    right(90)
    forward(size + 3)
    right(90)
    forward(size + 4)
    right(90)
    forward(size + 5)
    right(90)
    forward(size + 6)
    right(90)
    forward(size + 7)
    right(90)

makeSnake(speed = 90, pos = (3, 3))
penDown()
spiral(1)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d7b6fe58-33cf-48a9-a37a-41c22b093507/Untitled.png

Il est clair que ce programme est très répétitif et qu'il contient 8 fois de suite la séquence d'instructions

forward(...)
right(90)

L'idéal serait de pouvoir utiliser une boucle pour pouvoir répéter ces instructions un certain nombre de fois. Le problème est qu'on ne peut pas les répéter telles quelles puisqu'elles ne sont pas exactement identiques.

La solution au problème est d'introduire une variable, à savoir quelque chose comme un paramètre mais qui varie durant l'exécution du programme. Appelons cette variable size pour désigner la longueur du segment que le programme est actuellement en train de dessiner. Cette variable size doit donc augmenter de 1 à chaque fois que le serpent tourne de 90°. Pour augmenter une la variable size de 1 (on dit incrémenter la variable en langage technique), on utilise l'opérateur += de la manière suivante :