Reconnaître une instruction conditionnelle – « la machine à trier »

Cet article permet d’observer, à partir d’une activité débranchée, le fonctionnement d’un programme dans lequel un algorithme compare des données.

, ,
Domaines disciplinaires – Compétences CRCN

C’est le programme qui sera exécuté par un système informatique pour concrètement résoudre le problème. L’algorithme décrit l’idée humaine derrière la solution d’un problème, alors le programme permet à une machine de trouver une solution numérique dans des cas précis.

Dans la situation qui va être présentée, on va exécuter un programme pour ranger des données. Ce programme utilise un algorithme qui compare plusieurs fois les données afin de les trier.

Le programme est représenté au sol par :

  • 4 plots d’entrée : pour y positionner 4 données (nombres entre 0 et 1000)
  • 4 plots de sortie : les données « sortent » et ont subi une transformation.
  • Des cerceaux et du scotch : dans chaque cerceau, l’algorithme est récité. Les données vont suivre le chemin de scotch désigné par l’algorithme.

L’algorithme : « Si j’ai le nombre le plus grand, alors je vais sur la droite. Sinon, je vais sur la gauche ».

Présentation de l’activité :
Quand le programme est exécuté (indication de départ de l’enseignant·e), les élèves et leur donnée entrent dans la machine et suivent le chemin qui est devant eux. Quand deux élèves sont autour d’un cerceau, ils énoncent à haute voix l’algorithme. Au début, chaque élève pourra dire l’algorithme en entier. Puis, pour plus de fluidité, on va le décomposer. L’élève qui a la donnée la plus grande commence : « Si j’ai le nombre le plus grand, alors je vais sur la droite. » L’autre élève continue : « sinon, je vais sur la gauche ».
Lorsqu’un élève arrive à un cerceau, il attend un autre élève pour recommencer l’opération.

Informations complémentaires sur l’activité des élèves et de l’enseignant·e :

  • Le reste de la classe est face à la machine et regarde les données évoluer. Le programme va être exécuté suffisamment de fois pour que tous les élèves portent leur donnée dans la machine.
  • Au début de l’activité, ils ne savent pas à quoi elle sert. Ils devront observer, puis anticiper le résultat et le vérifier avant de partager leur hypothèse.
  • La machine range les données. Pour le public qui est en face, la donnée la plus grande va arriver sur le plot à leur gauche.
  • Pour aider la mémorisation de l’algorithme, il peut y avoir deux bouts de scotch sur le mur en face de la machine : un long à droite et un court à gauche. De même, il peut y avoir une zone d’affichage visible par tous sur laquelle les mots nouveaux sont fixés, au fur et à mesure de leur explicitation. Le « si… alors… sinon » sera affiché pendant la passation de consigne.
  • L’enseignant·e va fixer une focale d’observation à chaque exécution de programme. Et au cours de l’activité, le vocabulaire spécifique sera expliqué et réemployé plusieurs fois.
  • Du fait de la décomposition de l’algorithme à deux voix, les élèves ont tendance à dire « Si j’ai le nombre le plus grand, alors je vais sur la droite. Si j’ai le nombre le plus petit, alors je vais sur la gauche. » Se rajoute le fait que le mot « sinon » n’est pas immédiat pour les élèves. Dans le langage courant, lorsqu’on exprime une condition claire (« Je joue avec toi si tu me prêtes ton ballon. »), la contrepartie est souvent implicite (« sinon, je ne joue pas avec toi. »).

Observez les résultats et gardez votre idée dans votre tête.

Où arrivera le nombre « X » (le plus grand) ? (À gauche du public)

Que fait la machine ? Comment va-t-on l’appeler ? (La machine à ranger, à trier…)

Que se passe-t-il dans chaque cerceau ? (On compare les données.)

Combien de fois y a-t-il comparaison ?  (6 fois)

Combien de fois chaque donnée est-elle comparée ? (Ça dépend)

Où placer le nombre « X » (le plus grand » pour qu’il ne soit comparé que 2 fois ?

Que faudrait-il faire pour traiter plus de données ? (Augmenter le nombre de plots et de cerceaux.)

Comment pourrait-on classer les données dans l’autre ordre, le plus grand nombre sur la droite ? (En modifiant l’algorithme.)

Introduire deux nombres égaux.

Pourquoi le programme ne fonctionne-t-il plus ? (Il y a un bug.)

À qui est la faute ? (Les élèves vont accuser les données et les porteurs de données. L’enseignant·e oriente pour amener à dire que c’est au niveau de la conception du programme qu’il y a un problème. Le programmeur ou la programmeuse a traité une situation globale qui fonctionne presque à tous les coups, mais a oublié une situation particulière. Pour corriger, il va falloir ajouter une partie à l’algorithme.)

Que pourrait-on faire pour décoincer la machine ? Comment départager quelle donnée part sur la droite ou quelle donnée part sur la gauche, sans laisser place à une décision « personnelle » ? Attention, il ne peut y avoir qu’une donnée par plot à l’arrivée, la machine ne peut pas « perdre » des données en route.

Dans un vrai programme, le programmeur ou la programmeuse va probablement faire intervenir la comparaison arbitraire entre deux autres données liées à celles dans la machine, issue la même base de données. Si les nombres sont égaux, on pourrait comparer la taille des porteurs de données, ou bien leur âge, ou la position de leur prénom dans l’ordre alphabétique… Autre possibilité ici, si la donnée venait de la droite, alors elle continue sur la droite.

« Si j’ai un nombre égal à l’autre donnée et que je viens de la droite, alors je continue sur la droite. Sinon, je vais sur la gauche. »

Un algorithme : c’est la « recette » qui va permettre de trier les données dans chaque cerceau.

Une instruction conditionnelle : l’algorithme utilise la formule « si… alors… sinon… ».

Un programmeur ou une programmeuse : une personne qui écrit le programme et qui le corrige, pour prendre en compte toutes les possibilités.

Une donnée : Ici, c’est un ensemble de variables, désordonnées, qu’on fait entrer dans la machine. Elles ressortent avec une transformation.

Exécuter un programme : lire le programme du début à la fin, effectuer successivement les instructions qu’il contient.

Un bug : c’est un défaut de conception d’un programme informatique à l’origine d’un dysfonctionnement. Ce nom vient du tout premier incident informatique qui a été causé par un insecte.