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

Mais qu'est-ce que de l'information ?

Dans le cas qui nous occupe, une information 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.

L'ordinateur peut également copier sur un autocollant libre l'information inscrite sur l'autocollant d'une planchette et aller coller cet autocollant libre sur une autre planchette. L'information de la planchette qu'on a copié reste inchangée.

Copie du contenu d'une variable sur une autre

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.

Le problème de stockage de l'information étant résolu, il nous reste à voir comment le "robot ordinateur" peut jouer son rôle de robot à traiter de l'information. Pour cela, il devra pouvoir communiquer avec "l'extérieur" et effectuer les trois activités suivantes :

  1. recevoir de l'information de "l'extérieur";
  2. traiter cette information à "l'intérieur";
  3. communiquer le ou les résultats à "l'extérieur".

Acte 0. Que sont "l'extérieur" et "l'intérieur" d'un ordinateur ?

L'extérieur est le monde humain, le monde de l'utilisateur, analogique. L'intérieur est le monde de la machine avec ses composants électroniques, ses courants électriques,... numérique

Schéma fonctionnel de l'ordinateur

Pour passer du monde extérieur au monde intérieur, il faut "traduire" les informations analogiques en informations numériques (par exemple un "A" en code électrique "65" s'il s'agit d'un caractère ou en un nuage de points s'il s'agit d'une image), cela se fera grâce à une interface qui codera de façon automatique les données qui entrent dans l'ordinateur (le clavier codera automatiquement le "A" en la valeur "65" et le scanner le codera en un nuage de points).

Pour passer du monde intérieur au monde extérieur, il faut "traduire" les informations numériques en informations analogiques (par exemple le code électrique "65" en un A lisible par l'œil humain à l'écran ou sur la page sortant de l'imprimante), cela se fera grâce à une interface qui décodera automatiquement les données qui sortent de l'ordinateur.

Acte 1. Recevoir une information de "l'extérieur"

Nous allons nous intéresser à l'entrée d'information la plus commune : la lecture au clavier.
Lorsque l'ordinateur a besoin d'une information, la meilleure chose à faire est de la demander (cela doit être prévu par le programmeur). Ainsi, si l'ordinateur doit demander son prénom à l'utilisateur, le programmeur prévoira l'instruction : Affiche ('Bonjour, quel est ton prénom ?')

Ceci provoquera l'affichage à l'écran de : Bonjour, quel est ton prénom ?

L'utilisateur comprendra alors qu'il doit taper son prénom au clavier et le programmeur devra prévoir de le lire. C'est à ce moment qu'il est intéressant de décortiquer ce qui va se passer dans l'ordinateur. Voyons cela en détail...

La variable prénomTout d'abord, le programmeur doit prévoir une variable pour accueillir la suite de caractères que l'utilisateur tapera au clavier. Il choisira une varialbe dont la taille est en rapport et lui collera l'étiquette "PRENOM", ce qui paraît plus judicieux que "A1" par exemple.

Le programmeur devra, juste après la demande du prénom, prévoir l'instruction qui "lise" PRENOM. Il indiquera donc Lis (PRENOM) dans son programme.

Lorsque l'utilisateur aura tapé son prénom et enfoncé la touche Entrée du clavier, la suite de caractères tapée au clavier s'inscrira sur un autocollant libre de la même taille que PRENOM et ira se coller sur cette variable.

Lecture du prénom au clavier

À remarquer : avant le premier collage d'un autocollant, la variable est vide, elle ne contient aucune information exploitable.

Acte 2. Communiquer une information vers "l'extérieur"

Intéressons-nous maintenant à la sortie d'information, par exemple l'affichage à l'écran d'une phrase contenant le prénom de l'utilisateur lui demandant comment il va. Le programmeur devra prévoir l'instruction : Affiche ('Bonjour ',PRENOM,', comment vas-tu ?')

Si la variable PRENOM existe et qu'elle a été affectée au moins une fois, son contenu sera appelé, l'instruction fonctionnera comme suit :

  • 0. Les chaînes de caractères entre apostrophes seront affichées telles quelles;
  • 1. L'ordinateur va prendre un autocollant libre de la taille de la variable PRENOM;
  • 2. L'ordinateur va copier sur cet autocollant libre le contenu de la variable PRENOM;
  • 3. L'ordinateur va prendre la phrase à afficher et remplacer le nom de la variable PRENOM par l'autocollant libre qu'il vient de réaliser;
  • 4. Et enfin, l'ordinateur va acheminer cette phrase ainsi recomposée vers son écran afin de l'afficher.
En image, cela va se présenter comme suit :

Ecriture du prénom à l'écran

Acte 3. Traiter de l'information à "l'intérieur"

Nous avons vu que l'ordinateur a à sa disposition un mur sur lesquelles sont accrochées toutes les variables dont le programme aura besoin (si le programmeur a bien fait son travail :O).

L'ordinateur aura aussi à sa disposition une table de travail sur laquelle il amènera chaque ligne de programme, les unes après les autres, afin de les traiter. Voyons comment cela fonctionne au travers de deux exemples.

Exemple 1 : le calcul d'une moyenne

L'ordinateur, grâce à son programme, a lu une série de nombres dont la somme se trouve dans la variable SOMME et la quantité de nombres lus se trouve dans la variable COMPTEUR (chacun sait que la moyenne d'une série de nombres se calcule en divisant la somme des nombres lus par la quantité de nombres lus). Le résultat sera à stocker dans la variable MOYENNE.

L'instruction sera MOYENNE = SOMME / COMPTEUR, la barre oblique étant le symbole de la division.

Les opérations vont se dérouler comme suit :

  1. L'ordinateur va amener une copie de l'instruction sur sa "table de travail" et commencer son exécution;
  2. L'ordinateur va aller chercher sur un autocollant libre une copie du contenu de SOMME et venir coller cet autocollant sur la table de travail;
  3. L'ordinateur va aller chercher sur un autocollant libre une copie du contenu de COMPTEUR et venir coller cet autocollant sur la table de travail;
  4. L'ordinateur va aller chercher un autocollant libre vierge de la taille de la variable MOYENNE et venir le déposer sur la table de travail sans le coller;
  5. L'ordinateur va pouvoir alors effectuer l'opération et obtenir le résultat qui sera inscrit sur l'autocollant libre en attente;
  6. Et, pour finir, l'ordinateur va aller coller cet autocollant libre en attente à sa destination finale, à savoir sur la variable MOYENNE.
En image, cela va se présenter comme suit :

Calcul de la moyenne

Dans certains cas, le signe = peut paraître ambigu. Considérez que le contenu de la variable qui se trouve à gauche du signe = s'égalise avec l'expression qui se trouve à droite de ce signe. Une conséquence de cela sera que le type de la variable de gauche doit être compatible avec le résultat de l'expression de droite. Abordons un cas "spécial" afin de bien intégrer ce concept.

Exemple 2 : l'affectation d'une variable booléenne

Le programmeur désire affecter la variable SIGNAL du résultat d'une comparaison : savoir si le contenu de la variable NOMBRE est supérieur à 20 ou pas. Si oui, la varialbe SIGNAL devra être "mise" à VRAI, sinon à FAUX.

Pour réaliser cela, le programmeur a à sa disposition deux manières de faire; une longue et une courte. Voyons d'abord la longue...

Affectation de la variable SIGNAL

Nous voyons que le résultat de la comparaison NOMBRE > 20 va donner un résultat booléen et que, en fonction de ce résultat, le programme sera dirigé vers l'instruction du ALORS ou celle du SINON. Toutefois, la varialbe SIGNAL est de type booléen, elle pourrait donc être directement affectée par le résultat de cette comparaison. Ceci nous permet de d'envisager la version courte du programme :

 SIGNAL = NOMBRE > 20 

Les opérations vont se dérouler comme suit :

  1. L'ordinateur va amener une copie de l'instruction sur sa "table de travail" et commencer son exécution;
  2. L'ordinateur va remplacer le nom de la variable NOMBRE par son contenu;
  3. L'ordinateur va aller chercher un autocollant libre vierge de la taille de la variable SIGNAL et venir le déposer sur la table de travail sans le coller;
  4. L'ordinateur va pouvoir alors effectuer la comparaison et obtenir le résultat qui sera indiqué (sous forme d'une couleur ici) sur l'autocollant libre en attente;
  5. Et, pour finir, l'ordinateur va aller coller cet autocollant libre en attente à sa destination finale, à savoir sur la variable SIGNAL.
En image, cela va se présenter comme suit :

Affectation d'une variable booléenne

Acte 4. La symphonie finale

Vous connaissez maintenant les caractéristiques du robot-ordinateur. Un petit exemple de programme complet devrait vous permettre de réunir les "actes" développés ci-dessus et d'en faire une synthèse.

Voyons quel pourrait être le code d'un programme qui lit des nombres jusqu'à ce que l'utilisateur tape la valeur 0 et qui afficherait ensuite la moyenne des nombres lus sans tenir compte du 0 dans le calcul.

Programme de calcul de la moyenne

Et voilà...

Vous connaissez maintenant les caractéristiques de l'ordinateur, robot à traiter de l'information. Il vous reste à mettre cela en pratique dans les tests qui suivent et voler de vos propres ailes dans le prochain chapitre sur la programmation en pseudocode...
À la fin de ce chapitre, vous serez arrivé/e à destination.

Retour