TP 10 d’algorithmique avec CaRMetal en Seconde

jeudi 20 mai 2010
par  Alain BUSSER

Lorsqu’on sait que la solution d’un système est formée d’entiers (nombre de personnes par exemple), il peut être intéressant de résoudre le système par une double boucle (faire varier x et y par pas de 1, et afficher leurs valeurs lorsque ax+by=c et a’x+b’y=c’). Cette méthode algorithmique (plutôt qu’algébrique) a du succès chez les élèves, et permet d’illustrer la notion de test, et le rôle de la conjonction en logique.

Elle a donc été montrée en cours, comme une méthode autre que graphique, substitution, combinaison linéaire etc. Dans les exercices du Rallye Mathématique, ce sont souvent des systèmes de type système de congruences linéaires qui sont donnés, et dans ce cas la méthode algorithmique s’impose presque [1]. Presque, parce que l’intention des créateurs de ces exercices était très clairement d’inciter les élèves à travailler en groupe, et que dans ce cas-là il s’agit plus de calcul parallèle que d’algorithmique, mais c’est l’algorithmique qui est au programme de Seconde et pas le calcul parallèle...

Donc deux sujets du Rallye Mathématique de la Réunion ont été copiés-collés sur le sujet d’algorithmique ci-dessous :

le sujet au format pdf

Au final, malgré le cadre arithmétique, donc hors programme, ce TP a été le mieux réussi de l’année scolaire : Intérêt toujours vif des élèves pour le sujet (certains ayant même essayé sans JavaScript, « à la main », pour finalement réaliser que c’est quand même plus facile avec...), relative facilité du TP (plusieurs élèves ont fini les deux exercices en une demi-heure), exploration individuelle par les élèves des tests et des conjonctions (et même d’une négation)...

Algorithmique

L’animisme est toujours présent chez certains élèves : Puisque JavaScript sait tout faire, on n’a qu’à lui demander de calculer le nombre d’œufs par quelque chose comme

Au cours de l’année scolaire, cette attitude tend à disparaître mais assez lentement. L’utilisation de logiciels de calcul formel avec des pgcd tout faits constitue dans ce domaine une gêne pour ces élèves-là (s’ils poursuivent dans la voie scientifique).


Plusieurs élèves ont proposé une solution presque juste sauf que l’affichage du nombre d’emballages n’est pas fait dans le test mais après tout le script, ce qui donne une réponse de 201 :


La création d’une variable n avant la boucle (inutile car elle sera créée à nouveau dans la boucle) est arrivée aussi 2-3 fois :

Le fait que n=40 au début de la boucle est une affectation est en effet assez difficile à percevoir (ça ressemble quand même beaucoup à un test, non ? Surtout que après ça, c’est un test : La condition de sortie)


Lassé de ne pas réussir le TP, un élève a fait la même chose qu’en maths : Fabriquer un patchwork avec des notations ressemblant aux TPs précédents :

Le pire, c’est que CaRMetal n’affiche aucune erreur de syntaxe, puisque celle-ci est correcte (le programme affiche toutes les valeurs de l’indice ce qui lasse d’ailleurs assez vite son utilisateur). La logique sous-jacente est si difficile à imaginer qu’on peut très bien penser qu’il n’y a pas de logique du tout...

négation

La traduction de « par 6, il en reste 2 » en

n%6==2

est apparemment évidente pour tous les élèves (il faut dire qu’une explication avait été donnée à l’issue d’un cours), mais la traduction de « par 8, il n’en reste pas » en

n%8==0

l’a été beaucoup moins, alors on a vu apparaître des n%8 traités comme des booléens (ça marche en raison d’une conversion automatique par JavaScript) qui sont après tout faux puisque tout nombre autre que 0 est considéré comme vrai en booléen. La correction

de cette « erreur » consiste à écrire « divisible par 8 » en la négation de « il reste quelque chose de non nul dans la division ». Cette production n’était évidemment pas du tout attendue des 2-3 élèves qui l’ont faite...


Puisque n est divisible par 8, la boucle peut être parcourue non pas de 1 en 1, mais de 8 en 8 (en effet 40 se trouve être un multiple de 8, ce qui n’est sans doute pas un hasard). Un seul élève a exploré cette voie mais il n’a pas remarqué que le test de divisibilité par 8 n’est pas nécessaire dans ce cas :


Le fait que le test de divisibilité par 8 est perçu comme fondamentalement différent des autres, se retrouve par le fait que plusieurs élèves l’ont carrément oublié dans leur script, ou mis entre parenthèses (réminiscence d’une étape non vue par le prof ?) :

Le plus remarquable avec ce script est qu’il a été construit par un élève ayant 2 de moyenne en maths...

conjonction

Il y a deux façons de traiter la multiplicité de tests : La version algorithmique (si un test réussit, on passe au suivant ; s’il réussit on passe au suivant) :

Et la version logique (construction d’un booléen géant par conjonction de booléens) :

La plupart des élèves ont préféré faire des tests imbriqués plutôt qu’un test unique. Cela est visiblement dû à ce que les élèves savent que la conjonction est une opération binaire, mais ignorent qu’elle est aussi ternaire (parce qu’associative). Le « switch..case » qui permet d’abréger les tests imbriqués a été pratiqué lors du TP précédent mais aucun élève ne l’a utilisé ici.


La différence entre les deux méthodes se voit encore plus dans le deuxième exercice :

Version algorithmique :

Version logique :

Et avec un indice au nom plus parlant :

Évaluation

Le barême a été le suivant :

  • Exercice 1 : 9 points (2 pour l’interprétation de n, 3 pour la maîtrise de l’instruction « modulo » (parce qu’un des « modulos » doit être nul), 2 pour celle des conjonctions booléennes, et 2 pour penser à afficher le résultat.
  • Exercice 2 : Idem, 9 points
  • 2 points pour ceux qui ont réussi à finir le jour même.

Avec ce barême, les notes vont de 0 (TP non rendu à temps) à 20 (obtenu pour environ la moitié des élèves). Moyenne 15,6 .....


[1d’autant plus que l’existence d’une solution utilise le théorème des restes chinois qui est hors programme...


Commentaires

Logo de laurent COUTURIER coordonnateur de maths au collège de la pointe des châteaux à st leu
jeudi 28 juin 2012 à 10h10 - par  laurent COUTURIER coordonnateur de maths au collège de la pointe des châteaux à st leu

bonjour Mr busser
pouvez vous svp me donner votre mail

j ’aimerais vous demander si vous connaissez un ou des sites permettant de me confectionner une bibliothèque d’activités mathématiquess niveau collège toutes prètes avec carmetal
merci
laurent.couturier974@gmail.com