Auteur Auteur

La lecture et l'écriture

Rendre le programme (algorithme) interactif

Quand un programme informatique qui implémente l'algorithme en question s'exécute, alors il doit impérativement faire parvenir l'utilisateur (c'est à dire la personne qui exécute le programme) de son état. Autrement dit, le programme doit afficher à l'écran des messages qui indiquent ce qu'il est entrain de faire. En d'autre part, l'utilisateur doit, de temps à autre, renseigner au programme des valeurs dont il a besoin pour poursuivre son exécution. On parle alors d'interaction homme-machine, c'est à dire que le programme a la capacité d'interagir avec l'utilisateur (ou son environnement d'exécution en général) en accueillant des données à l'entrée et en retournant des résultats à la sortie. L'entrée peut être le clavier qui permet par exemple à l'utilisateur d'assigner une valeur à une variable et la sortie peut être l'écran où le programme affiche des messages que l'utilisateur peut lire (comme le résultat d'addition de deux nombres dont les valeurs ont été initialisées par ce dernier). Afin de mette en place cette interaction, en algorithmique on dispose des fonctions lire() et écrire().

La fonction lire() permet au programme d'accueillir des valeurs saisies par l'utilisateur, et la fonction écrire() permet d'afficher des messages (à l'écran par exemple) afin que l'utilisateur puisse les lire.

LECTURE ET ECRITURE

« Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur. » - Anonyme « Un clavier Azerty en vaut deux » - Anonyme

1. DE QUOI PARLE-T-ON ?

Trifouiller des variables en mémoire vive par un chouette programme, c’est vrai que c’est très marrant, et d’ailleurs on a tous bien rigolé au chapitre précédent. Cela dit, à la fin de la foire, on peut tout de même se demander à quoi ça sert.

En effet. Imaginons que nous ayons fait un programme pour calculer le carré d’un nombre, mettons 12.

Si on a fait au plus simple, on a écrit un truc du genre :


 
Variable A en Numérique
Début
A ← 12^2
Fin

D’une part, ce programme nous donne le carré de 12. C’est très gentil à lui. Mais si l’on veut le carré d’un autre nombre que 12, il faut réécrire le programme. Bof. D’autre part, le résultat est indubitablement calculé par la machine. Mais elle le garde soigneusement pour elle, et le pauvre utilisateur qui fait exécuter ce programme, lui, ne saura jamais quel est le carré de 12. Re-bof.

C’est pourquoi, heureusement, il existe des d’instructions pour permettre à la machine de dialoguer avec l’utilisateur (et Lycée de Versailles, eût ajouté l’estimé Pierre Dac, qui en précurseur méconnu de l’algorithmique, affirmait tout aussi profondément que « rien ne sert de penser, il faut réfléchir avant »).

Dans un sens, ces instructions permettent à l’utilisateur de rentrer des valeurs au clavier pour qu’elles soient utilisées par le programme. Cette opération est la lecture. Dans l’autre sens, d’autres instructions permettent au programme de communiquer des valeurs à l’utilisateur en les affichant à l’écran. Cette opération est l’écriture.

Remarque essentielle : A première vue, on peut avoir l’impression que les informaticiens étaient beurrés comme des petits lus lorsqu’ils ont baptisé ces opérations ; puisque quand l’utilisateur doit écrire au clavier, on appelle ça la lecture, et quand il doit lire sur l’écran on appelle çà l’écriture. Mais avant d’agonir d’insultes une digne corporation, il faut réfléchir un peu plus loin.

Un algorithme, c’est une suite d’instructions qui programme la machine, pas l’utilisateur ! Donc quand on dit à la machine de lire une valeur, cela implique que l’utilisateur va devoir écrire cette valeur. Et quand on demande à la machine d’écrire une valeur, c’est pour que l’utilisateur puisse la lire.

Lecture et écriture sont donc des termes qui comme toujours en programmation, doivent être compris du point de vue de la machine qui sera chargée de les exécuter. Et là, tout devient parfaitement logique. Et toc.

2. LES INSTRUCTIONS DE LECTURE ET D’ÉCRITURE

Tout bêtement, pour que l’utilisateur entre la (nouvelle) valeur de Titi, on mettra : Lire Titi

Dès que le programme rencontre une instruction Lire, l’exécution s’interrompt, attendant la frappe d’une valeur au clavier Dès lors, aussitôt que la touche Entrée (Enter) a été frappée, l’exécution reprend. Dans le sens inverse, pour écrire quelque chose à l’écran, c’est aussi simple que : Ecrire Toto

Avant de Lire une variable, il est très fortement conseillé d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce qu’il doit frapper (sinon, le pauvre utilisateur passe son temps à se demander ce que l’ordinateur attend de lui… et c’est très désagréable !) :


Ecrire "Entrez votre nom : "
Lire NomFamille

Lecture et Ecriture sont des instructions algorithmiques qui ne présentent pas de difficultés particulières, une fois qu’on a bien assimilé ce problème du sens du dialogue (homme → machine, ou machine ← homme).

ENONCE DES EXERCICES

Exercice 2.1

Quel résultat produit le programme suivant ?


Variables val, double numériques
Début
Val ← 231
Double ← Val * 2
Ecrire Val
Ecrire Double
Fin

Exercice 2.2

Ecrire un programme qui demande un nombre à l’utilisateur, puis qui calcule et affiche le carré de ce nombre.

Exercice 2.3

Ecrire un programme qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA, et qui fournit le prix total TTC correspondant. Faire en sorte que des libellés apparaissent clairement.

Exercice 2.4

Ecrire un algorithme utilisant des variables de type chaîne de caractères, et affichant quatre variantes possibles de la célèbre « belle marquise, vos beaux yeux me font mourir d’amour ». On ne se soucie pas de la ponctuation, ni des majuscules.

CORRIGÉS DES EXERCICES

Exercice 2.1

On verra apparaître à l’écran 231, puis 462 (qui vaut 231 * 2)

Exercice 2.2

Variables nb, carr en Entier
Début
Ecrire "Entrez un nombre :"
Lire nb
carr ← nb * nb
Ecrire "Son carré est : ", carr
Fin

En fait, on pourrait tout aussi bien économiser la variable carr en remplaçant les deux avant-dernières lignes par : Ecrire "Son carré est : ", nb*nb
C'est une question de style ; dans un cas, on privilégie la lisibilité de l'algorithme, dans l'autre, on
privilégie l'économie d'une variable.

Exercice 2.3

Variables nb, pht, ttva, pttc en Numérique
Début
Ecrire "Entrez le prix hors taxes :"
Lire pht
Ecrire "Entrez le nombre d’articles :"
Lire nb
Ecrire "Entrez le taux de TVA :"
Lire ttva
pttc ← nb * pht * (1 + ttva)
Ecrire "Le prix toutes taxes est : ", pttc
Fin

Là aussi, on pourrait squeezer une variable et une ligne en écrivant directement. :
Ecrire "Le prix toutes taxes est : ", nb * pht * (1 + ttva)
C'est plus rapide, plus léger en mémoire, mais un peu plus difficile à relire (et à écrire !)

Exercice 2.4

Variables t1, t2, t3, t4 en Caractère
Début
t1 ← "belle Marquise"
t2 ← "vos beaux yeux"
t3 ← "me font mourir"
t4 ← "d’amour"
Ecrire t1 & " " & t2 & " " & t3 & " " & t4
Ecrire t3 & " " & t2 & " " & t4 & " " & t1
Ecrire t2 & " " & t3 & " " & t1 & " " & t4
Ecrire t4 & " " & t1 & " " & t2 & " " & t3
Fin