TP 2 d’algorithmique avec CaRMetal en Seconde

vendredi 11 septembre 2009
par  Alain BUSSER

Le TP 2 a été placé juste au début du cours sur les fonctions, et fut l’occasion de présenter les fonctions d’une et de deux variables sous l’angle « algorithmique ».

Voici l’énoncé du TP :

PDF - 67.3 ko
l’énoncé du TP

Le début du TP a été consacré à de brèves explications sur les commentaires (les choses qu’on peut écrire dans le programme en demandant explicitement à CaRMetal de ne pas les exécuter) et à un format type d’en-tête, avec référence explicite à la licence libre CeCILL. Un des élèves, à qui on ne la fait pas, a spontanément choisi de mettre son programme sous licence libre GPL, choix d’ailleurs très logique.

Ensuite les élèves ont sauvegardé leur en-tête sous le nom nomdelélève1.js pour usage éventuel ultérieur. Il sera désormais possible de mettre en ligne leurs productions, ce qui pour l’instant présente peu d’intérêt vu la brièveté de leur production, mais encore une fois, les bonnes habitudes se prennent tôt...


Fonction d’une variable

Dans le premier exercice, il s’agissait de créer un programme qui, après avoir demandé à l’utilisateur un rayon, calcule et affiche le volume de la boule correspondante. Il se déroule donc en trois étapes :

  1. Entrer une donnée. Il s’agit d’une affectation de variable qui n’est plus faite dans le corps du programme mais après une opération d’entrée.
  2. Calculer le volume à partir de cette donnée. C’est, algébriquement parlant, l’étape la plus intéressante.
  3. Afficher le résultat. Cette opération avait déjà été réalisée lors du TP précédent.

Le fait qu’une opération d’entrée est une affectation de variable a été difficilement perçu par certains élèves. Le choix du texte qui accompagne l’entrée de donnée a été souvent particulièrement pertinent quoique parfois entaché de coquilles... De ce point de vue, l’outil informatique est nettement plus pratique que la calculatrice graphique, dont l’outil texte est si pénible qu’on hésite à s’en servir.

Le calcul de volume me semblait a priori l’étape la plus difficile du TP, la syntaxe de JavaScript n’étant pas la plus simple. Une élève a par exemple essayé de taper

v=4*Math.PI*r^3/3

car cette notation lui semblait plus naturelle que

v=4*Math.PI*Math.pow(r,3)/3;

attendue. En réalité c’était visiblement l’étape la plus facile du TP. Ceci est dû à ce que malgré la relative complexité du langage, les élèves n’ont eu qu’à cliquer sur des icônes très parlantes et ne leur restait à faire qu’une retouche sur un texte. Plusieurs élèves ont eu du mal à saisir que le calcul devait correspondre à une affectation de variable (la partie « v= ») et le nom le plus souvent choisi pour la variable contenant le volume a été result ce qui est finalement logique vu le rôle joué par cette variable dans le corps de la fonction. Les erreurs de syntaxe ont été vite corrigées par moi mais ont semblé parfois très mystérieuses pour les élèves. Deux exemples :

  • L’oubli du facteur 4 dans le produit est signalé comme une « erreur de syntaxe » sans plus de détail (mais le numéro de la ligne est donné). Il a fallu que je signale que le signe de multiplication est censé être précédé, et pas seulement suivi, d’un facteur...
  • L’oubli du symbole de multiplication entre 4 et Math.pi donne comme message « il manque » ;« après une instruction », qui là aussi nécessite un peu d’entraînement préalable (au moins à l’algèbre !)

Plusieurs élèves ont été surpris que l’exécution du programme, pourtant sans message d’erreur, ne produise pas d’effet visible : Ils avaient oublié la troisième étape, et s’attendent donc à ce que les affichages de résultat par les programmes soient automatiques... On note que l’oubli de l’affectation d’une variable v (il manque le « v= » au début de la ligne) ne donne aucun signe visible, puisqu’il n’y a pas d’erreur de syntaxe. À cet égard, l’obligation de déclarer des variables comme dans Algobox est une bonne chose (les élèves évoluent dans un cadre restreint qui empêche l’apparition de ce genre d’erreur).

Une erreur non prévue : En cliquant sur « Prompt », l’exemple proposé par CaRMetal est l’affichage d’une chaîne de caractères, entre guillemets. Le remplacement de cette chaîne par « v » (avec les guillemets) provoque alors l’affichage, non pas de v, mais du mot d’une lettre « v », ce qui n’est pas ce que désirait l’élève ! Il y a une distinction à faire entre le nom d’une variable (le texte gravé sur le tiroir) et son contenu (ce qu’il y a dans le tiroir, ici un nombre).

Les élèves qui avaient fait le choix d’utiliser la même variable pour stocker le rayon, le volume et même le résultat de l’affichage (inutile) ont eu du mal à s’en dépêtrer. Le choix de r ou x pour le rayon et V (ou result) pour le volume s’est montré le plus efficace.

Voici un exemple d’une production d’élève, obtenue presque sans aide faute de temps de ma part :

/* Programme volume
Auteur:Noéline
Date:11/09/09
Ce programme est placé sous license CeCILL
Le texte de cette licence peut se lire ici:
http://www.cecill.info/License CeCILL V2-fr.html */

//fonction d'une variable
x=Input("Entrer le rayon d'une sphère");
v=4*Math.PI*Math.pow(x,3)/3;
Prompt(v);

(le commentaire est une production spontanée de l’élève).


Fonction de deux variables

Le seul solide classique dont le volume s’obtient à partir d’une seule variable est la boule, en raison de son extrême symétrie. Pour le cas d’un cône, le TP commençait par une question de cours [1] puis un travail analogue au précédent mais avec l’entrée de deux variables. Mais pris par le temps, la moitié des élèves n’ont pas pu faire cette partie du TP. Voici ce que l’un des rapides à réussi à faire :

r=Input("entrer un rayon r, en centimètres");
h=Input("entrer un autre nombre, une hauteur h, en centimètre");
v=Math.PI*Math.pow(r,2)*h/3
Prompt(v);

La notion de fonction de deux variables a paru très naturelle en cours, où j’ai signalé que le pgcd est une fonction des deux entiers auxquels on s’intéresse.


Évaluation du TP

L’évaluation par compétences de ce TP a été suffisamment simple pour être faite pendant le déroulement même du TP, en cochant des cases sur un fichier au format OpenOfficeCalc (tableur). Ce qui a notamment permis de rédiger ce compte-rendu le soir même du TP. Mais le temps ayant manqué pour faire la deuxième partie du TP, seuls l’exercice 1 et la question de cours ont été notés.

Avec ça le diagramme en bâtons des notes est plutôt flatteur :

Le corrigé du TP figure partiellement dans le cours sur les fonctions. La notion de concaténation de chaînes n’a pas encore été abordée, faute de temps.


Conclusion

Ce TP est un peu trop long (il faudrait compter environ une heure 5 ou une heure 10, ou enlever les remarques sur l’en-tête). Il serait intéressant de comparer avec la durée d’un TP analogue à celui-ci sur calculatrice.

L’aspect algébrique, particulièrement important dans ce contexte [2], a été bien géré par les élèves.

La notion d’affectation de variables est visiblement plus complexe à appréhender que prévu, le simple changement de contexte ayant tendance à faire oublier qu’un calcul en JavaScript, est avant tout la modification d’une variable.

Il se montre nécessaire de faire des TP courts et de s’entraîner avant à gérer les erreurs de syntaxe. Le même problème s’était posé les années précédentes avec les calculatrices graphiques, où les messages d’erreurs se terminent systématiquement par un choix entre « GoTo » et « Cancel », les élèves optant sans hésiter pour la deuxième option, et préférant appeler le prof que d’essayer de trouver ce qui ne va pas.

Les deux principaux buts de ce TP (révision des formules de volume, et présentation des fonctions comme machines à transformer un nombre en un autre nombre) ont été atteints de façon plutôt satisfaisante.

La meilleure illustration de l’enthousiasme des élèves pour ce TP est cette question posée par l’un d’eux : Comment trouve-t-on le code unicode pour le symbole de l’infini ?


Pour comparer

Voici la version Algobox de la solution du premier exercice, donnée ici à titre de comparaison :

Présentation de l'algorithme :

Version Algobox du premier des deux exercices ci-dessus.

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ésultat :

Code de l'algorithme :
VARIABLES
  rayon EST_DU_TYPE NOMBRE
  volume EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  LIRE rayon
  volume PREND_LA_VALEUR 4*Math.PI*pow(rayon,3)/3
  AFFICHER volume
FIN_ALGORITHME

le TP suivant (numéro 4)


[1Les ordinateurs de la salle où s’est déroulé le TP n’étaient pas connectés à Internet

[2exemples d’exercices faits en module : calculer \frac{1+\frac{1}{5}}{1+\frac{1}{4}}, ou dire ce que contient la variable x=2+3*4


Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 8 février 2017, 14h-18h, campus du Tampon, amphi 120 B
- Mercredi 8 mars 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mercredi 12 avril 2017, 14h-18h, campus du Tampon
- Mercredi 3 mai 2017, 14h-18h, PTU, Saint-Denis, salle S23.6
- Mardi 13 juin 2017, 14h-18h, campus du Tampon
- Mercredi 14 juin 2017, 14h-18h, PTU, Saint-Denis, salle S23.6

Semaine des mathématiques

Du 23 mars au 4 avril 2017 dans l’académie de la Réunion.


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

jeudi 23 février 2017

Publication

732 Articles
Aucun album photo
125 Brèves
11 Sites Web
126 Auteurs

Visites

900 aujourd'hui
1162 hier
1929005 depuis le début
31 visiteurs actuellement connectés