Comment commencer l’algorithmique en seconde ?

À propos de cette page
Naviguer dans la rubrique
Partager

Quelques exemples des premières approches en algorithmique

 

Attention, le contenu de cet article peut être obsolète. L'utilisateur veillera à adapter si nécessaire les activités aux référentiels actuels.

 

 

Il est tentant d’effectuer les premiers contacts -ou tout du moins ce que l’on pense être les premiers contacts- avec l’Algorithmique par des activités mathématiques par des grands classiques de type arithmétique : Kaprecar, algorithme d’Euclide, conjecture de Goldbach, algorithme de Syracuse, «  Harry Potter ».... Le document ressources donne également quelques pistes sur les premières activités (page 10).

Pourtant, de nombreux collègues observent que, par la suite, les élèves éprouvent de grandes difficultés à réaliser des tâches d’écritures ou de lectures d’algorithmes, qui pourtant apparaissent très simples.

A cela, les quelques études effectuées il y a quelques années au moment en particulier de l’Option Informatique proposent des explications :

  • La connaissance d’un objet Mathématique n’aide en rien à l’élaboration d’un algorithme (Lagrange),
  • Avant même les premiers cours d’algorithmique, les élèves disposent de modes de représentation des données auxquelles il sont confrontés, et des modes de représentations des traitements de ces données (Hoc).

Exemple 1 : recherche du plus grand nombre

Lors des sessions de formation, on a proposé aux professeurs stagiaires de rechercher le plus grand nombre, dans des listes d’entiers de tailles différentes. Des stratégies très diverses sont apparues liées, non seulement à la taille des listes proposées, mais également aux représentations mentales et aux manières de traiter les nombres. Ainsi, face à une liste de grande taille, certains professeurs effectuent un balayage visuel plus ou moins aléatoire qui ne correspond pas à un algorithme « naturel » traditionnel de recherche du plus grand entier...

Exemple 2 : un exercice de codage

En seconde, on a proposé un exercice de codage. Chaque groupe émetteur dispose d’un message et de son codage et doit réaliser une affiche décrivant en une suite d’instructions la manière dont le codage est réalisé. Un groupe récepteur dispose alors de cette production et d’une phrase qu’il doit coder en utilisant la liste d’instructions qui lui a été communiquée.

Texte : LE MENSONGE DONNE DES FLEURS MAIS PAS DE FRUITS

Texte codé : MD NDOTNOHD ENOOD EDT GMDTST, NZHT QZT ED GSTHUT

Voici deux exemples de productions :

 

Il est remarquable de constater que ces deux productions ont parfaitement été comprises et utilisées par chacun des groupes récepteurs. Et pourtant, les implicites y sont très nombreux : absence de traitement séquentiel explicité, utilisation « non conforme » du signe égal, absence d’indicateur de fin du traitement, absence de notification de l’affichage...

Les élèves producteurs et utilisateurs de l’algorithme de codage ont donc écrit un algorithme entièrement fonctionnel qui ne correspond pas aux types de productions attendus.

Comme le souligne Hoc, les élèves disposent donc d’un Système de Représentation et de Traitement des données (SRT) qui leur permet d’élaborer et d’appliquer certains algorithmes, y compris dans le domaine mathématique.

Il parait essentiel -sinon indispensable- de s’appuyer sur ces SRT pour asseoir les premières constructions d’activités algorithmiques de la classe.

Les premières activités peuvent donc avoir un objectif : à partir du langage naturel des élèves, faire émerger un code de communication commun à la classe, sur lequel on s’appuiera pour construire un langage « intermédiaire » permettant de décrire des algorithmes et par la suite des programmes en langage formel.

La construction d’un tel langage peut être engagée en deux temps :

Premier temps : identification des invariants de traitements Dans une activité bien choisie, les procédés de traitements seront d’autant plus proches les uns des autres que les élèves travaillent par groupes et qu’un consensus s’établit au sein de groupe, consensus imposé par la production d’une affiche publique. Sur la base des productions publiques d’élèves, on peut alors faire émerger un débat portant sur :

  • Quels points communs se dégagent en termes d’affectations, de structures, de boucles, de tests ?
  • Quelles sont les données à traiter (les entrées) ?
  • S’agit-il de caractères, de mots, ou du texte entier ?

Second temps : structuration syntaxique du langage commun

  • Comment décrire lisiblement les tests ou les affectations ?
  • Comment décrire la répétition de traitement à faire (la boucle) ?

C’est durant cette seconde phase que les élèves construisent un embryon de symbolisme qui répond à un besoin de communication non ambigüe entre eux : le geste impose la rigueur mais pas la forme du langage.

Pour lever les implicites :

  • travailler en groupe afin de faciliter l’émergence d’invariants locaux
  • produire des affiches publiques afin de développer le passage à l’écrit et en définir les contraintes, sensibiliser chaque groupe aux contraintes d’expression d’une règle inconnue au lecteur.

Pour dégager une codification commune :

  • confronter publiquement les productions des groupes, dégager explicitement les qualités d’un langage satisfaisant (lisibilité, concision)
  • synthétiser ces productions dans un langage consensuel :

> suffisamment synthétique

> permettant d’exprimer sans ambiguïté les invariants

> répondant aux contraintes de l’algorithme proposé, acceptable dans sa syntaxe au regard des SRT natifs des élèves.

Ces activités ne doivent pas être ambitieuses et doivent clairement cibler des objectifs précis : affectation, structure si alors, auto-affectation.

Synthèse :

  • Mettre en avant les activités collaboratives d’écritures et de relecture qui permettent une régulation entre élèves et une forme d’homogénéisation du langage
  • Axer les premières activités sur la construction collective d’un Langage Intermédiaire de classe.