Skip to content

Chp B. Notion de variable

1. Définition

Définition du mot ordinateur (Petit Larousse)

« Machine automatique de traitement de l'information, obéissant à des programmes formés par des suites d'opérations arithmétiques et logiques.»

Qui dit "traitement de l'information", dit donc données à manipuler. Un programme "passe" donc son temps à traiter des données. Pour pouvoir traiter ces données, l'ordinateur doit les ranger dans sa mémoire (RAM - Random Access Memory). La RAM se compose de cases dans lesquelles nous allons ranger ces données (une donnée dans une case). Chaque case a une adresse (ce qui permet au processeur de savoir où sont rangées les données).

Qu'est-ce qu'une variable ?

Et bien, c'est une information (une donnée) temporaire que l'on stocke dans une case de la RAM. On dit qu'elle est "variable", car c'est une valeur qui peut changer pendant le déroulement du programme.

Une variable

Une variable est constituée de 2 choses :

  • une valeur présente en mémoire (par exemple le nombre entier 5)

  • un nom (qui personnifie son adresse)

On dira donc qu'une variable est l'association d'un nom et d'une valeur. Par exemple en python:

Assigner une valeur à une variable

On met le nom de la variable suivi du symbole "=" puis de la valeur souhaitée:

i = 12
j = 3.14

Cela crée deux variables dont les noms sont i et j, et les valeurs respectives valent 12 et 3,14 (noter le point décimal pour la virgule). Ces deux quantités sont de type différent. L'une est un entier, l'autre un flottant (nombre à virgule).

Un nom peut donc être associé à plusieurs types d'entités (pour l'instant nous n'en avons vu que deux, mais nous en verrons d'autres plus loin) : les nombres entiers ("integer" en anglais, abrégé en "int") et les nombres à virgule ("float" en anglais).

Obtenir le type d'une variable

Il est possible de connaitre le type d'une variable à l'aide de la fonction type(...). Directement dans le shell :

>>> i = 12
>>> print(type(i))
<class 'int'>

>>> j = 3.14
>>> print(type(j))
<class 'float'>

Obtenir l'adresse mémoire d'une variable

Il est possible aussi si l'on veut d'obtenir l'adresse mémoire d'une variable déjà créée. Ainsi on peut taper dans le shell :

>>> i = 12
>>> print(id(i))
2810276
le nombre affiché est propre à votre machine et au moment où est créée la variable i.

2. Manipulation de variables

a) Affecter une valeur

On a vu que pour donner une valeur à une variable il suffisait d'utiliser le symbole =:

Affectation

# pour affecter la valeur 3.14 à la variable pi on tape :
pi = 3.14

b) Afficher le contenu, notion de f-string

On a déjà vu que la fonction print(...) permettait d'afficher du text (on entourait le texte à afficher par des guillemets).

Pour afficher le contenu d'une variable il suffit d'écrire le nom de cette variable dans la fonction print(...).

Afficher le contenu d'une variable

Par exemple si l'on saisit dans la fenêtre de script les instructions suivantes:
abricot = 2
print("abricot")
print(abricot)
print("abricot :",abricot)
On obtient après exécution l'affichage :
abricot
2
abricot : 2

On peut faire mieux en utilisant ce que l'on appelle des f-string (chaines de caractère formatées). Notation (avec un f devant les guillemets):

f"Je suis une f-string"

Cela permet de lier de l'affichage de texte et de contenu de variable en utilisant les accolades. Voyons sur un exemple :

Exemples avec des f-string

Considérons le code suivant :

r_terre = 6400
ch = f"Le rayon de la Terre vaut approximativement {r_terre} km"
print(ch)
print(f"Son diamètre est donc environ {2*r_terre} km")

L'exécution affichera :

Le rayon de la Terre vaut approximativement 6400 km
Son diamètre est donc environ 12800 km

c) Modifier le contenu, cas de l'incrémentation

Il arrive souvent que l'on veuille modifier le contenu d'une variable. Il suffit pour cela de lui réaffecter une nouvelle valeur. Voyons plusieurs situations :

Modification d'une variable, incrémentation

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# première affectation :
pi = 3.14
print(pi) # affiche 3.14
# on réaffecte une nouvelle valeur
pi = 3.14159
print(pi) # affiche 3.14159
# on crée une deuxième variable
deux_pi = 2*pi
print(deux_pi) # affiche 6.28318

# Cas particulier de l'incrémentation :
a = 11
print(a)
a = a + 1
print(a) # affiche 12
# Incrémentation : raccourci
a += 1
print(a) # affiche 13

Le cas de l'incrémentation peut sembler surprenant au premier abord du point de vue mathématique ! Détaillons ce qui se passe dans ce programme :

Nous créons une variable : le nom a est associé à l'entier 11. La suite est un peu plus complexe, mais très importante à comprendre. Il va falloir lire la ligne a = a + 1 de droite à gauche, décortiquons cette ligne :

  • a + 1 : nous prenons la valeur actuelle associée au nom a (c'est-à-dire 11) et nous ajoutons 1 à 11, à droite de l'égalité nous avons donc maintenant la valeur 12
  • nous associons la valeur qui vient d'être calculée au nom a.

Donc la valeur de a est bien 12.

attention

Dans une égalité, commencer toujours par évaluer l'expression se trouvant à droite du signe égal.

L'opération a = a + 1 se nomme une incrémentation. Cette opération est tellement courante qu'en python on a ajouté une autre façon de l'écrire (peut-être un peu moins déroutante ?...) :

incrémentation

En python a += 1 signifie a = a + 1

d) Les variables ne sont pas liées

Contrairement à ce qu'il se passe par exemple sur un tableur avec les cellules, les variables ne sont pas liées entre elles. Voyons un exemple pour expliquer :

Les variables ne sont pas liées

pi = 3.14
deux_pi = 2*pi
print(deux_pi) # affiche 6.28
# on modifie la variable pi :
pi = 3.14159
print(deux_pi) # affiche toujours 6.28
# la variable deux_pi n'a pas été modifiée

Dans l'exemple ci-dessus, la variable pin'est pas liée à la variable deux_pi. Ainsi, une fois deux_pi créée, la modification de pi ne change pas la valeur de deux_pi.

Attention toutefois, car cela n'est vrai que pour des type simples comme les nombres ou les chaines de caractères. On verra plus tard que pour des types complexes (comme les listes par exemple) cela n'est plus vrai.

On verra aussi comment faire si l'on souhaite que deux_pi soit liée à pien utilisant la notion de fonction.

e) Permuter deux variables

Permuter le contenu de deux variables est quelque chose que l'on fait assez souvent et ce n'est peut être pas si évident à faire... en tout cas c'est intéressant d'y réfléchir ! On verra dans le TDB comment s'y prendre !

Solution

Il y a au moins deux solutions classiques :

# solution 1 : "universelle" avec une variable auxiliaire
a = 1
b = 2
print(a,b) # affiche 1 2
aux = a
a = b
b = aux
print(a,b) # affiche 2 1

# solution 2 : typique python avec double affectation
a = 1
b = 2
print(a,b) # affiche 1 2
a,b = b,a
print(a,b) # affiche 2 1

3. Quelques types que l'on utilisera

Voici sans être exhaustif quelques types à connaitre qui nous seront utiles :

Quelques types à connaitre

  • int abréviation de integer. Ce sont les entiers relatifs (négatifs et positifs).
  • float pour nombre à virgule flottante. On verra le détail de la représentation de ces nombres en fin d'année, mais pour faire simple on considérera pour l'instant que se sont les nombres réels.
  • strabréviation de string, soit en français chaîne de caractères. Les variables de ce type contiendront des mots ou des phrases.
  • boolabréviation de boolean, soit en français booléen. C'est le plus simple, puisqu'une variable de ce type ne peut contenir que deux valeurs : True et False (noter la majuscule...). Ce type est très pratique pour exécuter des tests (on verra cela très bientôt).
  • listet tuple: ces sont des types un peu plus élaborés utilisés pour stocker des listes (ou encore des tableaux) de valeurs. On verra cela un peu plus tard.
  • dict pour dictionnaire : encore un type élaboré que l'on découvrira bientôt...

4. Ressources supplémentaires

Ressources supplémentaires

Pour avoir plus de détails sur les variables, on pourra consulter avantageusement les pages consacrées à celles-ci sur le site W3 school.

5. TD B : notion de variables

On va travailler dans ces TD :

  • première rencontre avec les notebook
  • notion de type pour une variable
  • variables type numérique
  • variables type string
  • permuter le contenu de deux variables
  • les listes python

Les liens :