Dessiner avec des variables

Denis Dréano
PROG2-13

Dessiner avec des variables

Objectifs cantonaux : O1.6.

Cours complet sur la plateforme Runestone de Cédric Donner : Dessiner avec des variables.

Depuis le début de l’année, vous utilisez déjà des valeurs nommées comme cote = 100, sans qu’on leur ait donné de nom précis. Il est temps de nommer ce concept : il s’agit d’une variable.

▷ Définition — Variable

Une variable est un nom donné à un emplacement de la mémoire vive (RAM) de l’ordinateur, qui peut contenir une seule valeur à la fois. On peut la comparer à une mémoire de calculatrice, à la différence qu’en programmation, on choisit soi-même le nom de chaque mémoire, et qu’on peut en créer autant qu’on veut.

◈ Syntaxe — Affectation

nom = valeur

Cette instruction demande à Python de stocker valeur dans un emplacement mémoire nommé nom. Les mêmes règles de nommage que pour les fonctions et les paramètres s’appliquent (lettres, chiffres, underscore, pas d’accent ni d’espace, nom descriptif).

Modifier la valeur d’une variable

◈ Syntaxe — Incrémenter une variable

cote += 10   # équivalent à : cote = cote + 10
→ Exemple — dessiner une spirale
from gturtle import *

cote = 10
for _ in range(50):
    forward(cote)
    left(90)
    cote += 10

À chaque tour de boucle, cote augmente de 10 avant le passage suivant — la tortue avance donc un peu plus loin à chaque segment, ce qui dessine une spirale.

! Une variable ne garde qu’une valeur à la fois

cote = 100
aire = cote ** 2
cote = 200
print("Aire :", aire)

aire affiche toujours 10000, même après que cote a changé de valeur. Contrairement aux mathématiques, il n’existe pas de « lien » permanent entre deux variables en programmation : aire a été calculée une fois, à un instant donné, et sa valeur ne se met pas à jour automatiquement si cote change ensuite.

Combiner variable et fonction à paramètre

→ Exemple — une spirale réglable
from gturtle import *

def spirale(cote_initial, nombre_segments, increment):
    cote = cote_initial
    for _ in range(nombre_segments):
        forward(cote)
        left(90)
        cote += increment

spirale(6, 36, 2)

Ici, cote est une variable locale à la fonction spirale : elle est créée à chaque appel et détruite à la fin de l’exécution, exactement comme les paramètres vus en S8.