Voici le sujet du TP (on remarquera que les élèves étaient en situation d’autonomie, le choix de l’outil leur étant plus ou moins laissé, avec 4 suggestions) :
Sans doute influencés par la préférence de leur professeur, les élèves ont presque tous choisi CaRMetal, la seule exception étant un élève doté d’une calculatrice Ti82Stats, et qui a d’ailleurs assez vainement tenté de s’en servir en lieu et place de JavaScript.
Plusieurs élèves ont d’emblée entré ceci :
var a;
var b;
var c;
Réflexe d’algorithmiciens... Puis la situation a évolué en
var a=Input("Entrez a");
var b=Input("Entrez b");
var c=Input("Entrez c");
Après c’est devenu moins facile, en particulier parce que devant un clavier, les élèves n’acceptent d’ouvrir un cahier, fût-ce celui du cours, que si on les y force...
Alors un élève a tenté de regarder comment était fait le fichier du cours. Un autre a tenté un
var a=Input("Entrez a");
var b=Input("Entrez b");
var c=Input("Entrez c");
var x=Input("x");
qui revient à demander à l’utilisateur de calculer l’abscisse du sommet de la parabole et de l’entrer à la main ! C’est très analogue à ces élèves qui, lors de l’épreuve expérimentale du Bac S, remplissent le tableur cellule après cellule grâce à la calculatrice !
Voici quelques copies d’élèves (souvent incomplets, il semble y avoir eu peu de travail à la maison) :
Copie 1
var a=Input("Entrez a");
var b=Input("Entrez b");
var c=Input("Entrez c");
Println(-b/(2*a));
Plusieurs élèves ont d’abord entré -b/2*a
au lieu de -b/(2*a)
ce qui les a parfois mené jusqu’au bout de l’heure pour comprendre pourquoi « ça ne marche pas » (non conformité avec l’exemple du livre : L’erreur est-elle dans le livre, dans la formule du cours ou dans celle du script ?).
Copie 2
var a=Input("Entrez a");
var b=Input("Entrez b");
var c=Input("Entrez c");
Println(-b/(2*a));
Println(c-b*b/(4*a));
Cette version a été assez répandue ; on constate la laconicité des affichages et le blocage sur les tests.
Copie 3
var a=Input("Entrez a");
var b=Input("Entrez b");
var c=Input("Entrez c");
var x=c-Math.pow(b,2)/(4*a);
Println("la valeur extrême de la fonction x est "+x);
La réponse à la question 3 sans passer par la question 2 témoigne d’une confusion entre x et y. Là encore, pas de tests (certains ont essayé de faire les tests à la main sans passer par le JavaScript).
Copie 4
//function trinômes et paraboles(a,b,c){
var a=Input(" a ");
var b=Input(" b ");
var c=Input(" c ");
if (a==0) {Println(" la fonction est affine ");
} else {
//d=a*(x*x)+b*x+c;
e=-(b/(2*a));
f=c-((b*b)/(4*a));
}
Println(" la fonction atteint son extremum en un point de coordonnée ("+e);
Print(";"+f);
Print(")");
if(a<0) {Println(" l'extremum est le maximum de la fonction ");
}
if (a>0) {Println(" l'extremum est le minimum de la fonction ");
}
//}
On constate
- L’absence du else : Ignorance de cette instruction ou choix délibéré pour éviter le cas a=0 ?
- Cet élève est le seul à avoir pensé au cas a=0 qui ne donne pas un trinôme ;
- Une ébauche de définition d’un objet trinôme au sens de la programmation objet (lignes devenues des commentaires).
Écrire un objet trinôme est possible, et même très probablement à la portée d’un élève de Seconde :
Bien entendu, cette copie qui est la seule complète, a eu la note de 20 ; en plus l’élève a fini avant la fin de l’heure.
Une fois de plus, obliger les élèves à réinvestir dans une situation active (de programmation) plutôt que dans des exercices répétitifs (mais nécessaires : Il y aura aussi quelques séances Wims là-dessus) est très rentable, le cours pouvant servir à aider les élèves à réussir le TP, ce qui a au moins l’avantage d’aider les élèves à le regarder, ce cours, ce qui en milieu d’année scolaire, est loin d’être automatique !
Commentaires