Synthèse sur les "tours de main"

Revoyons et synthétisons les 6 situations de codage abordées dans ce chapitre afin de bien intégrer les « trucs et astuces », les « tours de main » qui permettent de résoudre chacune d'entre elle facilement. C'est une façon de se constituer une « boîte à outils » face aux situations qui se représentent fréquemment en codage.

Pour rappel, nous avons abordé successivement les tours de main suivant :

  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.

1. le tour de main du compteur

Pour compter des « événements » (lecture de mots, de nombres,...), on utilisera le tour de main du compteur qui se présente comme ceci.

Remarque : tous les tours de main utilisent des boucles de répétition, l'attention est attirée sur ce qui doit se passer avant, pendant et après chaque boucle.

Le tour de main du compteur

2. le tour de main de la somme

Pour obtenir la somme d'une série de nombres, le tour de main à utiliser est le suivant.

Le tour de main de la somme

3. le tour de main du signal

On peut être amené.e a repérer un événement particulier dans une suite d'événements. Le meilleur moyen est d'initialiser une variable booléenne à false du fait que l'événement ne s'est, forcément, pas encore présenté.

Dans la boucle de répétition, on dispose une conditionnelle en mesure de repérer l'événement qui nous intresse. S'il se présente, la variable booléenne est mise définitivement à true, gardant la trace du fait que l'événement particulier s'est produit au moins une fois.

Le tour de main du signal

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

Lorsqu'il faut repérer le plus petit et le plus grand nombre d'une série de nombres, deux variables seront nécessaires : l'une pour retenir le plus petit nombre, l'autre pour retenir le plus grand.

Chaque fois qu'un nouveau nombre se présentera, on le comparera au plus petit repéré jusque là et, s'il est encore plus petit que lui, on remplacera l'ancien plus petit nombre par le nouveau nombre lu. On fera de même pour le plus grand.

Le gros problème est de savoir à quelles valeurs initialiser les deux variables du fait qu'on ne connaît pas à l'avance la « fourchette » des nombres que l'on va lire. Le meilleur moyen, valable dans tous les cas, sera d'initialiser les deux variables avec le premier nombre lu.

Le tour de main du plus petit et plus grand

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 spécial). Bien entendu, pour connaître les positions de l'événement en question, il faudra un compteur.

La variable premier sert à la fois de « mémoire » pour retenir la position du premier événement spécial, mais elle sert aussi de signal. On l'initialise avec une valeur impossible, zéro par exemple, et la disparition de ce zéro signale que le premier événement spécial a été repéré et qu'il ne faut désormais plus modifier le contenu de cette variable.

En revanche, en ce qui concernet la variable dernier, on actualise sa valeur à chaque événement spécial qu'on rencontre car c'est peut-être le dernier.

En fin de programme, il faudra traiter tous les cas possibles.

Le tour de main du premier et du dernier

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 deviendra 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.

Une petite révision des opérateurs booléens n'est pas superflue : la boucle doit s'arrêter lorsque l'avant-dernier mot lu sera 'Bonjour' et que le dernier mot lu sera 'Au revoir'. Or, en JavaScript, on utilise un « while » dans lequel on doit signaler dans quelles conditions la boucle continue. La condition du « while » sera donc l'inverse de la condition énoncée ci-avant... Bonne recherche.

Le tour de main du dernier qui devient avant-dernier

Quand on donne l'instruction « mets le vide dans dernier », c'est soit un mot qui n'a rien à voir avec les mots lus : "d:=)" par exemple, qui peut convenir puisqu'il est différent des deux mots recherchés, soit réellement la chaîne de caractère vide '' ou "" (2 apostrophes ou 2 guillemets qui se suivent) qui a l'avantage de fonctionner dans absolument tous les cas.

Et voilà, c'est terminé...

Nous voilà au bout d'un long périple. Il peut être intéressant que tu fasses un « retour en arrière » pour constituer le bilan de tout ce que tu as appris dans ce module, que ce soient des connaissances ou, surtout, des « savoir-faire » (le codage et l'algorithmique).

Il te reste à mettre en pratique tout cela et aussi à étoffer tes connaissances du codage et du langage.

C'est ce que tu vas pouvoir faire dans le chapitre 8 qui suit et qui sera le dernier de ce premier module JavaScript : tu pourras résoudre les 20 exercices proposés ou coder des programmes que tu inventes dans un interpréteur qui te permettra de suivre pas à pas l'évolution de ton programme, les contenus des variables, les sauts des structures de contrôle,... afin de bien te rendre compte de ce qui se passe lors de l'exécution de ton script.

Bonne continuation et bonne réussite.

Retour