N.D.L.R : Cet article pourra évidemment inspirer les collègues enseignant en SNT. Mais son ambition est de s’adresser surtout à l’ensemble des élèves de Seconde, au travers des activités transversales de cette classe.
Présentation des activités
Voici 5 activités visuelles de programmation en Python qui couvrent les notions transversales de la classe de seconde générale et technologique.
Deux d’entre elles utilisent le module turtle descendant du langage Logo qui initie depuis les années 60 les enfants à la programmation. Les trois autres s’appuient sur le module pixel, développé par l’université de Lille 3, qui permet d’obtenir des images pixelisées évolutives (une présentation de ce module est proposé en annexe).
Ces activités sont présentées dans l’ordre où je les propose en classe. Seule une partie de mes élèves font les deux dernières.
- le TP Space invaders est mon premier TP de l’année scolaire de seconde, il introduit de façon détaillée les notions de variable, boucle bornée (boucle for) et de fonction. Une partie de mes élèves voient toutes ces notions dès la première heure, mais deux heures sont nécessaires pour que ce soit le cas d’une majorité d’élèves. Il utilise le module pixel.
- le TP Fond marin porte également sur les notions de variable, boucle bornée (boucle for) et de fonction. Il peut servir à parler de la notion de modularité qui est plus développée dans le TP immeuble. Il utilise le module turtle en proposant des dessins un peu plus élaborés que les formes géométriques habituellement proposées. Il insiste sur la variable utilisée lorsqu’on utilise une boucle for. En limitant le nombre de lignes de code utilisé, il force à utiliser cette variable au lieu d’en définir une nouvelle et insiste sur les valeurs que prend cette variable à chaque appel. Contrairement à ce que je craignais, mes élèves n’ont pas été gênés par le côté répétitif de cette activité.
- le TP Rantanplan est un exercice classique qui permet d’obtenir une image du triangle de Sierpinski à partir du dessin de milieux successifx. Cette version utilise le module pixel. Les notions utilisées sont la variable, la boucle et la conditionnelle. Cela permet également d’utiliser la formule des coordonnées du milieu de 2 points.
- le TP Coquillage tueur est inspiré de l’article d’Accromath : des coquillages aux pelages. Il fait suite a une activité débranchée que l’IREM de Besançon avait proposée lors d’une fête de la science aux classes de primaire et qui avait beaucoup plu. Il est d’ailleurs souvent nécessaire de passer par le papier pour que les élèves comprennent et appliquent correctement l’algorithme proposé. Il utilise le module pixel et porte sur les notions de variable, de boucle for et de conditionnelle. On peut également s’en servir pour parler de la notion de suite (en effet chaque ligne est construite à partir de la précédente).
- le TP Immeubles est né d’une idée d’Adrien Willm. Il est le pendant du TP Fond marin : dans chaque cas, le programme principal utilise des fonctions définies dans un autre fichier. Dans le cas du TP Fond marin, les élèves écrivent le programme principal et n’ont besoin que de regarder la documentation associée aux fonctions déjà définies. Dans le TP Immeubles, les élèves doivent écrire les fonctions intermédiaires ce qui les obligent à respecter leur spécifications, car sinon les fonctions qui les appellent ne produisent pas le résultat attendu. Ce TP utilise également le module turtle, il porte sur la notion de variable, de boucle, de conditionnelle et de fonction.
TP Space invaders
Le but de ce Tp est d’écrire un programme avec le langage Python qui permet de dessiner un ensemble de space invaders colorés.
TP Fond marin
Le but de ce TP est de reproduire le fond marin suivant
en travaillant :
- sur les boucles for et notamment les variables introduites par ces boucles,
- les appels de fonction et notamment leurs arguments qui sont décrits dans leurs prototypes
et en limitant le nombre de lignes du programme.
Dans ce TP vous ne devez rajoutez aucune instruction setposition, goto, setx, sety, setheading.
I Présentation des fichiers de ce TP
Téléchargez Fond_marin.zip, puis décompressez-le dans votre dossier personnel. Un dossier Fond_marin apparaît dans lequel il y a 4 fichiers.
Vous ne modifierez et n’exécuterez que progprinc.py.
Exécutez progprinc.py, vous devez voir :
II Le programme principal
Afin que la tortue dessine plus vite, n’hésitez pas à commenter les parties du programme sur lesquelles vous ne travaillez pas.
TP Rantaplan
Le but de ce TP est de dessiner une figure géométrique étonnante en suivant une règle de construction très simple.
TP Coquillage tueur
Certains coquillages de la famille des conus ont des motifs très étonnants
qui rappellent la fractale appelée triangle de Sierpinski
Le but de ce Tp est d’essayer de simuler à l’aide du langage Python les motifs de ces coquillages.
TP Immeubles
Le but de ce Tp est de dessiner des rues avec le module turtle.
Pour cela, on va utiliser de nombreuses fonctions définies dans différents fichiers.
Complétons les fonctions
Remarque générale : pour tous les motifs sauf l’étage, la position de la tortue au début et à la fin du dessin, ainsi que son orientation (vers la droite) est exactement la même. La tortue revient donc à son point de départ.
Annexe : Présentation du module pixel.py
Le module pixel.py a été développé par l’université de Lille 3. Il permet d’obtenir des images pixelisées évolutives.
Voici une vidéo présentant les principales fonctions de ce module que nous utiliserons dans nos programmes
Tout d’abord pour utiliser le module pixel.py, on écrit :
from pixel import *
au début du fichier qui appelle des fonctions de pixel.py.
Les fonctions appelées sont :
- initialiser permet d’ouvrir une fenêtre contenant de gros pixels, elle a 3 arguments : le nombre de colonnes de gros pixels de la fenêtre, le nombre de lignes de gros pixels de la fenêtre, le nombre de pixels de l’écran sur un côté d’un gros pixel
- marquer qui permet a l’ordinateur de mémoriser un gros pixel à dessiner ultérieurement. Il a besoin de 2 arguments : la colonne où sera dessiner le gros pixel, la ligne où sera dessiner le gros pixel. Il peut prendre un dernier argument facultatif l’intensité de la couleur du gros pixel. C’est flottant compris entre 0 et 1. Par défaut cette intensité vaut 0 et donc le pixel apparaîtra noir quand il sera affiché.
- afficher qui affiche tous les pixels en attente dans la couleur courante (noire par défaut) à la place enregistrée (colonne, ligne) et l’intensité enregistrée. Si cette intensité est 1 le pixel sera clair (blanc par défaut). Afficher peut prendre un argument qui indique le temps d’attente avant que l’ordinateur exécute l’instruction suivante. Une fois les pixels affichés ils n’attendent plus de l’être.
- couleur qui modifie la couleur courante en lui donnant la valeur correspondant à ses trois arguments qui sont des flottants entre 0 et 1, le premier correspondant au rouge, le deuxième au vert et le troisième au bleu dans le codage RVB des couleurs.
- lire qui renvoie l’intensité du gros pixel affiché dont la colonne et la ligne ont été passées en argument à cette fonction.
Exemple de programme :
from pixel import *
initialiser(15,10,20)
marquer(5,3,0.8)
marquer(5,2,0.8)
couleur(1,0,0)
print(lire(5,2))
afficher(0)
print(lire(5,2))
marquer(0,0,1)
couleur(0,1,0)
afficher(0)
marquer(10,10)
afficher(0)
print(lire(10,10))
ouvre la fenêtre suivante et produit les affichages suivants :