« 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é
Kaepora (discussion | contributions)
mAucun résumé des modifications
Kaepora (discussion | contributions)
mAucun résumé des modifications
Ligne 5 : Ligne 5 :
|leçon=[[Introduction générale à la programmation]]
|leçon=[[Introduction générale à la programmation]]
|numero=2
|numero=2
|précédent=[[Introduction générale à la programmation/Séquentiel|Séquentiel]]
|précédent=[[Introduction générale à la programmation/Les instructions|Les instructions]]
|suivant=[[Introduction générale à la programmation/Conditions|Conditions]]
|suivant=[[Introduction générale à la programmation/Conditions|Conditions]]
}}
}}

Version du 19 mai 2007 à 09:21

Début de la boite de navigation du chapitre
Variables et Affectation
Icône de la faculté
Chapitre no {{{numéro}}}
Leçon : Introduction générale à la programmation
Chap. préc. :Les instructions
Chap. suiv. :Conditions
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

integer x;
x=5;

A notre niveau, nous allons considérer qu'un code de programme se lit toujours de manière séquentielle, du haut vers le bas, ligne par ligne. Ceci ne sera pas toujours vrai (fonction, branchement conditionnel ou inconditionnel, boucle, return, ...) mais vous verrez par la suite à quoi correspond la lecture non séquentielle d'un code. La présentation ligne par ligne des instructions d'un programme n'est pas oblige pour la plupart des langages ; il s'agit juste d'une convention pour la lisibilité du code.

Dans cet exemple, la première ligne correspond à la déclaration de la variable x. Elle demande 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 renvoie une erreur (on dit alors qu'une erreur est renvoyée, ou levée, ou encore retournée). Dans notre exemple, cette faute correspondrai à n'écrire que la deuxième ligne.

L'affectation

L'instruction d'affectation de valeur est ici representé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 Pascal par exemple, ont choisi le symbole := comme instruction d'affectation. L'égalité n'est pas symétrique : nous aurons toujours l'affectation sous le forme

variable = expression;

ou 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 a la droite de l'égalité la présence de variables et même d'opération. Détaillons l'exemple suivant :

integer x;
integer y;
integer z;

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

x=y;
y=z+1;
z=y-x;

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 a 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 a l'heure, on lit d'abord se 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 se qui est a gauche : "donne a 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.