Notez que si les difficultés que nous évoquons vous paraissent très mineures pour l'instant, les méthodes expliquées ci-après seront une bonne ressource lorsque vous serez confronté à des problèmes complexes (notamment à partir du niveau 3). Nous vous en donnerons ainsi plusieurs au fil de votre progression.
Organiser un algorithme pour soi-même
Comme vous avez dû le voir, nous utilisons souvent du pseudo-code pour exprimer les opérations et les algorithmes : quand nous présentons de nouvelles instructions, dans les conseils automatiques, ainsi que dans les corrections des problèmes. Si les ordinateurs ne peuvent pas comprendre ces instructions (à l'heure actuelle du moins), le pseudo-code nous aide à mieux visualiser, à organiser des instructions pour nous avant d'écrire un programme rigoureux qu'une machine pourra interpréter.
En effet, lorsque l'on veut trouver la solution à un problème qui ne se rapproche pas de ce que l'on connaît déjà, il est très difficile de s'organiser complètement dans sa tête et d'écrire directement les bonnes instructions en langage de programmation. Il est bien plus agréable de passer par différentes étapes, où l'on identifie et l'on pose les grandes parties du problème pour se repérer, puis progressivement, on se rapproche de ce que l'on peut programmer.
Cas pratique
Prenons par exemple la situation suivante. C'est un souterrain que vous a décrit le Grand Sorcier et que vous avez schématisé : vous devez aller chercher le coffre qui s'y trouve, car il contient les objets magiques avec lesquels le sorcier exerce ses pouvoirs et est admiré par ses fidèles.
Vous êtes à l'entrée avec votre robot. Celui-ci doit donc aller chercher la clé au bout du souterrain (dans les chemins nauséabonds), puis ouvrir la porte avec cette clé, prendre le gros coffre qui se trouve derrière, et vous le ramener. Rien que la phrase est compliquée ! Organisons cette suite de tâches :
Aller chercher la clé Ouvrir la porte Prendre le coffre Ramener le coffre
Maintenant, détaillons :
Aller à droite jusqu'au bout Aller en haut jusqu'au bout Aller à gauche jusqu'au bout Prendre la clé Aller à droite jusqu'...
C'est un peu lourd, non ? On va réduire un peu l'écriture, pour aller plus vite :
À droite -> au bout En haut -> au bout À gauche -> au bout Clé À droite -> au bout En bas -> au bout À gauche -> au chemin de la porte En haut -> à la porte Porte Coffre En bas -> au bout À gauche -> à l'entrée
Remarquez que pour passer d'une étape à l'autre, on s'appuie sur le schéma de l'énoncé pour compléter notre pseudo-code. Le revoici pour vous aider à mieux suivre :
À présent, on arrive aisément à un pseudo-code très proche du programme final :
8 fois À droite 5 fois En haut 4 fois À gauche Prendre la clé 4 fois À droite 5 fois En bas 6 fois À gauche 4 fois En haut Ouvrir la porte En haut Prendre le coffre 5 fois En bas 2 fois À gauche
qui est :
for loop in range(8): droite() for loop in range(5): haut() for loop in range(4): gauche() ramasser() for loop in range(4): droite() for loop in range(5): bas() for loop in range(6): gauche() for loop in range(4): haut() ouvrir() haut() ramasser() for loop in range(5): bas() gauche() gauche()
Étape par étape, avec d'autres supports
À vous de déterminer ces différentes étapes dont vous avez besoin pour trouver la solution. Si vous aviez été à notre place, vous auriez peut-être combiné les deux dernières étapes en une seule, avec des instructions comme « à droite 8 fois ». Il n'est pas tolérable d'écrire un programme de manière approximative, et de le soumettre en se disant qu'il sera peut-être bon. Si le déroulement de votre programme ne vous est pas clair, formulez votre idée générale sur un support et travaillez-la jusqu'à la rendre déterministe. Vous serez alors certain que ce que vous avez codé est juste avant de le soumettre, moyennant quelques étourderies.
Ainsi, nous vous encourageons à vous organiser sur une feuille de papier, ou à l'aide d'un logiciel de votre ordinateur si vous préférez, avant d'écrire votre programme. Cela vous sera essentiel pour résoudre des problèmes bien plus complexes dans les calculs et les opérations que ce que nous avons vu jusqu'à présent, par exemple dans les niveaux suivants et notamment dans les concours.
Des notations optimales pour vous
Il est probable que nos notations en pseudo-code vous paraissent un peu longues : en effet, nous voulons nous assurer d'être compris par tous nos lecteurs. Quand vous brouillonnez sur papier, vous pouvez bien sûr employer des notations plus courtes, et même profiter de la flexibilité du support : utiliser des symboles ou de petits dessins à la place des mots ; comme des flèches pour les directions. Soyez toutefois certain de bien vous comprendre lorsque vous devez relire votre algorithme !
Si vous devez vous-même décrire un algorithme à quelqu'un d'autre, un pseudo-langage pourra souvent être bien plus efficace qu'un langage de programmation. Ce sera notamment le cas avec quelqu'un n'ayant jamais programmé !