TP 6 d’algorithmique avec CaRMetal en Seconde

lundi 1er février 2010
par  Alain BUSSER

La notion de test se prête difficilement à un sujet de TP qui soit à la fois simple (éviter d’y faire utiliser en même temps d’autres notions) et intéressant. Ce TP exploite la possibilité qu’offre CaRMetal, de colorier un point conditionnellement. Le fait que le TP précédent ait porté sur un calcul de moyenne permet de considérer le TP en question comme une préparation à celui-ci ; en effet compter des points (ici les points rouges) se fait un peu de la même manière qu’additionner des nombres. Le sujet du TP est téléchargeable ici :

PDF - 98.5 ko

On constate la nécessité d’une imprimante couleur pour ce sujet...


Le sujet du TP a été choisi en fonction de deux impératifs :

  1. Utilisation de tests dans un contexte non numérique (les classiques exemples sur les fonctions définies par intervalles, c’est un peu aride, non ?)
  2. Réinvestir le TP précédent (calcul de moyennes) pour voir comment les élèves réussissent à transformer un algorithme de calcul de somme en algorithme de comptage (compter, c’est additionner ; en témoigne la définition d’une variable aléatoire binomiale comme somme de variables de Bernoulli, sujet en général vécu comme difficile par les élèves).

En fait, aucun élève n’a eu le temps d’arriver à la partie III pendant le TP, et seuls deux d’entre eux ont fini la partie II quelques minutes après la sonnerie de fin de l’heure. En bref, c’était un TP de deux heures et pas d’une heure. Pour autant, c’est la première fois de l’année que pas un seul élève n’a abandonné durant l’heure : Le sujet (du II) est réellement intéressant (par contre il a fallu s’assurer qu’aucun élève n’est daltonien, il n’eût pas pu faire le II).

Voici les erreurs les plus intéressantes vues pendant l’heure du TP :

  • En raison d’une taille d’écran non standard, les cercles ressemblent à des ellipses. Bizarrement, cela gêne moins les élèves que les stagiaires CaRMetal... On constate que le problème se voit encore plus dans l’article wikipedia sur la méthode de Monte-Carlo.
  • Près de la moitié des élèves ont commencé par Math.random(0,1); au lieu de var x=Math.random(); ce qui donne l’impression que la notion d’affectation de variables, si elle est vite acquise, est vite oubliée aussi...
  • Dans la même veine, une élève qui n’a pas trouvé comment colorier un point en bleu a tapé Print("le point en bleu") confondant ainsi affichage et instruction. Cette vision un peu animiste de JavaScript montre tout de même que cette élève considère un programme comme une chaîne de caractères, ce qu’il est (du moins le code source) !
  • Une fois que x=Math.random(); est saisi, certains élèves ne savent pas comment obtenir une ordonnée aléatoire, et tentent un y=x qu’ils perçoivent bien comme faux (le nuage de points ne ressemble pas du tout à celui de l’énoncé). Rétrospectivement l’erreur n’est pas si surprenante que ça : Saisir que le second appel à la fonction Math.random() donne un résultat indépendant du premier, c’est déjà avoir une intuition de ce qu’est l’indépendance statistique (surtout que dans le cas présent, on devrait plutôt dire « pseudo-indépendants » puisque les nombres sont pseudo-aléatoires) !
  • Une erreur (signalée comme telle par CaRMetal) est de placer l’instruction a=Point(x,y) avant la création des variables x et y. Les meilleurs élèves tendent à mettre la notation du cours, avec des coordonnées séparées par un point-virgule, plutôt que la notation CaRMetal qui impose une virgule. Au moins ces élèves-là apprennent le cours !
  • Deux élèves ont modifié la boucle en quelque chose comme for(i=0;i<100;i) ce qui a provoqué un plantage de leur script. Ils ont alors émis le souhait que CaRMetal possède un bouton « halt » qui leur éviterait d’avoir à tout relancer. Un tel bouton peut assez aisément être simulé en JavaScript par quelque chose comme ceci :
    for (i=0; i<100; i=i){//on constate que la boucle est fausse: Impossible d'en sortir...
            x=Math.random();
            y=Math.random();
            p=Point(x,y);
            a=GetExpressionValue("a");
            if(a) {break;}
    }

Pour cela il faut un objet CaRMetal appelé « a », une boîte à cocher en l’occurence, qui permet lorsqu’on la sélectionne de quitter la boucle. Cette boîte à cocher doit avoir été créée auparavant sous CaRMetal et la ligne if(a) {break;} doit avoir été mise dans la boucle avant le test ! La figure ressemble alors à ceci la boîte « a » ayant été nommée « sortie de secours » :

CarMetal - 39.1 ko
la fin d’une boucle sans fin

Il va de soi que prendre ce genre de précautions systématiquement alors qu’elles sont en général inutiles, n’est pas du goût des élèves...

  • La meilleure pour la fin : Un élève a créé la figure avec les 100 points en rouge, et ne sachant pas comment écrire le test, a colorié en bleu, à la main, les quelques points qui ne sont pas dans le cercle ! En effet, la définition d’un disque n’était pas toujours connue des élèves, le cours étant peut-être un peu vieux...

Pendant le week-end, plusieurs élèves ont fini le II (mais une seule a réussi le III).

Voici trois exemples :

for (i=0; i<100; i++){
        x=Math.random()
        y=Math.random()
        a=Point(x,y)
        SetPointType(a,"cross")
        SetColor(a,"blue")
        M=Math.sqrt(x*x+y*y)
        if(M<=1){
                SetColor(a,"red")
        } else {
        }
}

C’est juste mais un peu complexe : Les 100 points sont systématiquement mis en bleu, puis si le test réussit, mis en rouge. Cet élève ne sait pas que le « else » est optionnel et a donc réussi à faire « avec les moyens du bord », ce qui est somme toute typique à la fois de la démarche algorithmique et de la démarche TP.

for (i=0; i<100; i++){
        var x=Math.random();
        var y=Math.random();
        p=Point(x,y);
        b=Point(1,0);
        c=Point(0,1);
        var d=if(i>100){
                Math.sqrt(x*x+y*y)
                SetColor(p,"red")
        } else {
                SetColor(p,"blue");
        }
}

CaRMetal signale une erreur de syntaxe à la ligne 7 (celle avec le « if ») : En effet, cet élève essaye d’assigner à la variable d, une boucle. Il est peut-être mûr pour la programmation objet, mais pas pour les TP de statistique...

a=Point(0,0);
b=Point(1,0);
c=Point(1,1);
d=Point(0,1);
Polygon("p","a,b,c,d");
c1=FixedCircle(a,1);
pr=0;//ligne manquante dans l'original
for (i=0; i<=100; i++){
        var x=Math.random();
        var y=Math.random();
        p=Point(x,y);
        SetPointType(p,"cross");
        v=Math.sqrt(Math.pow(x,2)+Math.pow(y,2));
        if(v<=1){
                SetColor(p,"red");
                pr++;
        } else {
                SetColor(p,"blue");
        }
}
Prompt("Pourcentage de point rouge "+pr);

En fait il manquait la définition de la variable pr et une parenthèse fermante dans le calcul de v. À part ça, cette élève est la seule à avoir réussi le III (avec une faute d’accord dans l’affichage final) et l’utilisation du fichier d’aide en ligne (pourtant en anglais) est probable (la construction de la figure au début, automatisée alors que l’énoncé attendait une manip CaRMetal). Pour autant, ce script n’est pas parfait puisque la boucle crée 101 points au lieu de 100...


Corrigé

Voici la version CaRMetal au format flash (les flèches vertes qui apparaissent parfois sont des pauses de la vidéo ; en cliquant dessus on peut passer à la suite ; de toute façon un clic sur la barre de défilement permet de retourner à la zone de la vidéo qu’on souhaite revoir) :

Et voici la version JavaScript, toujours au format flash :

Enfin, pour comparaison, la version Algobox :

AlgoBox
Présentation de l'algorithme :

Version Algobox de l'algorithme, avec coloriage conditionnel des points (donc utilisation du repère: L'utilisation d'un navigateur autre qu'IE est nécessaire...). Dans le cas présent, 10 000 points ont été tracés.

Tester l'algorithme :


(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)
Remarque : si les messages "Algorithme lancé" et "Algorithme terminé" n'apparaissent pas au bout d'un moment dans la zone ci-dessous, c'est que l'algorithme contient une erreur.

Résultats :

Code de l'algorithme :
1     VARIABLES
2       x EST_DU_TYPE NOMBRE
3       y EST_DU_TYPE NOMBRE
4       r EST_DU_TYPE NOMBRE
5       n EST_DU_TYPE NOMBRE
6       indice EST_DU_TYPE NOMBRE
7     DEBUT_ALGORITHME
8       n PREND_LA_VALEUR 0
9       POUR indice ALLANT_DE 1 A 10000
10        DEBUT_POUR
11        x PREND_LA_VALEUR random()
12        y PREND_LA_VALEUR random()
13        r PREND_LA_VALEUR sqrt(x*x+y*y)
14        SI (r<1) ALORS
15          DEBUT_SI
16          TRACER_POINT (x,y)
17          n PREND_LA_VALEUR n+1
18          FIN_SI
19          SINON
20            DEBUT_SINON
21            TRACER_POINT (x,y)
22            FIN_SINON
23        FIN_POUR
24      n PREND_LA_VALEUR n/10000*4
25      AFFICHER "La simulation donne pour valeur approchée de pi: "
26      AFFICHER n
27    FIN_ALGORITHME

Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 22 novembre 2017, 14h-18h, campus du Tampon, amphi 120 D
- Mercredi 7 février 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 7 mars 2018, 14h-18h, campus du Tampon
- Mercredi 4 avril 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 2 mai, 14h-18h, campus du Tampon
- Mardi 5 juin 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 6 juin, 14h-18h, campus du Tampon

Fête de la science

Campus du Moufia, 16 et 17 novembre 2017.
Thème : « La recherche à l’heure du numérique »

Semaine des mathématiques

Du 26 au 31 mars 2018.
Thème : « Mathématiques et mouvement »


Brèves

Notation au bac

lundi 11 décembre

Une nouvelle notation sera pratiquée à partir de la session 2018 pour les algorithmes au bac. Elle est décrite avec de nombreux exemples, ici.

Décès de Roger Mohr

mardi 27 juin

On sait bien que Nicolas Bourbaki n’était pas le nom d’une personne mais le pseudonyme d’un groupe. L’équivalent en informatique théorique est Claude Livercy, auteur de la théorie des programmes. Roger Mohr était un des membres de Claude Livercy.

À 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.

Statistiques

Dernière mise à jour

dimanche 10 décembre 2017

Publication

775 Articles
Aucun album photo
134 Brèves
11 Sites Web
132 Auteurs

Visites

504 aujourd'hui
1013 hier
2196757 depuis le début
41 visiteurs actuellement connectés