« Introduction générale à la programmation/Variables et affectation » : différence entre les versions

Contenu supprimé Contenu ajouté
Ppignol (discussion | contributions)
m →‎L'affectation : correction d'inexactitudes ...
Ppignol (discussion | contributions)
Annulation des modifications 813017 de Ppignol (discussion)
Balise : Annulation
Ligne 15 :
{{exemple
| contenu =
<source lang="cpptext">
intinteger x;
x = 5;
</source>
}}
Ligne 36 :
 
<source lang="text">
5 = x;
</source>
 
n'est pas admise et lancerenvoie une exceptionerreur.
 
On peut avoir à la droite de l'égalité la présence de variables et même d'opérations. Détaillons l'exemple suivant :
Ligne 45 :
{{exemple
| contenu =
<source lang="cpptext">
intinteger x;
intinteger y;
intinteger z;
 
x = 1;
y = 3;
z = 5;
 
x = y;
y = z + 1;
z = y - x;
</source>
}}
 
Les résultats finaux seront <code>x = 3</code>, <code>y = 6</code> et <code>z = 3</code>. Pourquoi ? Les trois premières lignes déclarent des variables <code>x</code>, <code>y</code> et <code>z</code> de type entier. Les trois lignes suivantes les initialisent respectivement à <code>1</code>, <code>3</code> et <code>5</code>. La septième ligne affecte à <code>x</code> la valeur de <code>y</code>, c'est-à-dire <code>3</code>. En effet, il faut lire l'instruction d'affectation ainsi : le nom à gauche de l'égalité est le nom de la variable qui va recevoir une nouvelle valeur, et tout ce qui est à droite de l'égalité constitue le calcul de cette nouvelle valeur. Ainsi, si l’on y rencontre le nom d'une variable, tel que <code>y</code>, ceci fait référence à la '''valeur actuelle''' de cette variable. Peu importe si la valeur de <code>y</code> change par la suite, c’est sa valeur sur l'instant présent qui sera prise en compte. Notons toutefois que si <code>y</code> n'a pas de valeur au moment de la lecture de cette instruction, une erreur est levéerenvoyée. Je laisse au lecteur le soin de comprendre les deux dernières lignes qui font appel aux mêmes raisonnements.
 
== Affectation par rapport à sa propre valeur ? ==
Ligne 66 :
Il n'y a pas grand chose de plus à dire sur les variables ; vous les étudierez plus en détails lors de l'apprentissage d’un langage de programmation. Ainsi, vous apprendrez les différents types, ceux qui sont scalaires et ceux qui ne le sont pas (c'est comme en mathématiques), etc. Je terminerai le cours sur cette remarque : le comportement de l'affectation en informatique diffère des mathématiques. Ainsi, après avoir déclaré une variable entière <code>x</code> par
 
<source lang="cpptext">
intinteger x;
</source>
 
l'instruction
 
<source lang="cpptext">
x = x + 6;
</source>
 
est possible en informatique. Elle est même courante, alors qu’il s'agit d'une aberration en mathématiques (sauf si l’on se trouve dans un groupe cyclique d'ordre 6…). En informatique, cette instruction d'affectation se comprend comme suit. Comme tout à l’heure, on lit d’abord ce qui se trouve à droite de l'égalité : "Calcule une valeur en prenant la valeur de <code>x</code> et en l'additionnant avec 6", puis on lit ce qui est à gauche : « donne à la variable <code>x</code> la valeur calculée à droite ». Ainsi, si <code>x</code> avait au préalable la valeur <code>4</code>, elle a après cette instruction comme valeur <code>10</code>. Si <code>x</code> n'avait pas de valeur avant l'exécution de cette instruction, une exceptionerreur est levéerenvoyée.
 
'''Remarque globale :''' Nous ne verrons pas dans ce cours la notion de portée d'une variable, c'est-à-dire l’existence ou l'inexistence d'une variable dans certaines parties du code. Cette notion sera présentée dans les cours de langages de programmation.