TP 8 d’algorithmique avec CaRMetal en Seconde

lundi 26 avril 2010
par  Alain BUSSER

Le jeu a été traité avec toutes sortes d’outils (y compris le tableur) mais pas encore en CarScript. Lors d’une étape préliminaire (avant le jour du TP), le premier onglet du fichier CaRMetal ci-dessous a été montré aux élèves pour leur montrer le principe du jeu. Il faut tourner la manivelle pour avoir un nouveau lancer de dé chaque fois que l’angle passe par 180° en augmentant.

Le sujet est ici :

le sujet au format pdf

Les élèves avalaient le TP à une vitesse de lièvre mais progressaient à une vitesse de tortue... Il faut dire qu’une panne de réseau s’est produite à nouveau...

Dès que le script de la page 1 a été entré dans l’éditeur (et sauvegardé par prudence), les élèves se sont vite passionnés pour le sort de cette pauvre tortue qui a beaucoup de supporters !

L’affichage des erreurs de syntaxe a été utile

En effet les élèves préfèrent recopier au clavier plutôt que cliquer sur les instructions

  • Plusieurs élèves oublient le point-virgule à la fin d’une ligne (pas grave du tout, d’ailleurs pas affiché comme erreur de syntaxe)
  • Plusieurs fois aussi, le if(t<6){ a été remplacé par if(t<6);
  • Quelques élèves ont commencé à expérimenter avec des boucles (effectuées 100 fois) avant d’enlever les Alert et Pause : Ils ont du en guise de punition, cliquer 100 fois sur « OK ». C’est très formateur !

Comme la panne de réseau a empêché que le TP puisse être évalué, seuls 2 élèves ont rendu le TP complété le lundi suivant. L’une a carrément rajouté avant la boucle un

  1. s=0;
  2. for(i=1;i<=100;i++){
  3.     s=s+i;
  4. }
  5. Alert(s);

Télécharger

complètement hors sujet, l’autre a produit

  1. for(i=1;i<=100;i++){
  2.     l=0;
  3.     t=0;
  4.     while(l<6 && t<6){
  5.         de=Math.ceil(Math.random()*6);
  6.         if(de<6){
  7.             t++;
  8.         } else {
  9.             l=6;
  10.         }
  11.     }
  12.     if(l==6){
  13.         Println("Le lièvre a gagné");
  14.     } else {
  15.         Println("La tortue a gagné");
  16.     }
  17. }

Télécharger

qui est intéressant mais ne répond pas à la question (ce script affiche 100 phrases mais ne compte pas le nombre de parties gagnées par le lièvre). Un seul élève semble avoir (re)trouvé comment on peut compter le nombre de parties gagnées par le lièvre de manière algorithmique (par incrémentation conditionnelle d’une variable ad hoc).


Plusieurs élèves ont remarqué spontanément que le lièvre gagnait un peu souvent, les amenant à réinventer la notion de jeu équitable sans aucune intervention de leur prof !

Une première explication à cette profonde injustice cheloniaphobe est un bogue : Alors que l’exemple montré sans JavaScript est une piste de jeu à 5 étapes, celle du script était à 6 étapes.

Le deuxème onglet du dossier CaRMetal ci-dessus a alors été projeté, ce qui a permis de vérifier que même en 5 étapes, le jeu reste en faveur du lièvre. Pour en voir le fonctionnement, il faut lancer l’animation sur le point M. La case à cocher permet de relancer l’expérience.

Le commentaire final selon lequel la simulation a permis de répondre à une question difficile du point de vue des probabilités (il se trouve que les élèves de Seconde ne connaissent pas grand-chose aux chaînes de Markov ...) a été moins écouté que le sort de cette pauvre tortue...

Voir aussi ce « vieil » article...


Commentaires