TraAM 2017-2018 : La tortue publié le 24/05/2018

Découverte des fonctions Python en seconde

Caractéristiques du scénario

Thématique

Développer la pensée algorithmique.

Niveau concerné

Créée pour une classe de seconde, cette activité est adaptable pour le cycle 4.

Compétences mobilisées

Chercher, Raisonner, Communiquer.

Problématique

Comment communiquer une suite d’instructions simplement, en étant compris de tous, pour reproduire une figure ?

Les objectifs de cette activité sont multiples. L’idée était d’essayer d’engendrer la nécessité d’utiliser une procédure puis une procédure à paramètre. Pour cela, on se sert des algorithmes en tant que langage au sens où les suites d’instructions doivent être comprises de tous afin de reproduire le bon chemin.
En groupe, sur papier, les élèves doivent donc diffuser des algorithmes permettant aux autres groupes de reproduire des figures imposées. Des questions sont rapidement soulevées :

  • Comment faire plus court ? (Nombre de lignes d’instructions limité)
  • Quels sont les mouvements possibles ?
  • Peut-on créer un nouveau mouvement et comment le faire comprendre de tous ?(Introduction aux procédures)
  • Comment peut-on dire : « répéter n fois » ?

Nombre d’heures envisagées

3-4 heures en classe, par groupe de 3 ou 4 élèves puis 1 ou 2 heures en salle informatique.

Outils et ressources

Le document pour les élèves prédécoupé et une salle informatique pour la dernière heure.

Document élève à découper (PDF de 960.1 ko)

L’ensemble des supports d’activités distribués aux élèves après les avoir découpés en petites activités.

Un document pour les professeurs pour s’y retrouver :

Déroulement pas à pas pour l'enseignant (PDF de 639.4 ko)

Déroulement pas à pas pour l’enseignant.

Un plus : Un outil pour afficher les productions d’élèves au vidéo projecteur (comme une tablette ou une webcam) afin d’engendrer des débats autour des idées ou des erreurs.

Déroulement du scénario

Par groupes de quatre, les élèves doivent reproduire ou coder des chemins. Le premier chemin ne sert qu’à uniformiser l’instruction “tourner à droite” (ou à gauche). En effet, doit-on aussi avancer en même temps ? Ensuite, les doivent coder les séquences d’instructions permettant de reproduire une figure sur des cartes de codes vierges puis échanger ces cartes avec un autre groupe. Ces dernières deviennent volontairement trop courtes pour reproduire la figure pas à pas. Les élèves sont alors amenés à inventer de nouvelles instructions qui doivent être comprises de tous. C’est pourquoi chaque groupe doit définir au tableau leurs nouvelles instructions. On approche ainsi l’idée de “langage” par une communication uniformisée. Des noms doivent être donnés aux nouvelles instructions et les séquences d’instructions élémentaires qu’elles emploient doivent être diffusées à toute la classe.

Cette activité est prédécoupée afin d’instaurer des débats à chaque étape qui seront suivis d’une mise en commun.

Certaines productions d’élèves sont projetées au tableau grâce à une tablette et une borne Wi-Fi. Cela permet de débattre des idées et des erreurs et aussi de corriger rapidement :

Exemple de diffusion de production d'élève

Premiers doutes :

Le niveau mathématiques étant très peu élevé, je me refusais un peu à faire ce genre d’activité en seconde. Mais après quelques heures passées sur d’autres activités plus complexes, je me suis aperçu que les élèves, même s’ils connaissaient l’existence des variables et des boucles grâce à Scratch, n’avaient que très peu conceptualisé ces notions. J’ai pris la décision de les débrancher afin qu’ils s’approprient ces notions indépendamment de la difficulté du langage.

Aussi, le programme de mathématiques incite une entrée directe par les fonctions en programmation. L’idée de leur donner une fonction pour leur dire ensuite : « vous voyez à quoi cela sert ? » ne me plaît guère. Je voulais créer le besoin de créer des fonctions.

Déroulement pas à pas et impressions :

On donne la première partie de la première page.

Le I1) permet de définir correctement les instructions « droite(90) » et « gauche(90) ».

Le I2) permet de définir le travail futur à savoir, écrire un algorithme permettant de retracer le chemin.

Ensuite, les élèves doivent écrire sur un coupon vierge les instructions pour permettre à un autre groupe de reproduire les chemins n°2, 3 ou 4. Certains groupes utilise un nouveau mouvement : « recule() » qui n’est pas compris de tous ou mal utilisé (confusion avec un demi-tour).

L’utilisation de ce nouveau mouvement mouvement permet de donner une piste pour les dessins suivants.

Avec les chemins n°5, 6 et 7, les élèves écrivent entièrement sur leurs cahiers les instructions mais ne peuvent les diffuser ainsi par manque de place sur le coupon. Ils cherchent alors des stratégies pour répéter quelque chose. Hélas, les boucles sont peu utiles ici. L’idée de créer un nouveau mouvement comme « virage » ou « angle » émerge mais comment le communiquer correctement aux autres groupes ?

J’ai proposé à un élève d’aller définir au tableau le nouveau mouvement utilisé et d’autres élèves ont suivi. Voici en vidéo les réflexions d’élèves sur cette partie :

La tortue partie 1

Bloqués par le manque de ligne pour coder, les élèves s’interrogent sur la création de nouvelles instructions.

La deuxième moitié de la première page est ensuite distribuée afin de synthétiser au propre une procédure « zigzag() ». J’ai ajouté les parenthèses à l’écriture de ce nouveau mouvement mais ce n’est pas une obligation ici car on souhaite simplement définir pour tous de nouveaux mouvements.

La partie II est alors engagée pour aborder une définition des procédures proche du langage Python avec des exercices d’utilisation.

Certains élèves essaient de décrire une boucle à la question 2.

A la fin de cette partie (II4), chaque groupe doit écrire un algorithme permettant à un autre groupe de reproduire les figures des cartes n°1 ou 2 ou … ou 8. Pour cela ils peuvent utiliser les procédures données ou en inventer d’autres qu’ils devront définir au tableau. Des noms étranges apparaissent comme « JeanJacques » ou « carretroiscotes ».

Pour les cartes 6, 7 et 8, certains groupes ont défini de nouvelles procédures « rectangle » et « carre1 » alors qu’un groupe a directement écrit « carre(1) ». Cette dernière instruction a créé une incompréhension lors de la lecture.

Les cartes de la page 9 sont ensuite distribuées. Certains groupes définissent quatre procédures :
carre1(), carre(), carre3() et carre4() alors que d’autres commencent à insérer un paramètre : carre(x).

traam tortue : procedures à paramètres

Les élèves utilisent ou créent de des procédures afin de coder la figure proposée.

Un exemple de production :

Production d'élèves

La partie III arrive donc naturellement.
Dans la question 4), l’idée de boucle vient naturellement et tous les élèves ont créé une procédure « trou() » ou « zagzig() » ...
Les élèves connaissent l’existence d’une instruction pour répéter mais ne savent pas l’écrire en python.

Premières boucles en Python

Mise en place d’une syntaxe pour coder des répétitions de suites d’instructions.

Dans la partie IV, on donne l’écriture d’une boucle. Pour le dernier segment de la première figure, certains élèves commentent l’erreur d’indentation pour arrêter le contenu de la boucle. Ces erreurs sont affichées au vidéo projecteur afin de créer du débat autour de l’importance de cette indentation pour se faire bien comprendre.

Erreur d'indentation dans la boucle

Diffusion d’une erreur classique pour comprendre.

IV 4), de nombreux élèves n’ont pas compris la signification du : « range(1,4) ».

Au IV 4) et 5), l’idée de pouvoir utiliser le compteur de la boucle apparaît avec des réactions chez certains élèves : « on a le droit ? ».

Cette question sera par la suite inversée : « pourquoi utiliser i si l’on ne s’en sert pas ? ».

La partie V amène les élèves sur ordinateur. Quelques élèves écrivent les instructions en français et ne comprennent pas : « pourquoi ça ne marche pas ? »

Même si quelques élèves vont très vite, il faut attendre 20 minutes avant de voir tous les élèves réaliser une première figure. Cela s’accélère ensuite. En une heure, les élèves ont tous reproduit au moins 4 figures et 4 élèves sont arrivés aux triangles bleus (avec une recherche internet pour la couleur du chemin).

Retour d’expérience

Les objectifs sont globalement atteints. Le « def » de Python devient un peu plus naturel et l’existence d’une écriture formatée pour définir une boucle est restée dans la tête des élèves même s’ils ne parviennent pas tous à le retenir.

Le niveau mathématiques étant très peu élevé, l’aspect ludique apparaît davantage et tous les élèves se sont investis.

Pour les boucles, certains groupes ont utilisé des accolades avec un « x2 ». Cela fonctionne sur papier, entre humains. Il a fallu de suite leur faire comprendre l’impossibilité pour une machine de comprendre cela.

J’étais parti sur un déroulement plus guidé au départ en pensant gagner du temps mais cela aurait coupé les débats. Les heures de cours sont donc assez bruyantes du fait de laisser les groupes réfléchir et piétiner.