Apprendre et enseigner le développement informatique par l'algorithmie.

Si vous avez parfois l’impression que les développeurs informatiques réfléchissent différemment, c’est parce qu’ils ont appris à avoir une logique algorithmique. Cela demande d’être cartésien et d’identifier les zones de flou. Si vous travaillez avec des développeurs ce cours vous permettra d’améliorer vos communications. Vous pourrez également réaliser des programmes informatiques, l’occasion de se découvrir de nouvelles passions ou vocations !

1. À quoi servent les algorithmes ?

Un algorithme, c’est une suite d’opérations définies qui permettent de résoudre un problème. Le mot « algorithme » revient souvent dans les actualités lorsque l’on parle d’Intelligence Artificielle, ou IA. En effet, pour que les machines puissent résoudre des problèmes à notre place, il leur faut des algorithmes pour déterminer quelle décision prendre et à quel moment. Plus les algorithmes d’une machine sont précis et plus elle nous paraîtra intelligente.

Les algorithmes n’ont rien de secret. Un humain peut aussi exécuter un algorithme s’il le souhaite. C’est ce que va faire, par exemple, une personne d’un SAV lorsqu’elle va chercher à qualifier votre problème. Il ou elle va poser une suite de questions prédéfinies : « Quel est le modèle de votre appareil ? », « Vous l’avez acheté quand ? », « Vous avez essayé de changer les piles ? », etc. Les réponses que vous lui donnerez influenceront la question suivante ainsi que son diagnostic final.

Arbre de décision manuscrit sur un tableau blanc, intitulé « My flu algorithm » : « Do you feel like you’ve been hit by a train ? » puis « Have you been hit by a train ? », menant à « You have the flu » ou « You’ve been hit by a train ».
Un algorithme dessiné à la main, sur un tableau blanc.

2. Comment écrit-on un algorithme ?

Ma solution préférée est d’utiliser des feuilles et un crayon pour dessiner des arbres de décisions. Cette représentation graphique d’un algorithme est souvent utilisée lors des phases de spécification d’une idée et de documentation de l’existant. C’est un excellent outil de communication entre les humains.

Les algorithmes peuvent aussi être directement écrits à l’aide d’un langage informatique. Cela permet de pouvoir le faire exécuter par les machines et de voir leur résultat.

Nous n’apprendrons pas à coder dans ce cours. Apprendre la syntaxe et la structure d’un code informatique prendrait trop de temps. En évitant d’utiliser une représentation complexe des algorithmes, nous pourrons nous concentrer sur leur logique. Une fois les mécanismes acquis, ce sera d’autant plus facile d’apprendre à programmer si vous le souhaitez.

Nous verrons quand même des exemples de codes. Vous serez invité à les lire, apprécier leur structure générale. Il ne vous sera pas demandé de savoir les reproduire.

3. À quoi ressemble un arbre de décision ?

Voici l’exemple d’un arbre de décision qui répond à la question « Que faire de mon parapluie ? » :

Arbre de décision annoté répondant à « Que faire de mon parapluie ? ». La condition « il pleut ? » mène à prendre ou à ne pas prendre le parapluie. Quatre repères désignent le problème, la condition, l’action et un chemin.

Un arbre de décision est composé de quatre éléments :

  1. Une question principale
    C’est le problème que l’algorithme doit résoudre, posé sous forme de question ouverte. Ses réponses possibles sont les actions que l’on trouve au bout des chemins. Plusieurs chemins peuvent mener à la même réponse. Elle n’est pas une étape de l’arbre : on ne la lit pas en chemin, on commence par la première condition.
    Exemple : « Que peut faire le SAV pour votre appareil ? »
  2. Des conditions
    Elles sont représentées par des losanges. Les conditions doivent toujours être des questions fermées. C’est une sorte d’aiguillage vers deux routes possibles : oui ou non.
    Exemple : « Avez-vous acheté votre appareil il y a moins de 2 ans ? »
  3. Des actions
    Elles sont représentées par des rectangles. Les actions placées à la fin d’un chemin sont les réponses possibles de notre algorithme. Mais une action peut aussi se trouver au milieu d’un chemin : on l’exécute, puis on continue vers la condition suivante. C’est le cas dans l’exercice du mois de naissance, où chaque posture est prise en passant. Exemple : « Renvoyez-nous votre appareil par la poste »
  4. Des chemins
    Ils sont représentés par des flèches. Les chemins lient les conditions et les actions entre elles.

Le nom vient de l’image : on dessine l’arbre à l’envers, la racine en haut et les feuilles en bas. Une feuille, c’est une fin de chemin, donc une action.

4. Exécuter un arbre de décision

Lire un arbre, c’est suivre un seul chemin. On répond à la condition, on suit la flèche, et on recommence jusqu’à tomber sur une feuille.

On ne lit donc jamais tout l’arbre. Certaines questions ne sont même pas atteintes, parce qu’une réponse précédente donne déjà la leur.

Arbre de décision répondant à « Quel est mon mois de naissance ? ». Il enchaîne cinq conditions sur le mois : contient-il un M, un C, un N, un R, et fait-il plus de 5 lettres. Chaque réponse déclenche une posture à tenir. La branche « oui » du C est une feuille : le parcours s’arrête là, car les trois questions suivantes ont déjà leur réponse.
Pour l’enseignant·e

Un·e élève exécute l’arbre au tableau avec son mois de naissance, sans le dire, et garde chaque posture. La classe doit retrouver le mois en se mettant d’accord.

Pour l’enseignant·e

Faire remarquer que le bras droit en l’air arrête le parcours. Demandez pourquoi.

Seuls octobre et décembre contiennent un C, et tous deux contiennent un R et font plus de 5 lettres.

Pour les élèves

Imaginez une personne avec les deux bras tendus sur les côtés et les deux poings fermés. Quel est son mois de naissance ? Quelle est la position de sa tête ?

Janvier, la tête penchée.

Les bras sur le côté disent qu’il n’y a ni M ni C. Les deux poings fermés disent qu’il y a un N et un R. Seul janvier réunit les quatre.

La tête se déduit ensuite du mois trouvé : janvier fait 7 lettres, donc plus de 5.