La réforme du BAC Agricole est en marche. Pour vous raconter un peu ma vie, et le fonctionnement des lycées agricoles, nous allons de la 4ᵉ au BAC dans mon établissement. On peut monter jusqu’aux BTS et aux écoles d’ingénieur. J’enseigne principalement en troisième les maths et l’info, et pour compléter, je fais la première et la terminale. La réforme induit essentiellement deux nouveautés. La fin de l’examen terminal au profit de CCF, l’introduction de Python au programme. La grande difficulté va être de trouver du sens à Python quand la Numworks fait déjà beaucoup. Mon premier objectif sera de me remettre à niveau, et de présenter des activités simples aux élèves. Nous commençons par faire un carré en Python.
Préambule
J’insiste bien par me mettre au niveau BAC PRO. Car, bien évidemment, ce genre d’article attire tous les trolls de l’internet qui vont expliquer qu’on peut faire autrement, mieux. Pour se mettre à niveau, j’ai choisi le seul manuel actuellement disponible, qui se trouve être piloté par l’inspecteur. Vous noterez que j’y mets le lien, le backlink est offert 😉
Les mathématiques, c’est particulièrement compliqué pour les BAC PRO. Des lacunes, des énoncés denses, du texte, des problèmes de logique. La programmation rajoute une complexité de plus. Le programme quant à lui n’a pas diminué, au contraire. Nous n’avons que deux heures par semaine pour faire plus. Il s’agit donc de faire une approche de Python sans noyer les élèves. Je me calerai donc sur le niveau du manuel et apporterai des activités complémentaires et rapides. En effet, les exemples dans le livre sont assez nombreux, ici ça me permet de faire une synthèse.

Faire un carré en Python
Le langage Python fonctionne avec certaines bibliothèques. La bibliothèque pour faire un dessin, c’est turtle. Concrètement, si vous vous voulez faire des lignes, vous êtes forcé de dire que vous allez utiliser la bibliothèque turtle. C’est pareil que pour dire qu’on va faire Pythagore, on a besoin d’un triangle rectangle. Ainsi, votre programme commencera de la façon suivante.
from turtle import *Trois, instructions différentes pour dessiner. forward(distance), permet de se déplacer de la distance donnée vers l’avant. left(angle) permet d’orienter vers la gauche et right(angle) vers la droite. Je trouve que la notion n’est pas forcément simple, comme ça, c’est pas mal. On voit qu’en tournant deux fois sur la gauche, on a un angle droit à 90° par rapport au premier trait.

Ainsi, pour faire un carré en Python de 150 de côté, on exécutera le programme suivant :

On remarquera deux points. Le premier, c’est la fermeture du programme par done(). Il sera nécessaire de l’utiliser dès qu’on fera appel à la bibliothèque turtle. Le second point, c’est que j’ai fait le choix de left. Cela veut dire que j’avance, je tourne à gauche, donc je monte, et ainsi de suite. J’obtiendrai un résultat similaire en faisant right sauf que je partirai vers le bas. Voici le résultat avec deux carrés qui se succèdent. Le premier en partant à gauche, le second en partant à droite.

Utiliser une boucle
La boucle est connue depuis la classe de troisième avec Scratch. L’élève est donc capable de comprendre rapidement qu’avec un carré, on a une répétition de quatre fois les choses.

Ce qu’il faut comprendre dans la syntaxe.
- La boucle sera définie par l’instruction for i in range(nombre de fois qu’on veut boucler): On voit qu’on boucle quatre fois car tout revient quatre fois dans le carré
- La syntaxe est précise, si on ne met pas les deux points ça ne fonctionne pas.
- De la même manière, le contenu de la boucle est réalisé par une indentation, c’est-à-dire un espace. Pour faire propre, on utilise la touche tabulation du clavier. On voit que seules les instructions forward et left sont dans la boucle.
Réaliser un carré en Python avec une longueur demandée
Plutôt que de changer à la main la longueur du côté, il peut être intéressant de demander à la personne la longueur qu’elle veut. Voici le programme correspondant, attention, il est faux.

Je viens de définir la variable « cote « . On notera que je n’ai pas mis de caractères spéciaux ou de chiffres. Il est possible de mettre des chiffres, mais pas au début. Pour faire simple, on va éviter des noms étranges pour des programmes simples.
L’expression input en anglais signifie mettre à l’intérieur. On met donc dans « cote » ce que va saisir l’utilisateur à la question concernant la longueur de côté. Le problème c’est que Python considère qu’il s’agit d’une chaine de caractère sans savoir qu’il s’agit de chiffres. On va donc rajouter eval, pour faire comprendre à Python que l’utilisateur a fait une saisie d’un nombre. Soit :

Python théorème de Pythagore
Le théorème de Pythagore est un théorème qu’on a répété en boucle en quatrième et en troisième. La difficulté mathématique n’intervient donc pas ou peu. Pour mémoire, on peut trouver les rappels ici. Avant de se lancer dans la programmation Python à proprement parler, on va faire de l’algorithmique. C’est intéressant, car c’est de l’abstraction pour les élèves, on les force à manipuler sans chiffre.
Les deux cas du théorème de Pythagore, sont les suivants. On cherche l’hypoténuse, on me donne l’hypoténuse.

On va donc interpeller celui qui lance le programme pour lui demander si on lui donne c ou s’il le cherche. S’il cherche c, il doit donner a et b, si on lui donne c, il doit donner c, a ou b. Dans le cas numéro 1, on aura donc comme calcul :
Dans le cas numéro 2, on aura si on cherche la valeur de a qui sera arbitraire, car a ou b, c’est pareil.
Première approche
La réalisation de la première partie va ressembler à ceci.

Qu’apprend-on dans ce nouveau programme ? Dans le carré, nous étions obligés d’importer la bibliothèque turtle, ici, nous sommes obligés d’importer la bibliothèque math. Cela permet de faire la racine carrée, ici sqrt. sqrt pour square root en anglais.
On notera aussi la double *, **. L’étoile, on le sait depuis les tableurs, il s’agit du symbole de la multiplication, ** correspond à la puissance.
Enfin, l’introduction de la notion de condition. if en anglais qui veut dire si, else qui veut dire sinon. On notera la syntaxe précise avec les deux points à la fin. Le == pour l’égalité. On a de la même manière la possibilité de faire <, >, <=, >= et != pour différent. On voit que le = est de façon systématique à droite.
Quelques explications sur le elif. J’aurais pu me contenter de dire que si je ne connais pas l’hypoténuse, forcément cela veut dire que dans le cas contraire, je ne le connais pas. J’ai voulu faire un peu plus propre en vérifiant que l’utilisateur tape bien oui ou non. Il faudrait aller plus loin bien sûr. Noter une erreur si l’utilisateur ne rentre pas des valeurs numériques. Vérifier que l’hypoténuse est le côté le plus grand.
Faire mieux
Je vais tracer le triangle rectangle correspondant. Pour cela, je me propose de considérer que a est horizontal, b est vertical. L’angle droit est au point de coordonnées (0;0). Ainsi, je vais placer (a;0) et (0;b). Il me suffira de relier ces points pour obtenir le triangle en vraie grandeur.
Pour tracer, je dois importer une nouvelle bibliothèque. matplotlib. Voici le nouveau programme

Le fonctionnement n’est pas forcément évident, mais une fois qu’on a compris, ça passe tout seul. Comme on peut le voir, j’ai défini deux nouvelles variables. X et Y. Les X sont les abscisses, les Y sont les ordonnées. Il y a donc la correspondance entre la ligne du haut et la ligne du bas. Au départ, je commence à (0;0), je vais ensuite vers le haut à (0;b), je redescends jusqu’à (a;0), je reviens enfin à (0;0).
Le « r– » signifie que c’est du rouge, et le lw=2 qu’on a une taille de deux. Enfin, le plt.show() permet d’afficher le triangle.
Conclusion
- L’élève sait désormais utiliser la notion de puissance **, la racine carrée sqrt
- L’élève sait aussi utiliser la notion de condition avec if, elif, et else
- Enfin, l’élève sait utiliser plt.plot pour tracer des segments entre des points.