TP 1 d’algorithmique avec CaRMetal en Seconde

mercredi 2 septembre 2009
par  Alain BUSSER

La classe « cobaye » a été la Seconde ISI 1 du lycée Roland-Garros. Lors de cette première session, les élèves découvraient

  1. la salle d’informatique
  2. les TP de maths
  3. CaRMetal
  4. la programmation
  5. et le langage JavaScript

ce qui n’est pas rien. Mais le TP était plutôt court (en moyenne moins d’une demi-heure).

Objectif du TP


Il s’agissait donc de « lancer » les élèves de Seconde ISI vers la programmation [1]. Il s’agissait également de montrer sur des manips la notion d’affectation de variables, et leur modification. Les objectifs suivants étaient visés :

  • familiariser les élèves avec l’environnement informatique du lycée ;
  • les familiariser également avec le logiciel CaRMetal ;
  • montrer sur des exemples ce qu’est affecter une variable.
  • préparer à des sujets de type DS (donc sans ordinateur devant eux [2]) ;
  • introduire brièvement (par nécessité) la notion d’affichage de données.

Un document d’introduction au langage JavaScript a été distribué aux élèves quelques jours avant le TP ; le voici au format pdf (cliquer-droit pour le télécharger) :

introduction au langage javascript

Et voici le sujet du TP, avec des espaces pour mettre les réponses et le nom de l’élève :

le sujet du TP 1

Déroulement du TP

Plusieurs élèves comprennent qu’il s’agit de recopier dans l’éditeur de CaRMetal, tous les scripts qui sont dans les cadres, et ne lisent pas le reste. Ceux-là sont très rapides mais ne font pas tout le TP...

La première question (afficher une variable qui a été créée mais pas affectée) pose problème, le mot « undefined » n’évoquant pas grand-chose aux élèves [3].

Le TP se corse avec les modifications de variables, même si la notation « = » est plutôt bien comprise par les élèves. Par exemple, avec

var x=7 ;
x=x*x ;
Prompt(x) ;

qui implémente la suite d’instructions suivante :

  • $x \leftarrow 7$
  • $x \leftarrow x^2$
  • afficher $x$

s’il est évident pour tout le monde qu’après la première ligne, est égal à 7, trois élèves n’ont pas immédiatement perçu qu’ensuite x était modifié, et plusieurs autres ont eu du mal à saisir que x était remplacé par son carré (c’est le même x qui intervient comme facteur à gauche et à droite du « * », mais pas le même x à gauche du « = »). En fait on entre dans le domaine de la logique temporelle puisque la proposition « x=49 » est initialement fausse et finalement vraie.

Au début de la deuxième page, est introduite la notation « x++ » pour l’incrémentation. Celle-ci a, de façon quelque peu rassurante pour moi, posé problème : dans x=x+1 il y a un verbe « on met dans » représenté par le signe « = » (le sujet étant x+1 et le complément x). Mais la notation « x++ » ne montre pas de verbe évident ; aussi ai-je vu des « x=x++ » ou « x++=1 » somme toute très logiques. La plupart des élèves ont effectivement appelé « l’examinateur » comme c’était demandé, mais plusieurs ne l’ont fait que lorsque je leur ai montré la partie du TP non faite...

L’exercice

var x=5 ;
x=2*x ;
x=x-3 ;
x=x*3 ;

m’intéressait particulièrement car il est pratiquement indépendant de la machine (et peut donc être l’objet d’un sujet de DS). Les plus rapides ont commencé par protester « ce programme ne fait rien », ce qui est faux. Avant de leur suggérer d’ajouter quelque chose pour voir ce qu’il fait, j’ai proposé qu’ils repassent le film des évènements, mentalement, avant de vérifier avec un Prompt(x) leur conjecture.

Expression de leur raisonnement dans la logique de Hoare

  • $\left\lbrace x \leftarrow 5 \right\rbrace \Rightarrow x=5$
  • $x=5 \wedge \left\lbrace x \leftarrow 2\times x \right\rbrace \Rightarrow x=10$
  • $x=10 \wedge \left\lbrace x \leftarrow x-3 \right\rbrace \Rightarrow x=7$
  • $x=7 \wedge \left\lbrace x \leftarrow 3\times x \right\rbrace \Rightarrow x=21$

Les élèves pourraient rédiger cela, si c’était demandé, par des phrases en français, telles que « la deuxième ligne double x, donc après la deuxième ligne, x contient 10 ».


Le dernier exercice est très analogue au précédent, sauf qu’il comprend la litigieuse notation x++ hors programme. Mais l’élève le plus lent a complété le TP en moins d’une heure.

La question finale est à rédiger à la maison et avait été précédée la veille de deux exercices sur les équations ($x^2=49$ et $x^2+3=3$).

Environ la moitié des élèves ont montré un énorme intérêt pour ce sujet, et pour les occuper pendant que les plus lents finissaient le TP, je les ai envoyés sur la présente rubrique, où ils ont consulté le document « CarScripts », et copié-collé quelques exemples. C’est visiblement la géométrie dynamique qui les a le plus intéressés.


Correction du TP


Bien que la simplicité du barême soit discutable, le TP est relativement facile à noter, puisque les premières questions sont vraies ou fausses sans justification, et que seul le dernier exercice nécessite une rédaction :

  • 2 points pour chacune des trois premières questions, soit 6 points pour la première page ;
  • 4 points pour chacune des questions suivantes soit 8 points (vite corrigé, la rédaction n’étant pas demandée) ;
  • 6 points pour la résolution de l’équation, soit un point par solution et 4 pour la factorisation de $x-x^2$ ;

ce qui donne une note sur 20.


Résultats

Outre une élève absente pour cause de grippe A, plusieurs élèves ont décidé de sécher le TP, et n’ont pas réalisé qu’on pouvait le faire à la maison sans CaRMetal, sauf la première question. À part cela, les notes vont de 14 à 20, selon la réussite de la résolution de l’équation $x=x^2$. Il y a

  • ceux qui ont écrit un programme JavaScript pour tester l’égalité entre x et x*x
  • ceux qui ont trouvé que seuls 0 et 1 sont solutions, sans réussir à justifier que ce sont les seules
  • ceux qui ont factorisé $x-x^2$ sans savoir quoi faire après
  • et un seul qui est arrivé au bout de la résolution de cette équation.

Voici le diagramme en bâtons des notes obtenues à ce TP :

La moyenne du TP est 14,2 ce qui est une plutôt bonne manière de commencer l’année !


Transformation de l’essai

Ce TP a naturellement mené à un contrôle (pas uniquement sur la programmation) dont voici le sujet :

sujet du contrôle

La question sur la programmation était notée sur 6 points et voici le diagramme en bâtons des notes sur 6 :

Avec une moyenne de 4,8 sur 6 parmi les 26 élèves présents (celle qui a la grippe A est toujours malade...)

Le TP suivant (numéro 2) Le TP 3

[1L’algorithmique est la science des algorithmes, c’est-à-dire de suites d’instructions menant à la résolution de problèmes. Cette étude est théorique, de haut niveau. Ce qu’on fait en Seconde, c’est de la programmation et pas de l’algorithmique. Il y a entre l’algorithmique et la programmation, la même différence qu’entre Stradivarius et Paganini.

[2D’après les instructions lues aux candidats au bac, aucune limite de dimension n’est imposée à la calculatrice, on demande seulement que celle-ci soit autonome et non munie d’imprimante. Dès lors que leur batterie permet ladite autonomie, les « ultraportables » sont donc de facto autorisés aux épreuves du bac. Pour peu qu’on y ait préalablement installé des logiciels tels que xcas, ils sont donc à la fois plus puissants et moins chers que les calculatrices graphiques haut de gamme...

[3L’utilisation de « Println » plutôt que « Prompt » pour aficher les valeurs des variables eût été plus heureuse, la fenêtre de « prompt » étant munie d’un titre qui distrait les élèves. Mais ils s’y sont vite fait.


Commentaires