Chapitre 6 : les "tours de main"

Mise en Projet

Nous allons voir que le programmeur n'arrive pas complètement démuni devant chaque nouveau programme à créer. Il y a certaines situations qui se représentent souvent ou régulièrement dans les programmes à réaliser. Le fait de formaliser ces situations et d'en connaître les manières de les résoudre aide le programmeur dans sa tâche.

Dans ce chapitre, nous allons extraire 6 situations et donner le "truc", le "tour de main" qui permet de résoudre chacune d'entre elle facilement. C'est une façon de se constituer une "boîte à outils", outils qui seront bien utiles pour arriver à nos fins.

Pour chaque "tour de main", un robot sera à programmer afin de vérifier si ce "truc et astuce" est bien maîtrisé.

Objectifs

À l'issue de ce chapitre, l'élève sera capable :

  1. de connaître et comprendre les 6 tours de main abordés dans le chapitre et d'en donner les lignes directrices;
  2. de pouvoir choisir le bon tour de main à mettre en œuvre en fonction de la situation rencontrée;
  3. de pouvoir le mettre en œuvre correctement dans le programme réalisé.

Exposé

Les tours de main sont des façons de faire qui facilitent la vie des artisans. Que l'on soit sabotier ou programmeur, le tour de main est une petite routine qu'on peut appliquer sans trop se "casser la tête" quand c'est le bon moment. Avoir sa panoplie de tours de main à disposition, sa "boîte à outils", facilite la vie.

En programmation, il y a 6 tours de main. En voici la liste

  1. le tour de main du compteur;
  2. le tour de main de la somme;
  3. le tour de main du signal;
  4. le tour de main du plus petit et du plus grand;
  5. le tour de main du premier et du dernier;
  6. le tour de main du dernier qui devient avant-dernier.

Passons-les en revue et prenons-en le meilleur.

1. le tour de main du compteur

L'idée de compter quelque chose est que ce "processus" (lire un mot, extraire une donnée,...) va se représenter plusieurs fois. Une boucle telle qu'un RÉPÈTE peut être utilisée.

Plaçons les deux éléments de cette boucle et voyons ce qu'il nous faudrait avant, pendant et après la boucle...

Le tour de main du compteur

Réalise maintenant l'exercice illustrant ce tour de main : Le robot gardien de musée

2. le tour de main de la somme

On peut imaginer ici que le "processus" est de lire des nombres au clavier, de les extraires de "quelque part",... Une fois de plus, une boucle RÉPÈTE peut être utilisée.

Plaçons les deux éléments de cette boucle et voyons ce qu'il nous faudrait avant, pendant et après la boucle...

Le tour de main de la somme

Réalise maintenant l'exercice illustrant ce tour de main : Le robot employé de banque

3. le tour de main du signal

On peut imaginer ici que le "processus" est de nouveau la répétition d'un événement quelconque, répétition dans laquelle il faut détecter le passage d'une donnée bien précise. Une fois de plus, une boucle RÉPÈTE peut être utilisée.

Question signal, rien de plus approprié qu'un booléen : ce booléen sera à FAUX tant que l'événement précis ne s'est pas présenté, il sera mis à VRAI dès que l'événement précis se présente.

Plaçons les deux éléments de cette boucle et voyons ce qu'il nous faudrait avant, pendant et après la boucle...

Le tour de main du signal

Réalise maintenant l'exercice illustrant ce tour de main : Le robot vérificateur de bacs

4. le tour de main du plus petit et du plus grand

C'est peut-être le tour de main le plus délicat. Nous sommes de nouveau dans une répétition le lecture de nombres par exemple; en fin de lecture, le programme devra pouvoir afficher le plus petit et le plus grand nombre lus.

Le principe est d'avoir deux nombres de référence, un pour retenir le plus petit et l'autre le plus grand. Le problème est de savoir avec quelle valeur initialiser ces deux nombres : en tout cas pas avec 0 car on peut travailler uniquement avec des nombres négatifs (et 0 sera faussement le plus grand) ou dans les positifs (et 0 sera faussement le plus petit).

La méthode la plus sûre est de prendre le premier nombre lu comme référence, de cette façon, il n'y aura jamais d'erreur d'initialisation. Ce tour de main va donc être couplé avec celui du compteur.

Voici la manière dont les choses pourraient se passer :

Le tour de main du plus petit et plus grand

Réalise maintenant l'exercice illustrant ce tour de main : Le robot animateur de jeu

5. le tour de main du premier et du dernier

Dans une série d'événements (lecture de mots ou de nombres,...) on doit pouvoir signaler la position du premier et du dernier événement particulier (un mot ou un nombre particulier). Bien entendu, pour connaître les positions de l'événement en question, il faudra un compteur.

Voici, dans la lecture d'une série de mot, un moyen de repérer la position du premier et du dernier mot "Bonjour" dans la liste.

Le tour de main du premier et du dernier

Le "casier" Premier sert à la fois de "Mémoire" pour retenir la position du premier Bonjour, mais il sert aussi de signal. On l'initialise avec une valeur impossible, zéro, et la disparition de ce zéro signale que le premier Bonjour a été lu et qu'il ne faut désormais plus modifier le contenu de ce "casier".

Quant à Dernier, on actualise sa valeur dès qu'un nouveau Bonjour est rencontré, c'est peut-être le dernier...

En final, si le signal Premier contient toujours zéro, c'est que le mot Bonjour ne s'est jamais présenté, si Premier et Dernier sont égaux, c'est qu'il n'y a eu qu'un seul Bonjour.

Réalise maintenant l'exercice illustrant ce tour de main : Le robot scruteur de trains

6. le tour de main du dernier qui devient avant-dernier

Ce dernier tour de main doit permettre de détecter, dans une série, deux événements précis qui se suivent exactement. Par exemple, dans une suite de mots, si le mot "Bonjour" est suivi exactement du mot "Au revoir".

Pour pouvoir réaliser cela, il faut garder en "mémoire" une copie du dernier mot lu, qui sera l'avant-dernier lorsque le mot suivant sera lu. La comparaison de ces deux mots doit permettre de savoir si l'objectif recherché est atteint.

Voyons comment il serait possible de réaliser cela.

Le tour de main du dernier qui devient avant-dernier

Quand on donne l'instruction "Mets "rien" dans le casier Dernier", c'est soit le la chaîne de caractères "rien" (qui peut convenir puisqu'elle est différente des deux mots recherchés), soit réellement la chaîne de caractère vide, vraiment rien du tout.

Réalise maintenant l'exercice illustrant ce tour de main : Le robot liseur de mots

Retour