Mathématice, intégration des Tice dans l'enseignement des mathématiques  
Sommaire > N°42 - novembre 2014 > Sous-programmes et tableaux avec PluriAlgo

Sous-programmes et tableaux avec PluriAlgo
Moteur de recherche
Mis en ligne le 14 octobre 2014, par Patrick Raffinat

Cet article peut être librement diffusé à l’identique dans la limite d’une utilisation non commerciale suivant la license CC-by-nc-nd http://creativecommons.org/licenses/by-nc-nd/3.0/fr/legalcode

A) Introduction

Cet article complète un premier article consacré à PluriAlgo [1], un logiciel pluri-langages d’initiation à l’algorithmique. Les thèmes abordés (sous-programmes, tableaux) sont illustrés avec des langages généralistes (Javascool, Python) ou mathématiques (Xcas, R).

La première partie de l’article présente deux outils facilitant l’écriture de sous-programmes.

La deuxième partie traite de la gestion de tableaux à une dimension : déclaration, saisie...

La troisième partie étudie un problème de synthèse présentant à la fois un intérêt informatique (fonctions et tableaux) et un intérêt mathématique (simulation d’une loi binomiale).

B) Sous-programmes

Découpage initial

De nombreux étudiants peinent à concevoir et à réaliser un découpage en sous-programmes lorsqu’un nouveau problème est à résoudre. C’est pourquoi PluriAlgo propose un outil leur permettant de démarrer, même si l’heuristique utilisée n’est pas toujours optimale.

PNG - 49.4 ko
Figure 1 : découpage initial à partir des entrées et des sorties

L’heuristique s’appuie sur les entrées et les sorties du problème à traiter, dont l’objectif est ici de calculer le volume d’un cylindre et le volume d’un cône. Grâce à l’option de calcul « fonctions », PluriAlgo crée deux fonctions (une par sortie) paramétrées par les entrées (rayon et hauteur), ce qui est illustré ici en Javascool :

PNG - 34.9 ko
Figure 2 : le programme déduit de la figure 1

Il reste à compléter les deux fonctions soit directement (voir résultat), soit en introduisant une nouvelle fonction calculant la surface d’un disque (voir indication et résultat).

Reformulation

Ce mécanisme permet de traiter avec de nouvelles techniques (sous-programmes, enregistrements...) des problèmes résolus auparavant de façon plus élémentaire lorsque ces notions n’ont pas encore été enseignées. Par exemple, la figure 3 montre comment reformuler un programme Python calculant le volume d’un cylindre en introduisant une fonction (voir résultat) :

PNG - 90.3 ko
Figure 3 : reformulation avec sélection de code

Si tout le programme (sauf les entrées-sorties) est à reformuler, ce qui est le cas ici, il n’est pas nécessaire de sélectionner les instructions dans l’éditeur. Mais cela n’est pas une simple commodité : en effet, cela permet d’utiliser des options de reformulation (formulaire de saisie, enregistrement, classe...) non disponibles autrement.

Les deux mécanismes de reformulation (avec ou sans sélection de code) sont détaillés dans le pdf joint.

PDF - 394.9 ko

C) Tableaux

Comme pour les types simples, l’onglet Principal du logiciel permet de déclarer des tableaux, de les saisir et de les afficher... Pour l’illustrer, nous allons adapter un exemple (total d’un achat) traité sans tableaux dans le premier article consacré à PluriAlgo :

PNG - 27.8 ko
Figure 4 : déclaration de tableaux

Deux tableaux (le prix unitaire et le nombre d’exemplaires achetés pour chaque article) permettent de stocker les informations saisies. Si on fixe Javascool comme langage de développement, le résultat obtenu est le suivant :

PNG - 35.9 ko
Figure 5 : le programme déduit de la figure 4

Il reste ensuite à calculer le montant total de l’achat, ce qui peut être réalisé en utilisant l’option « sommation » de l’onglet Boucles (voir indication et résultat).

D) Un problème de synthèse

Introduction

Cette partie étudie un problème de synthèse présentant à la fois un intérêt informatique (fonctions et tableaux) et un intérêt mathématique (simulation d’une loi binomiale). Pour le résoudre, nous allons procéder en deux étapes :

  1. en introduisant une fonction comptant le nombre de piles lors d’une simulation de n lancers d’une pièce ayant la probabilité p de tomber sur pile.
  2. en répétant la simulation de n lancers, afin de construire un tableau (d’indices compris 0 et n) estimant les diverses probabilités relatives à une loi binomiale de paramètres n et p.

Le problème est tout d’abord traité en Xcas, puis prolongé en R par une illustration graphique du théorème de Moivre-Laplace.

Etape 1

L’onglet Principal permet de créer une fonction comptant le nombre de piles (nbPiles) lors d’une simulation de n lancers d’une pièce ayant la probabilité p de tomber sur pile.

PNG - 39.3 ko
Figure 6 : création de la fonction

Le code obtenu (en cliquant sur le bouton Insérer) doit être ensuite complété (partie entourée en rouge) :

PNG - 12.6 ko
Figure 7 : code final de la fonction

Le code ajouté calcule le nombre de fois où le réel aléatoire (compris entre 0 et 1) est inférieur ou égal à p (la probabilité d’une pièce de tomber sur pile). Il peut être obtenu en complétant l’onglet Boucles (voir indication).

Etape 2

La seconde étape consiste à répéter la simulation de n lancers, afin de construire le tableau estimant les diverses probabilités relatives à la loi binomiale. Ses entrées sont donc les paramètres de la loi (n et p) et le nombre de simulations (nbSimus), ce qui est précisé dans l’onglet Principal :

PNG - 43.2 ko
Figure 8 : création de la fonction

Le code obtenu (en cliquant sur le bouton Insérer) doit être ensuite complété (partie entourée en rouge) :

PNG - 19.7 ko
Figure 9 : code final de la fonction

La première partie du code ajouté initialise le tableau des estimations à 0. La seconde partie répète nbSimus fois la simulation, et comptabilise le résultat de chaque simulation (un entier compris entre 0 et n) en modifiant le tableau des estimations. PluriAlgo n’est ici d’aucun secours, sauf pour insérer les deux boucles.

La simulation peut être lancée avec une simple commande, par exemple calculer_estimations(30, 0.7, 1000), ce qui n’est plus possible en Javascool : voir pdf joint.

PDF - 177 ko

Prolongements en R

Pour traiter le problème en R [2], trois solutions sont étudiées dans le pdf joint :

  1. reprendre les étapes 1 et 2 en changeant de langage.
  2. partir de la solution Xcas et utiliser le traducteur de PluriAlgo.
  3. utiliser des fonctions prédéfinies de R.

Le problème est ensuite prolongé par une illustration graphique du théorème de de Moivre-Laplace [3].

PDF - 221 ko

E) Conclusion

Lorsque j’ai commencé à développer PluriAlgo il y a plusieurs années, mon objectif était simplement de gagner du temps dans la phase initiale de programmation : déclaration des variables, gestion des entrées-sorties et découpage en sous-programmes. Le logiciel n’était donc qu’un outil d’appoint.

Après de nombreuses évolutions, PluriAlgo est devenu un véritable logiciel d’initiation à l’algorithmique, ce que je me suis efforcé de démontrer dans ces deux articles.

Cela me permet, pour la première fois cette année, d’utiliser le logiciel dans chacune de mes séances de travaux pratiques sur ordinateur. Une ressource publiée sur IUTEnLigne [4] montre précisément comment intégrer PluriAlgo dans un cours d’algorithmique.


notes

[1PluriAlgo peut être téléchargé sur mes pages professionnelles ou sur la plate-forme pédagogique Javascool développée par l’INRIA pour l’apprentissage des bases de la programmation en lycée.

[2R a été ajouté depuis la parution du premier article : pensez à mettre à jour PluriAlgo si nécessaire.

[3Du discret au continu : loi binomiale et loi normale - H. Lample et D. Bernard - Inter académiques Montpellier 2011.

[4Dans cette ressource publiée sur IUTEnLigne, les chapitres 3 à 9 comportent des travaux pratiques à réaliser avec PluriAlgo, en liaison avec les thèmes abordés dans le chapitre correspondant.

Documents associés à l'article
  Les programmes de l’article   |   (Zip - 7 ko)
Réagir à cet article
Vous souhaitez compléter cet article pour un numéro futur, réagir à son contenu, demander des précisions à l'auteur ou au comité de rédaction...
À lire aussi ici
MathémaTICE est un projet
en collaboration avec
Suivre la vie du site Flux RSS 2.0  |  Espace de rédaction  |  Nous contacter  |  Site réalisé avec: SPIP  |  N° ISSN 2109-9197