TP 5 d’algorithmique avec CaRMetal en Seconde

lundi 14 décembre 2009
par  Alain BUSSER

Comme le rappelle le document d’accompagnement sur l’algorithmique en Seconde, le calcul de médiane est une bonne occasion pour introduire les algorithmes de tri. Toutefois

  1. Les algorithmes de tri sont complexes et ont peu de chances d’être au programme d’algorithmique dans le futur ;
  2. JavaScript possède déjà un algorithme de tri (quicksort) ;
  3. trier un tableau suppose qu’on manipule un tableau et donc qu’on fasse du « JavaScript de pointe » ; ou qu’on utilise un langage spécialisé dans les tableaux comme Scratch ou SciLab ; et dans ce cas un tableur est préférable.

Par conséquent un « simple » calcul de moyenne a été choisi : Il permet d’éviter l’usage de tableaux.

Pour calculer la somme des distances (numérateur de la moyenne) un exemple avait été donné en DS peu avant [1] :

PDF - 27.3 ko
contrôle pour préparer le TP

Pour un exemple d’utilisation de tableaux en JavaScript, on pourra consulter ce sujet de TP du bac S. Ceci dit, la figure ci-dessous a également été produite par un tableau (pour faire l’histogramme).

Le sujet du TP était le suivant :

PDF - 57.5 ko
le sujet du TP

La figure n’est pas si évidente à construire, mais grâce à CaRMetal, il a été possible d’assujettir un point à évoluer dans un carré sans jamais en sortir (la manip avait été vue dans les exercices de géométrie dans l’espace).

La possibilité de faire bouger le point M dans le carré est également offerte à JavaScript via le script donné dans l’énoncé. Une simulation sur quelques milliers de lancers (c’est long) donne cette figure :

le script de l’histogramme

var histo=new Array();
for(x=3.1;x<=4.4;x=x+0.1){
        n=Math.round((x-3.1)*10);
        histo[n]=0;
        a=Point("A"+n,x-5,0);SetHide(a,true);
        b=Point("B"+n,x-4.9,0);SetHide(b,true);
        c=Point("C"+n,x-4.9,0);SetHide(c,true);
        d=Point("D"+n,x-5,0);SetHide(d,true);
        p=Polygon("Rect"+n,"_a,_b,_c,_d");
}
for(i=1;i<=4000;i++){
        Move("M",3+Math.random(),1+Math.random());
        x=GetExpressionValue("d");
        n=Math.floor((x-3.1)*10);
        histo[n]++;
        for(j=0;j<14;j++){
                Move("C"+j,3.1-4.9+j/10,histo[j]/i*20);
                Move("D"+j,3.1-5+j/10,histo[j]/i*20);
        }
}
CarMetal - 13.7 ko
histogramme

L’histogramme, autant que la densité théorique [2] montre que la fréquence des distances OM possibles est assez complexe !

D’ailleurs la valeur exacte de la distance moyenne sur le carré n’est pas très simple, comme le suggère la réponse donnée par wxmaxima :

Remarque : Ce n’est pas la distance du centre du carré à l’origine, laquelle est environ égale à 3,807886552931954 toujours d’après wxmaxima.


Déroulement du TP

Malgré un certain entraînement lors de séances sur la géométrie dans l’espace, il faut environ 20 minutes pour construire la figure (avec M lié au carré). Ensuite l’écriture du script pour faire bouger M est assez rapide, ce qui laisse une demi-heure pour trouver comment calculer la moyenne des 100 valeurs. La tâche est loin d’être aussi aisée que prévue ! Toutefois, la plupart des élèves comprennent qu’il faut d’abord calculer une somme puis la diviser par 100, et que la difficulté réside dans le calcul de cette somme. Plusieurs ont même vu que pour additionner 100 nombres, il faut commencer par additionner les deux premiers, puis additionner le troisième à la somme partielle, etc. ce qui du point de vue algorithmique est une réussite. Par contre concrétiser cette idée n’est pas si facile, surtout d’ailleurs pour ceux qui l’ont eue...

Quelques attitudes constatées :

  • Javascript est si puissant qu’il doit bien avoir une instruction « somme des 100 nombres » : Alors on essaye de trouver, par tâtonnements, la syntaxe de cette instruction. Fou rire garanti pour le prof.
  • Il suffit d’afficher une volonté pour que celle-ci se réalise : Alors on entre Alert(« somme des 100 nombres ») et on est déçu parce que ça ne fait qu’afficher un texte, et pas réaliser ce qu’il dit. Cela semble résulter d’une confusion entre le langage JavaScript et le métalangage de l’algorithmique.
  • À l’inverse, un élève a réussi à calculer la moyenne mais ne s’en est pas rendu compte parce qu’il a oublié le « Println(somme/100) » final...
  • Plusieurs ont copié le contenu de la fenêtre de sortie (les 100 nombres) et l’ont collé dans l’éditeur de programme. Ils n’ont pas eu le temps d’insérer les 99 signes d’addition... Cette démarche rappelle l’attitude de certains élèves devant un tableur : Calcul de dizaines de données à la main et écriture des résultats l’un après l’autre dans le tableur...

Voici les productions de deux voisines :

var resultat=0;
for(i=0;i<100;i++){
Move("M",3+Math.random(),1+Math.random());
d=GetExpressionValue("d");
resultat=resultat+d;
Println(resultat/100);
}

(juste, mais produit 100 valeurs qui sont les moyennes partielles, et dont seule la dernière est la bonne)

et

var resultat=0;
for(i=0;i<100;i++){
Move("M",3+Math.random(),1+Math.random());
d=GetExpressionValue("d");
resultat=resultat+d;
}
Println(resultat/100);

qui correspond mieux à ce qui était attendu.

Voici la production de l’élève le plus rapide :

var somme=0;
for(i=0;i<101;i++)
{
    Move("M",3+Math.random(),1+Math.random());
    d=GetExpressionValue("d");
    somme += d;
}
Prompt(somme/i);

(l’usage de la notation « somme+=d » et de l’antique « Prompt » au lieu de « Alert » montre que cet élève connaît par cœur la syntaxe de JavaScript vue dans les TP précédents). On constate l’erreur dans la boucle, la somme portant sur 101 valeurs et étant divisée par 100. Une autre erreur intéressante a été faite par un autre élève le week-end suivant : Calcul de la somme au lieu de la moyenne (oubli de la division par 100).

La première partie du TP (recherche des distances minimale et maximale) peut servir à introduire le cours. Il n’y a pas de petit profit... Par ailleurs, l’histogramme des moyennes donné par le tableur de GeoGebra

montre même avec peu de données [3] que les moyennes sont plus tassées que les distances elles-mêmes (les deux bâtons verts représentent les données extrêmes), ce qui plus tard pourra introduire le cours sur la loi des grands nombres (stabilité des moyennes).

Conclusions

  1. Le calcul d’une somme par création d’une variable et boucle est visiblement plus complexe que prévu : L’usage du tableur est nettement plus naturel pour les élèves que celui d’un langage de programmation, même pour ceux qui sont passionnés de programmation...
  2. Par conséquent le calcul de moyenne par algorithme est compliqué en Seconde.
  3. Pour autant, ce TP en valait la peine parce qu’en mettant les élèves en situation active (sollicitation de leur connaissance procédurale sur les moyennes) il consolide la définition d’une moyenne et le sens de l’addition de grandes quantités de termes, notions suffisamment fragiles pour qu’on ait besoin de les consolider...
  4. L’habillage géométrique de cet exercice de statistiques explique grandement le succès de ce sujet de TP (réaction d’un élève : « Ah bon, on peut faire des statistiques en géométrie ? ») au point que l’association géométrie-probabilités justifie à elle seule le choix de l’outil CaRMetal+JavaScript.
  5. L’utilisation d’un algorithme de tri pour calculer une médiane semble exagérée en classe de Seconde...

[1Le corrigé de l’exercice 2 de ce contrôle est ici.

[2donnée ici sous forme d’un lieu et pas de l’expression analytique d’une fonction, trop complexe car donnée sous la forme d’une primitive et en plus, définie par intervalles.

[3dont certaines sont peut-être fausses car limitées à la lecture d’une distance, et non de la distance moyenne


Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 14 juin 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mercredi 21 juin 2017, 14h-18h, 146 route de Grand-Coude, Saint-Joseph


Brèves

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

L’algorithmique à l’IREM de Lille

vendredi 26 juin 2009

Le groupe AMECMI de l’IREM de Lille vient de mettre en ligne des ressources importantes au service des professeurs de Seconde :

- Algorithmique et programmation (Emmanuel Ostenne)
- Bibliographie amoureuse de l’algorithmique (Alain Juhel)

Statistiques

Dernière mise à jour

samedi 24 juin 2017

Publication

757 Articles
Aucun album photo
132 Brèves
11 Sites Web
131 Auteurs

Visites

16 aujourd'hui
585 hier
2048789 depuis le début
5 visiteurs actuellement connectés