Algorithmique impérative/Assignation
L'assignation est une instruction qui consiste à inscrire dans une variable une valeur calculée depuis une expression. Attention : la nouvelle valeur affectée « écrase » la précédente.
C'est donc la deuxième façon que nous apprenons de donner une valeur à une variable. La première était d'utiliser l'instruction Lire
qui permet de demander la valeur à l'utilisateur. On peut dire que l'instruction Lire
est une forme particulière d'affectation.
Pour effectuer une assignation, on utilise l'instruction Assigner
. On précise entre parenthèses la variable affectée ainsi que l'expression de la valeur de l'affectation.
On pourra également noter l'affectation ←
ou :=
. Ce symbole peut être énoncé « prend pour valeur ». Attention toutefois à ne pas la noter =
bien que certains langages utilisent cette notation. Ce serait un dangereux raccourci de pensée avec les mathématiques (voir la mise en garde ci-dessous).
Un exemple : voici notre lexique
Lexique n : entier
On assigne n :
Assigner(n, 12)
À partir de maintenant la variable n vaut 12. Ainsi, l'instruction
Afficher(n)
provoquera l'affichage suivant :
12
Dans la suite du cours, nous utiliserons la notation ←
, moins lourde.
Mise en garde sur le parallèle avec les mathématiques
modifierAu moment de l'affectation, la valeur affecté est évaluée, c'est-à-dire calculée, les constantes et les variables sont donc remplacées par leurs valeurs respectives.
Exemple : dans le lexique nous avons :
Lexique a,b,c : entiers
a←1 b←2 c←a+b (* équivaut à c←2+1 et à c←3 *) afficher(c) (* affiche 3 *) b←5 afficher(c) (* affiche toujours 3 et non 6 *)
c conserve sa valeur tant qu'elle n'a pas été affectée, le changement de la valeur de b n'affecte pas la valeur de c.
Certains seraient tentés de noter l'affectation avec l'opérateur "=", elle est d'ailleurs notée ainsi dans le langage de programmation C. C'est pourtant une erreur vis-à-vis du sens mathématique de ce symbole. En effet, cette expression :
x = x+1
est tout à fait correcte en informatique si on considère l'affectation notée ainsi ; cela revient à incrémenter x. Mais du point de vue mathématique c'est une aberration. Voyons cela en appliquant une résolution d'équation du premier degré :
par soustraction de x dans les deux membres :
donc
En revanche, l'affectation notée := est valide en mathématique comme en informatique. En prenant cette convention, tout le monde est content...