Overblog
Suivre ce blog Administration + Créer mon blog
6 août 2009 4 06 /08 /août /2009 19:01

Fourrageons un peu dans les fiches et les boîtes (sans rien déclasser), il y en a pour plusieurs articles.


Première fiche : aller du téléphone au congélateur. Il faut 42 pas de Norbert pour ça (un pas consistant ici à avancer un pied puis l'autre).

La première version de la fiche obéissait au principe des gens normaux :  on n'a pas le temps  – pas le temps d'attendre, pas le temps d'écouter, pas le temps de chercher, pas le temps de réfléchir. La fiche ressemblait donc à  pied gauche, pied droit, pied gauche, pied droit, etc. . Très long et pas terrible mais  on n'a pas le temps  de mieux faire.

Un soir que Maman rentrait épuisée (pléonasme), son mari était exceptionnellement là lui aussi. Policier, il rentre quand il peut. Époux attentionné, il s'est fait expliquer la situation, a réfléchi un moment :  Et si tu utilisais ton compteur de rangs de tricot, tu sais, l'igno… l'espèce de grenouille avec un bouton ? Non, attends un peu… . Pas démonstratif mais prévenant, il a fouillé cinq minutes dans son barda, est revenu tout sourire :  Tiens, prends plutôt ça, c'est un compteur de manifestants. Ça monte à 9999 et c'est du costaud – qualité Préfecture .

La fin de la soirée ne nous regarde pas mais, le lendemain, le compteur conjugal était en bonne place sur le bureau de Maman et la fiche était devenue :  42 fois  pied gauche, pied droit  .

Décodage. La première version (très longue) de la fiche était une suite d'instructions où le motif  un pas  se répétait 42 fois, à lire de haut en bas. La deuxième version, presque 42 fois plus courte, était en revanche d'emploi un peu plus complexe : mettre le compteur à 1, faire un pas (=lire la fiche), augmenter le compteur de 1 (l'incrémenter de 1) et recommencer jusqu'à ce qu'il vaille 42.


Le jour où elle a dû confier le système à un stagiaire pas futé (le genre qui a oublié le début de sa phrase quand il arrive à la fin) Maman a compris qu'il fallait détailler :

  1. tu mets le compteur à 1 ;
  2. tu lis le reste de la fiche ;
  3. quand tu as fini, tu regardes le compteur : s'il affiche 42 tu t'arrêtes, sinon tu l'augmentes de 1 (oui, le bouton, là) et tu repars de la deuxième étape…
 … et tu ne me fais plus ch…  ajouta-t-elle in petto.

Décodage. Le croiriez-vous ? Ce système s'appelle une boucle logicielle.  Mettre le compteur à 1 , c'est initialiser la boucle (l'amorcer, la préparer).  Lire le reste de la fiche  c'est exécuter (lire) le corps de la boucle (reste de la fiche).  Regarder si le compteur affiche 42 , c'est le test de fin de boucle ou test d'arrêt, dont le résultat est vrai ou faux (ben oui…). Si le résultat est vrai (succès du test) on sort de la boucle (on a fini et passe à autre chose) sinon le résultat du test est un échec. Dans ce cas on  augmente le compteur (oui, le bouton, là)  puis  on recommence  : on exécute la ou les instructions de fin d'itération (ici, une seule instruction : le bouton) puis on entame l'itération suivante. Quant au compteur (de manifestants, reconverti en compteur de pas), hé bien c'est un … compteur ou, pour être tout à fait général, une variable de contrôle.


Un jour le stagiaire a cru astucieux de déplacer l'instruction  mettre le compteur à 1  dans le corps de boucle. Le lendemain matin, hâve et hagard, l'index crispé sur le bouton, il a fallu l'assommer avant de l'envoyer aux urgences – à l'autre bout du fil Norbert, renonçant à traverser le congélateur, s'était bien plus raisonnablement endormi le ventre creux.

Décodage. Plantage suivi d'un reboot : la boucle infinie suite à bidouille hasardeuse avait encore frappé. Les boucles c'est très commode mais ça demande d'avoir les idées claires quand on les rédige.


La Préfecture a du bon matériel, à preuve le fameux compteur. Si on tourne une certaine molette il fonctionne en sens inverse : après l'avoir réglé sur une valeur, chaque pression sur le bouton le fait diminuer de 1. Un compte à rebours, ni plus ni moins.

Et alors… et alors… (tous en chœur) Jea-ni-ne est ar-ri-véé-héhé Sans s'presser-héhé… Elle a fait un peu mumuse avec le compteur, songeuse. Elle a remarqué que, dans ce cas, il faisait  dinnng  quand il arrivait à zéro. Et elle a dit :  Tu sais quoi ? Si tu mettais ton compteur, au début, dans ce mode  à rebours  et que tu le règles à 41, tu n'aurais plus besoin de le regarder pour savoir si tu as fini : 42 coups d'œil économisés . Maman a un peu réfléchi (c'est déroutant, tout de même, non ? Sacrée Jeanine) puis elle s'est discrètement renseignée sur le prix d'un très bon champagne.

Décodage. D'abord : une boucle qui fait -1 (qui décrémente le compteur) marche aussi bien qu'une boucle qui fait +1 (qui incrémente ce même compteur). Ensuite : compter de zéro à n-1, ou de n-1 à zéro, produit autant d'étapes, d'itérations (n itérations) que compter de 1 à n et permet un test d'arrêt plus simple, donc plus rapide. Or ce test est exécuté à la fin de chaque étape, donc n fois, donc peut mériter d'être accéléré quand n est grand.


Je ne me rappelle plus très bien la manière dont on m'a enseigné les boucles, je sais seulement que c'était beaucoup plus rébarbatif.

Archives