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

Une page de Wikiversité, la communauté pédagogique libre.
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 : Ligne 15 :
{{exemple
{{exemple
| contenu =
| contenu =
<source lang="cpp">
<source lang="text">
int x;
integer x;
x = 5;
x=5;
</source>
</source>
}}
}}
Ligne 36 : Ligne 36 :


<source lang="text">
<source lang="text">
5 = x;
5=x;
</source>
</source>


n'est pas admise et lance une exception.
n'est pas admise et renvoie une erreur.


On peut avoir à la droite de l'égalité la présence de variables et même d'opérations. Détaillons l'exemple suivant :
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 : Ligne 45 :
{{exemple
{{exemple
| contenu =
| contenu =
<source lang="cpp">
<source lang="text">
int x;
integer x;
int y;
integer y;
int z;
integer z;


x = 1;
x=1;
y = 3;
y=3;
z = 5;
z=5;


x = y;
x=y;
y = z + 1;
y=z+1;
z = y - x;
z=y-x;
</source>
</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ée. Je laisse au lecteur le soin de comprendre les deux dernières lignes qui font appel aux mêmes raisonnements.
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 renvoyé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 ? ==
== Affectation par rapport à sa propre valeur ? ==
Ligne 66 : 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
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="cpp">
<source lang="text">
int x;
integer x;
</source>
</source>


l'instruction
l'instruction


<source lang="cpp">
<source lang="text">
x = x + 6;
x=x+6;
</source>
</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 exception est levée.
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 erreur est renvoyé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.
'''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.

Version du 12 juillet 2020 à 17:02

Début de la boite de navigation du chapitre
Variables et affectation
Icône de la faculté
Chapitre no 2
Leçon : Introduction générale à la programmation
Chap. préc. :Les instructions
Chap. suiv. :Tests conditionnels
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Introduction générale à la programmation : Variables et affectation
Introduction générale à la programmation/Variables et affectation
 », n'a pu être restituée correctement ci-dessus.


Déclaration d'une variable

Les variables en programmation ont la même vocation que les variables en mathématiques : symboliser une valeur pouvant changer au cours du temps, et y faire référence par un nom choisi. Dans la plupart des langages de programmation, une variable est caractérisée par un type et un nom. Avant d’être utilisée, une variable doit être déclarée. Prenons l'exemple

Début de l'exemple
Fin de l'exemple


Dans cet exemple, la première ligne correspond à la déclaration de la variable x. Elle ordonne au programme « Crée-moi une variable qui s’appelle x et qui est un nombre entier (integer en anglais) », la seconde ordonne « Donne 5 comme valeur à la variable x ». Donner une valeur à une variable qui n'a pas été déclarée provoque une exception aussi appelée erreur (on dit alors qu'une erreur est lancée, ou levée). Dans notre exemple, cela correspondrait à n'écrire que la deuxième ligne.

L'affectation

L'instruction d'affectation de valeur est ici représentée par le symbole =. Beaucoup de langages utilisent ce symbole comme instruction d'affectation, mais notons au passage que dans d'autres langages, comme le Langage Pascal par exemple, on a choisi le symbole := comme instruction d'affectation. L'égalité n’est pas symétrique : nous aurons toujours l'affectation sous la forme

variable = expression;

où l’expression est évaluée au préalable, nous donnant une valeur qui sera affectée à la variable en question.

Ainsi, la ligne

5=x;

n'est pas admise et renvoie une erreur.

On peut avoir à la droite de l'égalité la présence de variables et même d'opérations. Détaillons l'exemple suivant :

Début de l'exemple
Fin de l'exemple


Les résultats finaux seront x = 3, y = 6 et z = 3. Pourquoi ? Les trois premières lignes déclarent des variables x, y et z de type entier. Les trois lignes suivantes les initialisent respectivement à 1, 3 et 5. La septième ligne affecte à x la valeur de y, c'est-à-dire 3. 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 y, ceci fait référence à la valeur actuelle de cette variable. Peu importe si la valeur de y change par la suite, c’est sa valeur sur l'instant présent qui sera prise en compte. Notons toutefois que si y n'a pas de valeur au moment de la lecture de cette instruction, une erreur est renvoyé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 ?

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 x par

integer x;

l'instruction

x=x+6;

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 x et en l'additionnant avec 6", puis on lit ce qui est à gauche : « donne à la variable x la valeur calculée à droite ». Ainsi, si x avait au préalable la valeur 4, elle a après cette instruction comme valeur 10. Si x n'avait pas de valeur avant l'exécution de cette instruction, une erreur est renvoyé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.