N.D.L.R A la lecture de cet article, Bernard Parisse a envoyé un courrier qui lui donne d’intéressants prolongements.
I. Introduction
Face à la nécessité d’enseigner la programmation en Python à nos élèves, et confrontés à la difficulté d’accès aux salles informatiques (souvent réservées par d’autres collègues, avec des ordinateurs défectueux etc..) nous avons organisé cet enseignement avec les calculatrices CASIO Graph 90+E.
Pour nos classes de première, qui n’ont que peu (ou pas) travaillé sur Python en seconde, mais dont les élèves ont déjà fait en seconde l’investissement dans une calculatrice graphique, le lycée a acheté un stock de calculatrices Casio Graph90+E.
Nous avons utilisé l’heure d’Aide Personnalisée (AP) sur laquelle, par rotation, tous les élèves de première (S et ES) vont s’inscrire. Avec un chèque de caution, nous prêtons pour les séquences de 6 semaines d’AP les calculatrices aux élèves afin qu’ils puissent mieux s’approprier le fonctionnement des calculatrices et en particulier du module Python par des usages répétés.
La première séance est destinée à faire découvrir le menu Python de la Casio Graph 90+E. C’est pourquoi j’ai guidé les élèves tout au long de leur découverte, le but étant qu’ils maîtrisent bien l’utilisation du clavier. Je n’ai donc pas proposé de fiche élève pour cette partie.
Pour toutes les autres séances j’ai fait des fiches élèves qui leur permettent de garder une trace écrite du travail qu’ils ont effectué sous Python.
Enfin j’ai indiqué aux élèves qu’ils pouvaient poursuivre leur travail sur ordinateur avec le logiciel Edupython : la calculatrice Casio Graph90+E fonctionne comme une clé USB et les transferts sont très faciles (voir la vidéo à partir de 21’’). Ils peuvent ainsi utiliser Python au centre de documentation ou chez eux. Des élèves ont d’ailleurs prévu de faire un programme en Python pour leur TPE et viennent à l’occasion me demander des conseils.
Après un cycle de fonctionnement de cet AP, les premiers retours sont positifs. Je vous propose ci-dessous la trame des premières séances, avec, pour chacune, un
commentaire sur les points positifs ou à améliorer.
Pour préparer ces séances je me suis appuyée sur :
II. À la découverte de Python, puis du shell (durée 1h)
Objectifs :
- Donner aux élèves une vue d’ensemble de Python
- Leur apprendre à manipuler leur calculatrice Casio Graph 90+E
- Utiliser les variables
Pour cette première séance les élèves ont besoin d’être guidés pour apprendre à manipuler avec aisance leur calculatrice. Je n’ai donc utilisé que ma fiche professeur et l’émulateur de la Casio Graph 90+E pour le déroulement de la séance.
Un peu d’histoire ...
Le nom de ce langage ferait référence aux Monty Python. On pourra remarquer le nom de l’environnement de développement IDLE (IDLE signifie « Integrated Development Environment ») qui fait aussi penser à Eric Idle, membre des Monty Python.
Programmation fonctionnelle
La syntaxe est assez simple, l’indentation (décalage d’une série d’instructions) délimite la portée des instructions. Ce langage permet beaucoup de possibilités et notamment de travailler de manière fonctionnelle.
1) Découverte de Python
Le principe de fonctionnement :
- Un éditeur dans lequel on écrit le programme
- Un interpréteur (console ou shell) qui permet de le faire fonctionner, mais qui permet aussi de tester des instructions, de faire des calculs etc...
2) Utilisation de l’interpréteur (SHELL)
Les élèves commencent par effectuer quelques calculs dans le Shell : 3+2 ; 5/4....
Puis je leur demande d’essayer aussi $\sqrt{9}$ ... il semble y avoir un problème. Pour traiter cette question et en général toutes les questions mathématiques, il faut au préalable importer un module mathématique.
Toutes les commandes et les symboles sont disponibles dans le
Je continue à faire effectuer quelques calculs dans le shell par les élèves, en particulier des calculs mathématiques :
Les programmes font souvent appel à des nombres aléatoires. Dans le catalogue on trouve les instructions utiles :
Si on veut générer un nombre aléatoire entier compris entre 1 et 10 (ne pas oublier
d’appeler d’abord le module de nombres aléatoires ; from random import*) :
Pour générer un nombre décimal compris entre 0 et 1 :
- Affectation des variables
Les variables peuvent être nommées par une lettre ou un mot. L’affectation se fait avec =. Les variables peuvent être de plusieurs types :- Numérique
- Chaînes de caractères
r est défini comme étant du texte grâce à la présence des guillemets.
L’opération r + 5 ne peut donc pas s’effectuer.
- Numérique
Astuce, il est possible de Copier/coller facilement une ligne et de changer de paramètre :
- Remonter sur la ligne en question
- Appuyer sur
- Test d’égalité
Exercices :
Affecter à $a$ la valeur 10, à $b$ la valeur $\pi$ .
Calculer $2ab$ puis $2a \cos b$. (bien noter qu’il faut taper 2 ∗ a ∗ b puis 2 ∗ a ∗ cos (b))
Tester 2 ∗ a + (cos(b)) ∗∗ 2 == 23 puis 2 ∗ a + (cos(b)) ∗∗ 2 == 21
En profiter pour observer la notation des puissances.
Affecter à $r$ un nombre aléatoire compris entre 1 et 50.
Affecter à $v$ le mot « Volume » et à $b$ le mot « Base » ou tous autres exemples permettant aux élèves d’apprendre à manipuler leurs claviers alphanumériques.
3) Réaction des élèves
Dès le premier contact les élèves ont été séduits par l’écran couleur de la Graph 90+E.
Durant toute la séance j’ai montré les manipulations à l’aide de l’émulateur, ce qui évite des explications trop lourdes.
La phase d’observation du menu Python s’est faite sans aucun problème : la présentation d’une vidéo permet d’animer agréablement le cours.
Pour l’utilisation du Shell, après le même attrait pour la vidéo, les premières manipulations ont tout de même été assez lentes .
Le passage entre l’alphanumérique majuscule ou minuscule et le clavier « normal » a pris un peu de temps. Dès que les élèves ont bien saisi que beaucoup de fonctionnalités étaient déjà pré-écrites dans le catalogue, et qu’ils ont bien utilisé le copier/coller, les saisies ont été beaucoup plus rapides.
Pendant la séance certains élèves sont sortis du Shell, puis y sont revenus. Quand ils ont voulu utiliser le nombre Pi ils ont eu un message d’erreur. Cela m’a permis de revoir l’importance du « from math import* ». Même problème avec le « from random import* ».
De retour dans leurs classes respectives, ils ont montré avec fierté à leurs camarades les calculatrices qui leur étaient prêtées, si bien que les élèves attendent avec impatience leur tour pour l’atelier Python...
III. Créer un programme (durée 1h)
1) La séance
J’en profite pour rappeler aux élèves l’utilisation du catalogue, du clavier alpha-numérique, du copier/coller.
a) Recopier le programme de la vidéo puis le tester :
Modifier le programme pour qu’il affiche $m = −2$ et $p = 5$.
b) Créer un programme qui renvoie l’image de $x$ par la fonction $f(x) = x^2 + 3$
c) Ecrire un programme qui affiche la valeur du discriminant d’un polynôme du second degré. Le tester avec $f(x) = x 2 + 5x + 6$
Ecrire un programme qui affiche la valeur du discriminant d’un polynôme du second degré.
Le tester avec $f(x) = x + 5x + 6$
d) On place p € sur un compte rémunéré à un taux t % par an. Ecrire un programme qui donne la somme disponible n années plus tard.
De quelle somme dispose-t-on si l’on place 1000€ pendant 2 ans à 3% ?
2) La réaction des élèves
Les élèves prennent de plus en plus d’aisance avec la manipulation de la calculatrice et ils commencent à prendre plaisir à programmer.
Ils ont encore le réflexe de m’appeler lorsque leur programme comporte une erreur mais je leur montre comment savoir à quelle ligne se trouve l’erreur et comment la corriger après réflexion. ( le message d’erreur indique en général la ligne à laquelle se situe l’erreur ou alors indique qu’il y a un problème d’indentation).
Certains élèves ont activé par erreur le mode insertion de texte avec
. Pour en sortir il suffit de refaire
.
Certains élèves sont très en avance ; je les invite alors à aider leurs camarades en difficulté ou à se lancer sur des programmes plus élaborés (certains élèves ont déjà de bonnes notions de programmation et prennent plaisir à le faire).
IV. La boucle For (1 heure)
1) La séance
Vidéo jusqu’à 3’26 :
a) Écrire un programme qui affiche tous les nombres pairs de 0 à 20.
ou
b) Créer une fonction « compteur » qui affichera tous les nombres pairs de 0 à 2n.
ou
Faire un programme qui affiche tous les nombres impairs de 0 à 2n+1. (pour les élèves qui sont en avance)
c) On place p € sur un compte rémunéré à un taux t % par an. Écrire un programme qui donne la somme disponible à la fin de chaque année pendant n années.
Le tester si l’on place 1000€ pendant 3 ans à 5% ?
Modifier le programme pour qu’il donne la somme disponible, uniquement la dernière année.
d) Créer un programme qui donne le tableau de valeurs de la fonction définie par $f(x) = x^2 + 3$ sur [a,b] (a et b entiers ) avec un pas de 1. Le tester sur [-10,10].
2) La réaction des élèves
La calculatrice renvoie automatiquement à la ligne avec l’indentation si l’on a bien saisi l’instruction For suivie de « :». Certains élèves n’utilisent pas le catalogue pour saisir l’instruction For et oublient les « :» ou bien ne font pas manuellement l’indentation.
Le message d’erreur lors de l’exécution du programme les rappelle vite à l’ordre et pour les programmes suivants l’erreur est vite corrigée.
C’est le cas en particulier pour l’exercice destiné aux ES : il reprend un programme déjà écrit en partie dans une séance précédente. Il n’y a plus qu’à le modifier...sans se tromper !
Les petits programmes de la boucle For sont ensuite écrits rapidement : le but n’est pas de faire de la virtuosité, mais juste un exemple de chaque commande.
V. L’instruction conditionnelle Si (1h)
1) La séance
a) Construire un programme qui prend comme entrée l’âge de l’utilisateur et qui indique s’il est majeur ou non
b) Construire un programme qui détermine les solutions d’une équation du second degré dans $\mathbb{R}$. (Cet algorithme a déjà été étudié en classe et il ne reste plus qu’à l’écrire en langage Python).
L’utilisation du copier/coller fait gagner beaucoup de temps....
Exécuter le programme avec :
a) $x^2 + 5x + 6 = 0$
b) $2x^2 + 4x + 2 = 0$
c) $x^2 +x+1=0$
2) La réaction des élèves
Le programme qui donne les solutions d’une équation du second degré intéresse beaucoup les élèves. Le programme donnant le discriminant ayant déjà été écrit les élèves peuvent le reprendre et le compléter.
Quelques fautes sont récurrentes cependant :
- L’oubli de l’instruction from math import* empêche le programme de fonctionner
- il faut écrire (−b − √d) /(2 × a) et non (−b − √d) /2 × a : l’oubli de la parenthèse génère une erreur dans le calcul des solutions.
Seuls les élèves très à l’aise finissent l’écriture du programme pendant le cours. Les autres doivent le finir chez eux. Mais ils sont armés pour le faire.
J’invite alors l’ensemble des élèves à peaufiner la présentation du programme pour le rendre plus attractif (rajouter du texte pour les réponses etc...).
VI. Conclusion
Ces séances ont permis aux élèves de découvrir la programmation en Python et de s’apercevoir que, passées les premières séances, le langage de programmation leur devenait de plus en plus familier et simple d’utilisation.
Cependant il m’a fallu rappeler à chaque séance que pour faire « tourner » un programme il faut le saisir dans l’éditeur ET, après avoir validé l’onglet RUN, rappeler la fonction utilisée avec ses paramètres (les confusions entre le nom du programme et le nom de la fonction utilisée sont tenaces).
J’ai ensuite poursuivi l’initiation des élèves avec des séances sur la boucle Tant que puis sur l’utilisation des listes.
Le chapitre sur les suites m’a permis de réinvestir en classe tout ce qui avait été vu en Python et de solidifier les connaissances des élèves.
Certes écrire un programme sur une calculatrice n’est pas aussi commode que sur un ordinateur, mais le transfert de programme en Python de la calculatrice vers l’ordinateur est aisé. Cela permet de travailler sous les deux environnements selon les opportunités.
Enfin et surtout les élèves s’aperçoivent qu’ils vont pouvoir tester les algorithmes proposés aux examens et les faire réellement tourner. Cela leur permettra surtout de corriger d’eux-mêmes leurs erreurs et de valider leurs réponses.