Chapitre 7 : la gestion des variables


Mise en Projet

L'ordinateur étant un robot à traiter de l'information, il est important de préciser en quoi consiste cette information, comment elle est stockée dans l'ordinateur et comment elle est échangée avec son utilisateur.

Objectifs

L'objectif de ce chapitre est de se faire des images mentales sur la façon dont fonctionnent les variables et, ainsi, pouvoir mettre au point des programmes informatiques qui les gèrent correctement.

Exposé

L'ordinateur est un robot comme les autres, sa spécificité est d'être un robot à traiter de l'information ou un robot à gérer des données.

Mais qu'est-ce que de l'information ou des données ?

Dans le cas qui nous occupe, ce sera soit :

  • - un caractère seul;
  • - une suite de caractères;
  • - un nombre entier;
  • - un nombre réel;
  • - un concept pouvant prendre les deux formes VRAI ou FAUX.

Ce qui nous fait 5 types d'informations.

Nous l'avons déjà dit, le robot-ordinateur est amnésique, c'est-à-dire qu'il ne peut rien retenir par lui même. Il devra donc disposer d'un système permettant de stocker ces informations : les mémoires qui seront divisées en cases, ces "cases-mémoires" portent le nom de variables ainsi nommées car leurs contenus évoluent, varient au fur et à mesure de l'avancement du programme.

Dans l'ordinateur et ses mémoires, l'information est véhiculée sous forme de courants électriques et est stockée dans des bascules à transistors... Cela ne nous avance pas beaucoup dans notre souci de comprendre comment fonctionne l'ordinateur, ni dans le fait de pouvoir commander son fonctionnement...!!!

Les ardoises présentées dans le chapitre précédent nous ont donné une première image mentale de la manière dont pourrait être stockée l'information. Mais nous allons améliorer cette analogie afin de nous faire une représentation mentale des variables qui puisse fonctionner dans de nombreuses situations et ainsi nous aider à conceptualiser de façon plus précise le fonctionnement interne de l'ordinateur.

Nous allons, dans notre esprit, représenter ces variables par 5 types de planchettes, pouvant chacune accueillir une étiquette permettant de l'identifier et aussi accueillir, en fonction de sa largeur, un autocollant de la taille correspondant au type d'information à y stocker. Un trou dans la planchette permettra de l'accrocher au "mur de l'endroit où fonctionne l'ordinateur". En voici une représentation :

Les différents types de variables Les différents types de variables

L'ordinateur possède un nombre très important d'autocollants libres de toutes tailles. Sur ces autocollants, l'ordinateur peut inscrire différentes informations correspondant à leurs tailles et ensuite les coller sur les planchettes adéquates repérées grâce à leurs étiquettes.

Quand un autocollant est collé sur une planchette, l'information qui s'y trouvait avant n'est plus accessible, elle est perdue.

Nous appellerons désormais ces planchettes variables, nous pourrons en déclarer autant que nécessaire, de tailles adéquates en fonction des informations que nous voudrons y inscrire et les identifier grâce à un nom inscrit sur l'étiquette de chacune d'elles.

Transfert d'une variable à une autre.

L'ordinateur peut copier sur un autocollant libre l'information inscrite dans une variable et aller coller cet autocollant libre dans une autre variable. L'information de la variable dont on a pris une copie (la variable source) reste inchangée. L'ancienne information de la variable de destination dans laquelle on copie (la variable cible) est perdue définitivement.

Copie du contenu d'une variable sur une autre

Il faut toutefois être prudent quand on copie un contenu dans (quand on affecte) une variable. Le type d'information qu'on y copie doit être compatible avec le type de cette variable cible.

Si on change de type, ce qu'on peut faire : mettre un "plus petit" dans un "plus grand"...

  • Affecter une variable de type chaîne de caractères avec un caractère;
  • Affecter une variable de type réel avec un entier.

Si on change de type, ce qu'on ne peut pas faire : mettre un "plus grand" dans un "plus petit"...

  • - Affecter une variable de type caractère avec une chaîne de caractères;
  • - Affecter une variable de type entier avec un réel;
  • - Passer de nombres à caractères ou inversement sans un traitement approprié;
  • - Les booléens doivent rester entre eux, des transferts venant d'autres types ou vers d'autres types ne sont pas possibles.

Sens du signe =

Dans l'exemple ci-dessus, nous avons donné l'instruction Copie le contenu de MONTANT sur SOMME qui demande d'affecter SOMME avec le contenu de MONTANT. En langage de codage, cette instruction s'écrira SOMME = MONTANT, ce qui peut créer une ambiguïté. Dans ce cas, le = ne représente pas une comparaison, il s'agit d'une instruction d'affectation demandant d'égaliser le contenu de SOMME (à gauche du signe =) à celui de MONTANT (à droite du signe =).

Afin d'éviter toute ambiguïté dans le chapitre sur le pseudo-code, le signe d'affectation utilisé sera Le signe d'affectation

On pourra donc écrire SOMME Le signe d'affectation 25 + 12, ceci fera que la valeur 37 sera affectée à SOMME.

Le cas particulier d'une affectation booléenne "express"

Admettons que nous désirions affecter la variable SIGNAL en fonction du résultat d'une comparaison : si le contenu de la variable NOMBRE est supérieur à 20, la variable SIGNAL doit être affectée à VRAI, si ce n'est pas le cas, SIGNAL doit être affecté à FAUX.

Spontanément, nous réaliserions le petit bout de code suivant...

Affectation de la variable SIGNAL

Nous savons que dans un SI, un JUSQU'À CE QUE ou un TANT QUE, le résultat de la vérification donne toujours un résultat VRAI ou FAUX. Donc NOMBRE > 20 va donner un résultat booléen, qui est justement le type de la variable SIGNAL. La variable SIGNAL pourrait donc être directement affectée par le résultat de cette comparaison. Ceci nous permet de remplacer le morceau de code ci-dessus par sa "version courte" :

 SIGNAL = NOMBRE > 20 

En résumé

  1. Toute variable doit être identifiée par un nom unique;
  2. Une variable ne peut être lue qu'après avoir été affectée au moins une fois;
  3. Le fait d'affecter une variable détruit définitivement son ancien contenu;
  4. Le fait de lire une variable ne modifie pas son contenu;
  5. Lors d'une affectation, le type du contenu affecté doit être compatible avec le type de la variable de destination.

Voyons si tu maîtrises bien tous ces concepts en réalisant quelques exercices sur les variables.

Bon travail.

Retour