Notion de variable en informatique
Introduction
I. INTRODUCTION
DÉFINITION
Les variables, en informatique, servent à désigner un espace mémoire de l’ordinateur. On peut y stocker une valeur, y accéder et la modifier.
SHELL
>>> x=2020
Chapitre 2 Notion de variable en informatique 2 / 28
I. INTRODUCTION
DÉFINITION
Les variables, en informatique, servent à désigner un espace mémoire de l’ordinateur. On peut y stocker une valeur, y accéder et la modifier.
SHELL
>>> x=2020
Introduction
Le processeur mettra la valeur 2020 dans une case mémoire repérée par son nomx.
Ï Une valeur non affectée à un nom de variable n’existe pas en mémoire.
Ï Une variable peut avoir différents types (entier, flottant, tableau ... ) auxquels il faudra être vigilant pour pouvoir les manipuler...
SHELL
>>> a=42
>>> b=’ptsi’
>>> c=[4,6,3]
>>> type(a),type(b),type(c)
(<class ’int’>, <class ’str’>, <class ’list’>)
Chapitre 2 Notion de variable en informatique 3 / 28
Introduction
Le processeur mettra la valeur 2020 dans une case mémoire repérée par son nomx.
Ï Une valeur non affectée à un nom de variable n’existe pas en mémoire.
Ï Une variable peut avoir différents types (entier, flottant, tableau ... ) auxquels il faudra être vigilant pour pouvoir les manipuler...
>>> a=42
>>> b=’ptsi’
>>> c=[4,6,3]
>>> type(a),type(b),type(c)
(<class ’int’>, <class ’str’>, <class ’list’>)
Introduction
Le processeur mettra la valeur 2020 dans une case mémoire repérée par son nomx.
Ï Une valeur non affectée à un nom de variable n’existe pas en mémoire.
Ï Une variable peut avoir différents types (entier, flottant, tableau ... ) auxquels il faudra être vigilant pour pouvoir les manipuler...
SHELL
>>> a=42
>>> b=’ptsi’
>>> c=[4,6,3]
>>> type(a),type(b),type(c)
(<class ’int’>, <class ’str’>, <class ’list’>)
Chapitre 2 Notion de variable en informatique 3 / 28
Syntaxe de l’affectation
II. SYNTAXE DE L’AFFECTATION
- L’opération de réservation d’une case mémoire est appeléeallocation. Elle s’écrit sous la forme :
etiquette = valeur
- On retiendra que l’égalité en informatique n’est pas celle des mathématiques : il s’agit ici d’un symbole d’affectation et non pas d’un résultat. En particulier, ce symbole n’est pas symétrique. L’instruction2=xn’est pas correcte.
Syntaxe de l’affectation
II. SYNTAXE DE L’AFFECTATION
- L’opération de réservation d’une case mémoire est appeléeallocation. Elle s’écrit sous la forme :
etiquette = valeur
- L’étiquette est le nom de la variable toujours placé à gauche de l’opérateur « =
», et la valeur à stocker sera placée à droite.
- On retiendra que l’égalité en informatique n’est pas celle des mathématiques : il s’agit ici d’un symbole d’affectation et non pas d’un résultat. En particulier, ce symbole n’est pas symétrique. L’instruction2=xn’est pas correcte.
Chapitre 2 Notion de variable en informatique 4 / 28
II. SYNTAXE DE L’AFFECTATION
- L’opération de réservation d’une case mémoire est appeléeallocation. Elle s’écrit sous la forme :
etiquette = valeur
- L’étiquette est le nom de la variable toujours placé à gauche de l’opérateur « =
», et la valeur à stocker sera placée à droite.
- On retiendra que l’égalité en informatique n’est pas celle des mathématiques : il s’agit ici d’un symbole d’affectation et non pas d’un résultat. En particulier, ce symbole n’est pas symétrique. L’instruction2=xn’est pas correcte.
Syntaxe de l’affectation
SHELL
>>> compteur=34
>>> valeur=56.78
>>> 2<3 True
>>> print(compteur,valeur) 34 56.78
>>> result=valeur*compteur
>>> print(result) 1930.52
- Comme on le voit sur cet exemple, on peut, et cela est largement conseillé, utiliser des noms de variables qui soient plus explicites que simplement des lettres.
Chapitre 2 Notion de variable en informatique 5 / 28
SHELL
>>> compteur=34
>>> valeur=56.78
>>> 2<3 True
>>> print(compteur,valeur) 34 56.78
>>> result=valeur*compteur
>>> print(result) 1930.52
- Comme on le voit sur cet exemple, on peut, et cela est largement conseillé, utiliser des noms de variables qui soient plus explicites que simplement des lettres.
Syntaxe de l’affectation
Attention aux mots réservés
Chapitre 2 Notion de variable en informatique 6 / 28
- Il est aussi possible d’affecter le résultat d’une expression à une variable :
SHELL
>>> a=5
>>> b=a+3*(a+1)
>>> print(b) 23
Syntaxe de l’affectation
- En Python, il ne faut pas confondre l’opérateur d’affectation = avec
l’opérateur == qui permet de tester une égalité et qui est donc une expression booléenne (vraie ou fausse) :
SHELL
>>> x==2 True
>>> x+1==4 False
Chapitre 2 Notion de variable en informatique 8 / 28
- En Python, il ne faut pas confondre l’opérateur d’affectation = avec
l’opérateur == qui permet de tester une égalité et qui est donc une expression booléenne (vraie ou fausse) :
SHELL
>>> x==2 True
>>> x+1==4 False
Réaffectation
III. RÉAFFECTATION
Rien n’empêche de modifier une variable déjà définie, mais dans ce cas l’ancienne valeur sera totalement perdue puisque «écrasée» par la nouvelle.
SHELL
>>> x=66
>>> x 66
>>> x=x*2
>>> x 132
>>> x=’abcd’ # On peut changer le type de x
>>> x
’abcd’
Chapitre 2 Notion de variable en informatique 9 / 28
III. RÉAFFECTATION
Rien n’empêche de modifier une variable déjà définie, mais dans ce cas l’ancienne valeur sera totalement perdue puisque «écrasée» par la nouvelle.
SHELL
>>> x=66
>>> x 66
>>> x=x*2
>>> x 132
>>> x=’abcd’ # On peut changer le type de x
>>> x
’abcd’
Réaffectation
Le caractère # permet les commentaires, ils ne sont pas lus par Python.
On notera que le type des variables en Python n’est pas figé contrairement à d’autres langages où il est nécessaire de définir à l’avance le type de la variable (Pascal)
On parle de typage dynamique.
Chapitre 2 Notion de variable en informatique 10 / 28
Mécanisme de la mémoire
IV. MÉCANISME DE LA MÉMOIRE
Ï Il faut aussi tenir compte du type des différentes variables. On ne manipulera pas de la même manière un simple entier, une chaîne de caractère, un tableau ...
Chaque objet possède un identifiant (une place mémoire repérée par un entier) unique qui peut être interrogé par la fonction intégréeid():
Mécanisme de la mémoire
IV. MÉCANISME DE LA MÉMOIRE
Ï Il faut aussi tenir compte du type des différentes variables. On ne manipulera pas de la même manière un simple entier, une chaîne de caractère, un tableau ...
Ï Python manipulera donc desobjets(valeurs sur lesquelles on peut travailler) :
Chaque objet possède un identifiant (une place mémoire repérée par un entier) unique qui peut être interrogé par la fonction intégréeid():
Chapitre 2 Notion de variable en informatique 11 / 28
SHELL
>>> a=23
>>> type(a)
<class ’int’>
>>> id(a)
140721732962656
>>> b=’ptsi’
>>> id(b) 1581790187312
Mécanisme de la mémoire
Cette adresse est momentanée, elle peut changer lors d’une autre compilation ou si on fait tourner le programme sur un autre ordinateur. Dans tous les cas, elle reste unique.
Pour simplifier, on dira quebpointe sur l’adresseA=i d(b)et on pourra utiliser la notation
b • −→
id(b)
’ptsi’
Chapitre 2 Notion de variable en informatique 13 / 28
Cette adresse est momentanée, elle peut changer lors d’une autre compilation ou si on fait tourner le programme sur un autre ordinateur. Dans tous les cas, elle reste unique.
Pour simplifier, on dira quebpointe sur l’adresseA=i d(b)et on pourra utiliser la notation
b • −→
id(b)
’ptsi’
Mécanisme de la mémoire
ATTENTION :Lorsqueyest unobjet connu(et non une valeur inerte),une affectationx=yne crée pas une autre case mémoirex(avec une autre adresse) dans laquelle sera mise la valeur deymais crée simplement une nouvelle variable quipointera sur la même adresse quey: c’est unalias.
SHELL
>>> y=2
>>> x=y
>>> id(x),id(y)
(140721768023744, 140721768023744)
Schématiquement, en écrivantx=y, on obtient : y •
&
x •
→
id(y)
valeur_y
Chapitre 2 Notion de variable en informatique 14 / 28
Mécanisme de la mémoire
ATTENTION :Lorsqueyest unobjet connu(et non une valeur inerte),une affectationx=yne crée pas une autre case mémoirex(avec une autre adresse) dans laquelle sera mise la valeur deymais crée simplement une nouvelle variable quipointera sur la même adresse quey: c’est unalias.
SHELL
>>> y=2
>>> x=y
>>> id(x),id(y)
(140721768023744, 140721768023744)
y •
&
x •
→
id(y)
valeur_y
Mécanisme de la mémoire
ATTENTION :Lorsqueyest unobjet connu(et non une valeur inerte),une affectationx=yne crée pas une autre case mémoirex(avec une autre adresse) dans laquelle sera mise la valeur deymais crée simplement une nouvelle variable quipointera sur la même adresse quey: c’est unalias.
SHELL
>>> y=2
>>> x=y
>>> id(x),id(y)
(140721768023744, 140721768023744)
Schématiquement, en écrivantx=y, on obtient : y •
&
x •
→
id(y)
valeur_y
Chapitre 2 Notion de variable en informatique 14 / 28
Mécanisme de la mémoire
Par contre, si on change la valeur dey, on modifie son adresse, alors que l’adresse dexreste l’ancienne. Au final, les valeurs dexety seront différentes :
SHELL
>>> y=2
>>> x=y
>>> id(x),id(y)
(140721768023744, 140721768023744)
>>> y=3
>>> x 2
>>> id(x),id(y)
(140721768023744, 140721768023776)
x • −→
id(x)
valeur_x y • −→
id(y)
valeur_y
Mécanisme de la mémoire
Par contre, si on change la valeur dey, on modifie son adresse, alors que l’adresse dexreste l’ancienne. Au final, les valeurs dexety seront différentes :
SHELL
>>> y=2
>>> x=y
>>> id(x),id(y)
(140721768023744, 140721768023744)
>>> y=3
>>> x 2
>>> id(x),id(y)
(140721768023744, 140721768023776)
Schématiquement, on obtient :
x • −→
id(x)
valeur_x y • −→
id(y)
valeur_y
Chapitre 2 Notion de variable en informatique 15 / 28
Incrémentation
V. INCRÉMENTATION
Une opération classique consiste à incrémenter une valeur :
SHELL
>>> x=34
>>> x=x+1
Incrémentation
V. INCRÉMENTATION
Une opération classique consiste à incrémenter une valeur :
SHELL
>>> x=34
>>> x=x+1
Il s’agit d’une simple réaffectation, la valeur dexchange et son adresse aussi.
C’est simplement le nom ’x’ qui reste inchangé :
Chapitre 2 Notion de variable en informatique 16 / 28
Incrémentation
SHELL
>>> x=34
>>> x,id(x)
(34, 140721768024768)
>>> x=x+1
>>> x,id(x)
(35, 140721768024800)
En python,x=x+1s’écrit aussix+=1. Il en est de même pour*=, -=, /=.
Incrémentation
SHELL
>>> x=34
>>> x,id(x)
(34, 140721768024768)
>>> x=x+1
>>> x,id(x)
(35, 140721768024800)
En python,x=x+1s’écrit aussix+=1. Il en est de même pour*=, -=, /=. On retiendra qu’une réaffectation ou une incrémentation en Python modifie l’adresse de l’objet.
Chapitre 2 Notion de variable en informatique 17 / 28
Affectation multiple, échange
VI. AFFECTATION MULTIPLE,ÉCHANGE
Le but est d’interchanger les valeurs deaetb.
- Examinons les instructions suivantes :
SHELL
>>> a=5
>>> b=3
>>> b=a
>>> a=b
- puis son résultat :
>>> a,b (5, 5)
Affectation multiple, échange
VI. AFFECTATION MULTIPLE,ÉCHANGE
Le but est d’interchanger les valeurs deaetb.
- Examinons les instructions suivantes :
SHELL
>>> a=5
>>> b=3
>>> b=a
>>> a=b
- puis son résultat :
SHELL
>>> a,b (5, 5)
Chapitre 2 Notion de variable en informatique 18 / 28
- Pour échanger les deux valeurs, il est nécessaire de faire apparaître une 3evariable intermédiaire qui va stocker provisoirement la valeur dea
SHELL
>>> a=5
>>> b=3
>>> c=a
>>> a=b
>>> b=c
>>> a,b (3, 5)
Affectation multiple, échange
- En Python, on peut utiliser uneallocation multiple:
SHELL
>>> a,b=5,3
>>> a 5
>>> b 3
qui permet ici d’affecter 5 àaet 3 àb.
Chapitre 2 Notion de variable en informatique 20 / 28
- Cela permet d’échanger simplement deux variables :
SHELL
>>> a,b=5,3
>>> a,b=b,a
>>> a 3
>>> b 5
Petites introduction sur les listes
VII. PETITES INTRODUCTION SUR LES LISTES
Sous Python, une liste est une séquence d’éléments (pas nécessairement de même type) séparés par une virgule délimités par des crochets. Une liste est dite mutablecar l’on peut modifier ses éléments.
SHELL
>>> Liste [1, 2, ’abc’]
>>> Liste[0]
1
>>> Liste[2]
’abc’
On notera que l’indexation des cases commence à 0.
Chapitre 2 Notion de variable en informatique 22 / 28
VII. PETITES INTRODUCTION SUR LES LISTES
Sous Python, une liste est une séquence d’éléments (pas nécessairement de même type) séparés par une virgule délimités par des crochets. Une liste est dite mutablecar l’on peut modifier ses éléments.
SHELL
>>> Liste [1, 2, ’abc’]
>>> Liste[0]
1
>>> Liste[2]
’abc’
On notera que l’indexation des cases commence à 0.
Petites introduction sur les listes
Examinons le comportement de la mémoire :
SHELL
>>> Liste=[1,2,’abc’]
>>> id(Liste) 2302358492544
>>> id(Liste[0]), id(Liste[1]), id(Liste[2]) (140722073683616, 140722073683648, 2302348470000)
>>> Liste[1]=5
>>> id(Liste) 2302358492544
>>> id(Liste[0]), id(Liste[1]), id(Liste[2]) (140722073683616, 140722073683744, 2302348470000)
Chapitre 2 Notion de variable en informatique 23 / 28
Petites introduction sur les listes
On retiendra quemodifier les éléments d’une liste ne change pas l’adresse de la liste globale, mais change seulement celle de la case qui a été modifiée.
SHELL
>>> a=[13,43,17]
>>> b=a
>>> a[0]=7
>>> b[2]=8
Petites introduction sur les listes
On retiendra quemodifier les éléments d’une liste ne change pas l’adresse de la liste globale, mais change seulement celle de la case qui a été modifiée.
Exemple :Quelles sont les valeurs deaetbaprès les instructions suivantes ?
SHELL
>>> a=[13,43,17]
>>> b=a
>>> a[0]=7
>>> b[2]=8
Chapitre 2 Notion de variable en informatique 24 / 28
1)
Quelles sont les valeurs dex, y, z après les instructions suivantes ?
SHELL
>>> x=23
>>> y=18
>>> z=x
>>> x=y
>>> y=z
Exercices d’applications
2)
Quelles sont les valeurs dex, y après les instructions suivantes ?
SHELL
>>> x=23
>>> y=18
>>> x=x+y
>>> y=x-y
>>> x=x-y
Chapitre 2 Notion de variable en informatique 26 / 28
3)
Quelles sont les valeurs dex, y après les instructions suivantes ?
SHELL
>>> x=19
>>> x,y=x+2,x*2
Exercices d’applications
4)
Quelles sont les valeurs dex, y après les instructions suivantes ?
SHELL
>>> x,y=2,3
>>> x,y=y,x+y
Chapitre 2 Notion de variable en informatique 28 / 28