Fabriquer des exerciciels de tri

dimanche 18 mai 2014
par  Alain BUSSER

L’outil présenté ci-dessous permet de fabriquer des énoncés du style de celui-ci. En laissant l’ordinateur ou la tablette faire le mélange. L’outil logiciel est une webApp, qu’on peut télécharger ici (ou utiliser en ligne, en bas de cet article) :

l’outil de fabrication d’exerciciels
Alain Busser 2014

Et les morceaux d’exercice obtenus sont à coller dans un fichier html basique appelé template ; le voici :

le gabarit d’exerciciels
c’est ici qu’on écrit les productions de l’outil ci-dessus : Attention à travailler sur une copie et non sur l’original !
Alain Busser, Florian Tobé 2014

Le mélange est effectué avec la bibliothèque JavaScript qui s’appelle underscore.js. Cette bibliothèque possède une fonction shuffle qui peut mélanger au hasard les éléments d’un tableau. Pour calculer la permutation inverse, on trie les indices possibles en utilisant comme fonction de tri, la fonction donnée par la permutation [1] :

		indices = [0...enonce.length]
		solution = _.shuffle indices
		indices = _.sortBy indices, (n) -> solution[n]

Voici un exemple d’utilisation, montré pas à pas par des copies d’écran :

Les morceaux de la démonstration sont séparés par le retour à la ligne. C’est donc en allant à la ligne qu’on crée les points de découpe du texte à mélanger. On le tape dans le cadre du haut de la page, comme avec un éditeur de texte basique (Control-Z pour annuler, copier-coller etc) :

Si on oublie de corriger une faute d’orthographe ou une coquille, il reste possible de le faire sur la production finale. Mais dès qu’on est satisfait du corrigé (qui est destiné à disparaître après coup), on clique sur le bouton qui lance le shaker pour faire un cocktail secret :

On voit alors un aperçu du texte mélangé :

Si on n’apprécie pas le goût du cocktail, il suffit de relancer le shaker en recliquant sur le bouton décrit ci-dessus, jusqu’à satisfaction. Sitôt qu’on est satisfait du mélange, on peut fabriquer l’exerciciel. Cela se fait en deux phases :

  • récupérer le tableau donnant la solution et le placer dans la partie CoffeeScript du gabarit
  • récupérer le texte mélangé, au format html, et le placer dans la liste du gabarit.

La partie CoffeeScript est juste sous le bouton du shaker, et on peut sélectionner tout son contenu avec Control-A avant de la copier :

puis de la coller à la ligne 40 du gabarit (ici sous Geany, n’importe quel éditeur de texte convient surtout s’il numérote les lignes) :

La partie html se trouve en-dessous de la partie CoffeeScript. Là encore, on peut la sélectionner avec Control-A, mais on peut aussi si on le souhaite, modifier une dernière fois son contenu [2] :

Ensuite, une fois copié ce contenu (Control-C), on le colle (Control-V) à la ligne 80 du gabarit :

Il ne reste maintenant plus qu’à fignoler (rajouter une figure si l’exercice porte sur la géométrie). Ici un résumé de ce qui est à démontrer :

Ensuite, l’ex gabarit devenu exerciciel peut être ouvert dans un navigateur internet, et testé ; ici sous Firefox :

Une fois triés les morceaux, la progression affiche 100% ce qui montre que le tri est correct [3] :

Mais dans le cas présent, il y a un défaut à l’exercice : Puisque la démonstration repose sur une disjonction de cas, on devrait pouvoir commuter les deux cas, mais un seul ordre est reconnu comme correct :

Aussi, lorsqu’on veut rédiger une démonstration pour qu’elle n’ait qu’un ordre correct, on doit prendre quelques précautions, comme des mots préfixes du genre « de même », « de surcroît », « soit également » etc. Par contre, des exercices de grammaire peuvent également être fabriqués avec cet outil : Une sorte de Bescherelle sur tablette...


Voici l’outil [4] :

Générateur d'exercices de logique

Générateur de démonstrations

Première étape: Écrire le texte de la démonstration ci-dessous, en allant à la ligne après chaque "morceau". Les morceaux seront aléatoirement permutés pour engendrer l'exercice.

Seconde étape: Cliquer sur le bouton ci-dessous, qui permutera le texte (on peut recommencer si on n'est pas satisfait du résultat affiché):

Troisième étape: Recopier le morceau de CoffeeScript ci-dessous et le placer dans le fichier template.html ci-joint, à la ligne 40:

Quatrième étape: Recopier le morceau de html ci-dessous et le placer dans le fichier template.html à la ligne 80.

Cinquième étape: Changer le nom du fichier template.html en lui donnant un nom adapté au contexte de l'exercice (par exemple démonstrationParallèles.html) puis le sauvegarder.

Fini !


Voici quelques exemples de ce qu’on obtient avec cet outil (les figures ont été faites avec des macros CaRMetal, qui sont proposées au téléchargement en bas de cette page) ; les fichiers html peuvent être ouverts dans un autre onglet pour les tester :

  • L’exercice d’arithmétique proposé dans le pas-à-pas ci-dessus : Montrer que n est pair si et seulement si n² est pair :
la démonstration d’arithmétique
Alain Busser 2014
  • La démonstration du théorème de la droite des milieux :
démonstration du théorème de la droite des milieux
Alain Busser 2014
  • La démonstration de la concourance des médiatrices du triangle :
les médiatrices d’un triangle sont concourantes
j’en ai trouvé une preuve fort admirable mais la place me manque dans ce thumbnail
Alain Busser, Florian Tobé 2014
  • La démonstration de la concourance des médianes du triangle :
les médianes d’un triangle sont concourantes
j’en ai trouvé une preuve fort admirable mais la place me manque dans ce thumbnail
Alain Busser, Florian Tobé 2014
  • La démonstration de la concourance des bissectrices du triangle :
les bissectrices d’un triangle sont concourantes
j’en ai trouvé une preuve fort admirable mais la place me manque dans ce thumbnail
Alain Busser, Florian Tobé 2014
  • Un exercice d’analyse niveau terminale) :
un exemple de ROC à trier
démonstration d’analyse, à remettre dans l’ordre
Alain Busser 2014

[1C’est une fonction de N dans N.

[2par exemple transformer des lettres en caractères utf-8 de html

[3on peut aussi « décommenter » les lignes 62 et 63 pour qu’un message modal confirme que l’exercice est réussi.

[4ne pas oublier d’enregistrer le gabarit sous un autre nom, pour ne pas écraser l’original. C’est du vécu : Pas rigolo d’avoir à tout refaire même si ce n’est pas très long...


Documents joints

macro pour dessiner un cercle à main levée (...)
macro pour dessiner un segment à main levée (...)
la macro a été utilisée pour les figures des exercices de démonstration en géométrie

Commentaires

Logo de Alain BUSSER
samedi 26 juillet 2014 à 16h50 - par  Alain BUSSER

« je ne sais pas quoi faire avec cercle.mcr » : Autant pour moi, j’avais oublié de préciser que ce sont des macros pour CaRMetal, qui exporte aussi au format svg (et qui a été utilisé pour les figures de l’article). Dans CaRMetal, il faut « ouvrir » et charger le fichier mcr comme si c’était une figure, ce qui a pour effet de charger la macro dans la figure courante. Ensuite on trouve la macro dans le menu des macros.

Logo de René Soleil
vendredi 27 juin 2014 à 14h26 - par  René Soleil

Bonjour

Cela m’a rappelé le travail qu’on faisait avec un groupe de collègues il y a ... 30 ans, pour initier nos élèves de collège à la démonstration en géométrie. En ce temps-là, c’était du vrai copier-couper-coller, avec des ciseaux et de la colle.
Bravo pour votre travail : ça marche très bien. J’essaie dès la rentrée de septembre avec des lycéens et des étudiants profs des écoles.

Je n’ai pas su utiliser les macros pour les dessins à main levée. Après avoir decompressé cercle.mcr.zip, je ne sais pas quoi faire avec cercle.mcr.
J’ai vu que le fichier roc-exp contenait une figure .svg, puis que geogebra pouvait exporter en svg. Après avoir recollé tous les morceaux, ça m’a donné pas mal d’idées.

J’ai testé également avec un programme en Xcas. Ca me semble aussi intéressant.
On peut laisser, ou pas, les indentations.
(Je ne l’ai pas mis en pièce jointe : je n’ai pas vu où ça se faisait)
On peut commencer par la fin, ou le début, avec les boucles, qui sont indiquées clairement avec Xcas. Par contre ce serait mieux si on avait une seule instruction par ligne. Mais je n’ai pas su régler ce problème-là.

Cordialement,
René Soleil