par Cyrille Guieu
En classe de 3e, deux parties du programme m’ont incité à utiliser un langage de programmation durant quelques séances.
Il s’agit d’une part de la notion de fonction et d’autre part de l’introduction des probabilités.
Concernant les fonctions, le formalisme des langages de programmation me semblait donner une motivation au formalisme Mathématique. Les algorithmes comme ensembles de procédures permettant de fournir un résultat sont assez présents dans le programme de 3e (en Arithmétique et en Calcul littéral notamment).
Les travaux proposés aux élèves mettent l’accent sur deux objectifs didactiques :
– faire apparaître l’image d’un nombre par une fonction comme le résultat d’un ensemble de commandes construites auparavant.
– mettre en défaut le modèle spontanné d’équiprobabilité sur un exemple d’expérience aléatoire à deux épreuves (voir la page 10 du document d’accompagnement sur les probabilités en 3ème)
Pourquoi pas le tableur ?
Les deux classes concernées avaient déjà utilisé le tableur pour des travaux en lien avec le calcul littéral. Pour les objectifs visés le tableur a le défaut d’être conçu pour traiter de nombreuses variables (chaque cellule est une variable) ce qui ne permet pas forcément de présenter des dépendances fonctionnelles dans des situations simples. La seconde limite pédagogique concerne l’exhaustivité des informations sur la feuille de calcul, on ne peut jamais afficher toutes les formules de la feuille de calcul, c’est-à-dire toutes les fonctions qui entrent en jeu.
Pour ces deux raisons, le formalisme d’un langage de programmation qui isole la définition d’une fonction dans une série d’instructions toujours localisée dans la même fenêtre m’est apparu à ce moment de l’étude plus pertinent que le tableur qui a tendance à cacher les fonctions.
Choix du langage
Pour que l’expérience soit envisageable, le logiciel utilisé devait répondre à trois critères essentiels :
– être simple à installer
– disposer d’une syntaxe simple (style BASIC)
– être utilisable en ligne de commande pour obtenir un résultat immédiat
Le langage XLOGO m’a semblé répondre à ces critères, bien que certaines difficultés soient apparues en cours d’étude. Sa lenteur, liée à l’utilisation de la technologie JRE et sa gestion des variables (qui ont des écritures différentes en fonction de l’utilisation qu’on en fait) ont posé quelques difficultés passagères.
En contrepoint l’aspect « LOGO » du langage s’est révélé efficace d’un point de vue didactique. Le fait de percevoir de façon immédiate les conséquences de l’utilisation des commandes a permis aux élèves de s’approprier en douceur la syntaxe du langage.
Prise en main rapide pour le professeur
Concrêtement XLogo peut s’installer sur n’importe quelle machine où est installé JRE [1]. C’est expliqué en détail sur la page téléchargement du site de XLogo.
Pour se familiariser avec ce langage et mieux lire la suite de cet article, on peut choisir d’utiliser Xlogo en ligne. Cela peut permettre de savoir si l’ordinateur utilisé dispose d’une configuration correcte pour installer JRE. Il est conseillé de télécharger également le manuel sur la page de documentation du site et d’en consulter les 37 premières pages (pas d’inquiétude, il y a beaucoup d’images !).
Au lancement de XLogo, on doit choisir la langue et valider par le bouton « OK ».
La copie d’écran ci-dessous montre la fenêtre de travail d’XLogo.
– La zone de texte « Commande » permet d’exécuter directement une instruction par le logiciel.
– La zone vide juste au-dessous est la zone de sortie des instructions graphiques.
– Enfin la zone de texte en bas à gauche est la zone des sorties qui sont des textes.
Dans cet exemple, on a commencé par taper l’instruction 2+2
. Puis on a validé par la touche « Entrée ». Ce à quoi XLogo a répondu Que faire de 4 ?
La couleur rouge indique qu’il s’agit d’un message d’erreur.
L’instruction ecris 4*5
a par contre donné le résultat attendu.
L’instruction affichée dans la zone des commande ecris 2+3*5
n’a pas encore été validée. Elle renvoie logiquement la valeur 17
.|
Cette manière d’utiliser XLogo est rudimentaire mais elle permet de se familiariser avec sa syntaxe.
On peut aussi utiliser la « Tortue » comme dans l’exemple ci-dessous :
Evidemment ce mode d’interaction avec XLogo ne permet pas de faire un vrai programme car les instructions disparaissent au fur et à mesure qu’elles sont exécutées [2]. Pour remédier à cela, on peut construire des procédures.
Pour cela, il faut ouvrir l’éditeur (bouton en bas à droite).
Le texte qui y a été tapé défini une procédure nommée M
. Pour valider cette procédure, il faut cliquer sur le bouton triangulaire en haut à gauche. Pour l’appeler depuis XLogo, en ligne de commande, il suffit de taper la nouvelle commande « M » :
Remarque : la commande ve
ou videécran
efface l’écran graphique et remet la tortue dans sa position initiale.
On peut aussi donner un paramètre d’entrée à la procédure :
Remarque : la notation :x
désigne le contenu de la variable x
Une procédure peut également renvoyer une paramètre grâce au mot-clef retourne
:
Voici le code précédent pour éviter d’avoir à le retaper :
pour m :x
av :x
td 135
av :x*0.4
tg 90
av :x*0.4
td 135
av :x
fin
pour largeur_m :x
retourne :x*0.8/rac 2
fin
Le travail en salle informatique avec les élèves
1. Découvrir le langage
Dans cette première partie du travail les élèves commencent par faire du LOGO : ils entrent des instructions pour déplacer la tortue puis ils regroupent ces instructions dans une procédure.
2. Procédures et fonctions
Les élèves écrivent des procédures pour construire des figures de tailles variables puis ils font un travail plus spécifique aux fonctions.
3. Probabilité (simulation)
On commence par montrer que l’ordinateur peut simuler de manière crédible le lancer d’un dé bien équilibré. On poursuit en simulant le lancer de 2 dés et en observant la somme de ces deux dés. Le fichier simulation.lgo est nécessaire aux élèves pour réaliser l’activité
Contenu du fichier "simulation.lgo" :
pour dé
retourne 1+hasard 6
fin
pour effectif :serie :valeur
donne "n 0
repete compte :serie [si (item compteur :serie)=:valeur [donne "n :n+1]]
retourne :n
fin
pour lancers :n
donne "l []
repete :n [donne "l ph :l dé]
retourne :l
fin
La procédure dé
simule la lancé d’un dé bien équilibré.
La procédure effectif :serie :valeur
compte de le nombre d’occurence de la valeur
dans la serie
.
La procédure lancers :n
renvoie une liste de n
lancers d’un dé bien équilibré.
Remarques sur la syntaxe :
– L’instruction donne "n 0
affecte la valeur 0
à la variable n
. Il faut désigner la variable elle-même et non son contenu, c’est pourquoi son nom est précédé d’un guillemet.
– L’instruction donne "n :n+1
affecte la valeur n+1
à la variable n
. Ici :n
représente la valeur prise par la variable n
tandis que "n
représente la variable elle-même désignée par son nom.
– L’instruction donne "l ph :l dé
ajoute la valeur renvoyée par la procédure dé
à la liste l
puis affecte la nouvelle liste obtenue à la variable l
. Il s’agit en fait d’une concaténation.
Conclusion
Il est toujours délicat de mesurer la pertinence d’une modalité pédagogique par rapport à d’autres choix possibles. Pour autant le retour des élèves a montré que cette expérience n’a pas étée inutile.
Dans un premier temps, en regard des objectifs initiaux, les résultats furent maigres. Les deux classes concernées ont en effet rencontré les difficultés habituelles de conceptualisation de la notion de fonction. Par contre le travail en probabilités a eu des consequences positives. Les élèves ont pour la pluspart perçu les limites du modèle d’équiprobabilité même si conformément au programme, nous ne sommes pas allé très loin dans ce domaine.
Le côté expérimental de ce travail mathématique a par ailleurs eu des conséquences positives sur l’attitude de la pluspart des élèves face à des problèmes classiques de cette classe. Par exemple dans une évaluation ultérieure, les élèves ont spontannément pris l’initiative de tester plusieurs valeurs sur un programme de calcul pour obtenir un résultat demandé [3].
Cette expérience limitée montre en tout cas qu’il est envisageable d’introduire à petite dose des notions de programmation en fin de collège lorsque les objectifs pédagogiques à atteindre en justifie l’usage. Ce type d’activité nous semble pouvoir trouver leur place dans les démarches d’investigation que les élèves doivent mettre en pratique au collège.