# Introduction générale à la programmation/Variables et affectation
## 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
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 exception 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
où l’expression est évaluée au préalable, nous donnant une valeur qui sera affectée à la variable en question.
Ainsi, la ligne
n'est pas admise et lance une exception.
On peut avoir à la droite de l'égalité la présence de variables et même d'opérations. Détaillons l'exemple suivant :
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
l'instruction
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 ; en effet, l'évaluation de l'expression x+6 ne peut être mené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.
| Les instructions | Tests conditionnels |