Un algorithme mystérieux Que fait la procédure ci-dessous, sachant qu’elle reçoit en entrée un tableau Tab de N éléments, chacun de ses éléments pouvant prendre une valeur égale à Vert, Jaune ou Rouge ? Procédure Rasta (Tab) Indice_Vert ← 1 Indice_Jaune ← N Indice_Rouge ← N tq Indice_Vert <= Indice_Jaune faire si Tab (Indice_Vert) = Vert alors Indice_Vert ← Indice_Vert + 1 sinon si Tab (Indice_Vert) = Jaune alors Tab (Indice_Vert) ← Tab (Indice_Jaune) Tab (Indice_Jaune) ← Jaune Indice_Jaune ← Indice_Jaune – 1 sinon Tab (Indice_Vert) ← Tab (Indice_Jaune) Tab (Indice_Jaune) ← Tab (Indice_Rouge) Tab (Indice_Rouge) ← Rouge Indice_Jaune ← Indice_Jaune – 1 Indice_Rouge ← Indice_Rouge – 1 fsi fsi ftq Fin procédure Conseil : si vous ne voyez pas du premier coup d’œil la fonction de cette procédure, faites-en ce qu’on appelle la trace. Pour cela, donnez-vous un tableau Tab de taille raisonnable (8 à 10 éléments suffiront), rempli au hasard d’éléments verts, jaunes ou rouges, et faites tourner l’algorithme « à la main », en notant l’évolution du contenu du tableau et des variables auxiliaires chaque fois qu’un changement se produit. NB 1 : Vous pouvez bien sûr observer le fonctionnement de la procédure en la programmant et en la faisant exécuter par une machine, mais c’est moins formateur. NB 2 : Cet algorithme a été inventé par Edsger Dijkstra [ˈɛtsxər ˈdɛɪkstra], un des pères de l’informatique ; de nationalité hollandaise, il a décrit l’algorithme en utilisant les couleurs rouge, blanche et bleue.