Algorithmique et programmation : réflexions et expérimentations

mardi 3 novembre 2009
par  Isabelle ABOU

Exposé fait au séminaire de l’IREM le mercredi 28 octobre 2009 : réflexions générales sur l’introduction de l’algorithmique en Seconde, choix du logiciel le mieux adapté, progression pour insérer des activités algorithmiques tout au long de l’année dans chaque partie du programme, compte rendu de l’expérimentation réalisée en classe depuis le début de l’année.

Pour aller plus loin, les documents ayant servi de support aux stages animés par Isabelle Abou pour les professeurs de Seconde sont disponibles sur IcosaWeb.

Pourquoi l’algorithmique ?

  • Nécessité pour l’École de s’inscrire dans la société civile où les média sont omniprésents.
  • L’utilisation des TIC devient une pratique incontournable de l’enseignant et de l’élève.
  • La recherche en informatique fait partie des « mathématiques appliquées et applications des mathématiques ».
  • Faire prendre conscience à l’élève que la technologie est le fruit d’un travail logique et rigoureux de l’Homme sous tendu par les mathématiques, et par voie de conséquence par l’informatique.

Recherches actuelles en algorithmique

De nombreuses recherches et problèmes mathématiques sont en inter-relation avec les recherches en algorithmique. Celles-ci concernent la complexité en moyenne et de nombreuses applications en ingénierie comme :

    • la téléphonie mobile,
    • le cryptage,
    • la compression d’image et de son,
    • les codes correcteurs,
    • Internet,
    • la recherche en bio-informatique sur l’identification et l’étude de codes dans les génomes et leur modélisation évolutive stochastique.

Beaucoup de colloques concernent les recherches de pointe en algorithmique.

Apports de l’algorithmique

  • Faire appréhender à l’élève de façon différente certaines notions comme la logique, et par voie de conséquence développer l’esprit scientifique.
  • Promouvoir l’égalité des chances pour tous les élèves puisqu’ils commencent l’algorithmique au même niveau sans le poids des lacunes antérieures.
  • Donner un renouveau à la perception qu’ont les élèves de l’objet mathématique, l’aspect calculatoire n’étant pas au premier plan.
  • Dans l’esprit du paradigme du « diviser pour régner » utilisé pour l’écriture d’un algorithme ou d’un programme, privilégier le travail de groupe.
  • Faire de la pédagogie différenciée en demandant à certains élèves d’analyser un algorithme, d’en écrire de simples, et à d’autres, de faire ce même travail en demandant, en plus, de modifier l’algorithme de départ pour le rendre plus performant ou pour y ajouter des fonctionnalités.

Pourquoi la programmation ?

  • Nombre d’élèves ont des difficultés car les mathématiques demandent des capacités d’abstraction non seulement au niveau des notions abordées mais aussi au niveau du de l’analyse du résultat obtenu, de sa signification.
  • Pour écrire un algorithme, il faut d’abord décomposer toutes les étapes nécessaires à la résolution d’un problème, il faut ensuite rédiger rigoureusement sa résolution.
  • Écrire un programme permet de vérifier concrètement que l’algorithme fonctionne.
  • Si le programme ne tourne pas, son concepteur est confronté à lui-même, il cherche son erreur, il fait des tentatives successives de corrections jusqu’à ce que le programme donne le résultat attendu.
  • Cela peut donc donner une place encore plus intéressante à l’expérimentation, et redonner aux élèves le goût de l’effort ; la satisfaction et la récompense étant bien concrètes.
  • On est donc dans une réelle démarche de recherche.

Quel choix de logiciel ?

Extrait du document ressources : Les calculatrices graphiques programmables peuvent être exploitées grâce à leur commodité d’usage en classe entière. Cependant, leurs limites dues à leur petite taille et leur capacité mémoire incitent à proposer aux élèves des activités s’appuyant sur des logiciels utilisables sur ordinateur.

  • Ceux utilisés dans ce document de l’Inspection Générale sont les logiciels des calculatrices TI et Casio, les logiciels Scratch, Scilab, Xcas, Python et Execalgo.
  • Seuls Execalgo, Scratch, Scilab, et AlgoBox sur lesquels j’ai travaillé, seront présentés ici.

EXECALGO

    • C’est un logiciel gratuit, mais qui n’est pas libre ni multi-plateforme.
    • Dans un premier temps, je l’ai choisi car il est dédié à l’apprentissage de l’algorithmique puisqu’il a été crée par un groupe d’experts pour les élèves de 1L et TL qui suivent l’option mathématiques.
    • Très pédagogique, les instructions sont écrites en langage naturel, elles sont pré-écrites sur la fenêtre du programme, et il suffit de remplir avec des instructions chaque élément de la structure du programme, entrée : déclaration de variables et initialisation, traitement, et sortie.
    • Cependant, il a certains défauts qui paraissent rédhibitoires : il ne possède pas d’instruction « input », il gère mal les instructions conditionnelles (il faut pour cela utiliser des points de branchements), et il n’a pas de fenêtre graphique.
    • Il a été abandonné, en général, au profit d’AlgoBox.

SCRATCH

    • C’est un logiciel libre, gratuit, et multi-plateforme.
    • Il a été crée au départ, aux États-Unis, pour enseigner l’algorithmique et la programmation à des enfants de 7 ans.
    • Il a un côté très ludique puisqu’il y a un petit personnage sur la fenêtre, qui peut faire des mouvements grâce aux programmes que l’on écrit.
    • Il donne la possibilité d’exporter les algorithmes sur un site mutualisé.
    • Il permet de créer des animations, de petites vidéos auxquelles on peut également ajouter des sons.
    • Pour programmer avec Scratch, il faut déplacer de petites briques où les instructions sont pré-écrites, il n’y a pas à apprendre de syntaxe.
    • Les couleurs très vives de l’écriture du code peuvent en rebuter certains.
    • Ce n’est pas un logiciel de calcul scientifique, il ne connaît donc pas les règles de priorité, il faut donc décomposer toutes les opérations.

SCILAB LYCÉE

    • C’est aussi un logiciel libre, gratuit, et multi-plateforme qui a été reformaté pour le lycée à partir du logiciel Scilab.
    • Il est considéré comme une « super » calculatrice avec des possibilités de programmation assez importantes, création de fonctions comme sous-procédures d’un programme principal, affichages de graphiques, tirages aléatoires, suites…
    • Il est utilisé dans les classes préparatoires aux grandes écoles mais la syntaxe reste assez simple, plutôt synthétique.
    • La majorité des instructions sont en anglais, certaines comme afficher sont en français.
    • Ce n’est pas un logiciel de calcul formel, toute variable qui est entrée doit avoir une valeur numérique.
    • Les calculs sont des calculs matriciels, un nombre réel est considéré comme une matrice 1x1.

ALGOBOX

    • C’est un logiciel libre, multi-plateforme et gratuit.
    • Il a été crée pour aider à l’élaboration et à l’exécution d’algorithmes dans l’esprit du nouveau programme de seconde.
    • Le code de l’algorithme se construit pas à pas grâce à des instructions de base pré-écrites que l’on insère.
    • Tous les algorithmes peuvent être exécutés et testés en mode classique, ainsi qu’en mode pas à pas.
    • Des exemples d’algorithme sont fournis avec le programme.
    • En plus d’une sauvegarde classique, le code l’algorithme peut être imprimé et exporté sous forme de fichier texte, d’un document LaTeX, d’une page web dans laquelle il est possible de l’exécuter.
    • AlgoBox n’est pas un environnement complet de programmation, ses capacités en « programmation pure » sont donc limitées.
    • Démo
    • Tutoriel

Choix d’AlgoBox

Extrait du document ressources : Il faut avant tout éviter de confronter les élèves à des difficultés trop importantes ; en effet la classe de seconde est une classe de détermination et il ne s’agit pas d’y former des programmeurs mais de faire en sorte que les mathématiques et l’algorithmique soient au service d’activités de résolution de problèmes pour les sciences.

  • Au niveau de la syntaxe, la programmation avec AlgoBox est très proche de l’écriture d’un algorithme sur papier, en pseudo-code.
  • AlgoBox permet de ne pas ajouter à la difficulté d’apprentissage de l’algorithmique, la difficulté d’apprentissage de la syntaxe d’un langage de programmation.
  • Le déroulement pas à pas est très intéressant au niveau pédagogique car cela est équivalent à faire tourner l’algorithme « à la main », la valeur de chaque variable étant affichée au fur et à mesure du déroulement de l’algorithme.
  • AlgoBox permet donc d’être en conformité avec les objectifs et les exigences du programme de seconde sans rebuter la majorité des élèves qui ne passeront pas en section scientifique, et sans pénaliser ceux qui y passeront.

Compétences

Extrait du document ressources : Les compétences suivantes pourront être identifiées et travaillées :

    • comprendre et analyser un algorithme préexistant ;
    • modifier un algorithme pour obtenir un résultat particulier ;
    • analyser la situation : identifier les données d’entrée, de sortie, le traitement... ;
    • mettre au point une solution algorithmique : comment écrire un algorithme en langage courant en respectant un code, identifier les boucles, les tests, des opérations d’écriture, d’affichage... ;
    • valider la solution algorithmique par des traces d’exécution et des jeux d’essais simples ;
    • adapter l’algorithme aux contraintes du langage de programmation : identifier si nécessaire la nature des variables... ;
    • valider un programme simple.

Organisation des enseignements

Extrait du document ressources : Il serait souhaitable d’intégrer l’écriture d’algorithmes dans tous les domaines du programme :

    • fonctions : étude numérique et asymptotique ;
    • géométrie : les questions d’affichage, de positionnement et de déplacement d’objets géométriques simples (points, segments, cercles) peuvent être un champ d’investigation très riche ;
    • statistique : questions de tris, détermination de certains indicateurs (médiane, quartiles) ;
    • probabilités : la modélisation de certains phénomènes à partir de fréquences observées : méthode dite de Monte-Carlo,etc. ;
    • numérique : le traitement des nombres permet d’aborder des problèmes de comparaisons et de taille des nombres, d’exactitude dans les calculs, etc.

Expérience personnelle

  • Introduction à l’algorithmique grâce à une recette de cuisine.
  • Premiers algorithmes en géométrie repérée, coordonnées du milieu d’un segment, distance entre deux points, le triangle est-il équilatéral, isocèle, rectangle, quatrième point d’un parallélogramme…
  • Algorithmes suivants sur les fonctions : valeurs d’une fonction, tracé de la courbe représentative d’une fonction…
  • À venir : algorithmes sur les fonctions affines par morceaux, sur les droites, en statistique avec la simulation, l’échantillonnage, en probabilités, avec les fonctions de référence, les vecteurs, etc…

Quelles activités algorithmiques ? Comment les relier au programme ?

Je présenterai, avec une analyse pédagogique de chaque activité :

  • une introduction, très simple, à l’algorithmique avec une recette de cuisine,
  • des activités algorithmiques :
    • en géométrie repérée avec des travaux d’élèves,
    • sur les fonctions avec le programme donnant les valeurs et le tracé d’une fonction affine par morceaux,
    • en statistiques dans le domaine de la simulation.

Introduction : recette de cuisine

Ingrédients de la pâte à crêpes :

    • 200g de farine
    • 1 pincée de sel
    • ½ sachet de levure
    • 3 cuillerées à soupe d’huile
    • 15cl d’eau
    • 15 cl de lait
    • 4 oeufs
    • 4 cuillerées à soupe de rhum
    • 2 cuillerées à soupe de sucre + vanille



Préparation de la pâte dans le désordre :

    • ajouter le sucre + vanille
    • si la pâte est trop épaisse, ajouter un peu de lait
    • mélanger les ingrédients
    • battre les œufs
    • laisser reposer la pâte
    • casser les oeufs
    • délayer le tout avec l’eau + lait + rhum + huile
    • ajouter la farine + levure + sel

Exercice :

  • Remettre dans l’ordre les instructions de la recette de la pâte à crêpes.
  • Identifier les étapes de la recette avec les étapes d’un algorithme.
ENTREE

Déclaration : Liste des ingrédients

Initialisation : Dosage de chaque ingrédient

TRAITEMENT

I1 : casser les oeufs

I2 : battre les oeufs

I3 : ajouter le sucre + vanille

I4 : ajouter la farine + levure + sel

I5 : mélanger les ingrédients

I6 : délayer le tout avec l’eau + lait + rhum + huile

I7 : si la pâte est trop épaisse, ajouter un peu de lait

SORTIE

I8 : laisser reposer la pâte

ANALYSE PÉDAGOGIQUE

Ce premier exemple avec la recette de cuisine peut être intéressant car il est très simple pour commencer, et permet de :

    • faire une petite recherche opérationnelle et d’introduire l’importance de l’ordre des instructions,
    • mettre en évidence les trois étapes d’un algorithme : entrée, traitement, sortie,
    • introduire une instruction conditionnelle.

Première recherche par les élèves

  • L’algorithme qui parait être le plus simple est « calcul des coordonnées du milieu d’un segment ».
  • Il permet d’introduire les notions fondamentales de lecture/ écriture, de mettre l’accent sur la différence entre « Afficher un message » et « Afficher la valeur d’une variable », qui sont deux instructions différenciées dans AlgoBox, ainsi que sur l’instruction « Lire la valeur d’une variable ».
  • Dans un premier temps l’algorithme a été cherché sur papier, puis le programme écrit sans le tracé du graphique, et à une autre séance, nous avons rajouté le tracé du graphique.
  • La prise en main du logiciel avec ses différentes fonctionnalités a duré environ 1 heure, l’écriture de l’algorithme, 1 heure, les rectifications éventuelles et pour certains l’écriture d’un autre algorithme, encore 1 heure.

COMMENTAIRES

  • Je donnerai d’abord l’algorithme et le programme corrects, puis des programmes comportant des erreurs commises par mes élèves de seconde.
  • Ceux-ci sont intéressants car ils permettent de mettre en évidence les difficultés rencontrées.
  • On notera toutefois que certains élèves ont eu le temps d’écrire le programme correct sans le tracé du graphique, certains avec le tracé du graphique, et d’autres d’écrire également l’algorithme « calcul de la distance entre deux points ».
  • Ces séances pourrons donner l’occasion de faire de la pédagogie différenciée, puisque les élèves n’en ont pas été au même stade d’apprentissage ni de compréhension.

ALGORITHME : COORDONNÉS DU MILIEU D’UN SEGMENT

ENTREE

Déclaration : xA, yA, xB, yB, xI, yI, nombres entiers (ou réels)

Affectation : Afficher « Entrer l’abscisse du point A »

Lire xA

Afficher ’’Entrer l’ordonnée du point A’’

Lire yA

Afficher ’’Entrer l’abscisse du point B’’

Lire xB

Afficher ’’Entrer l’ordonnée du point B’’

Lire yB

TRAITEMENT

Donner à xI la valeur (xA+xB)/2

Donner à yI la valeur (yA+yB)/2

SORTIE

Afficher ’’L’abscisse du milieu I de [AB] est :’’ , xI

Afficher ’’L’ordonnée du milieu I de [AB] est :’’ , yI

Remarque : Dans les programmes qui suivent écrits avec AlgoBox, l’indentation n’apparaît pas à l’impression mais est automatique lors de l’écriture du code.

PROGRAMME ALGOBOX COORDONNÉS DU MILIEU

1 VARIABLES

2 xA EST_DU_TYPE NOMBRE

3 yA EST_DU_TYPE NOMBRE

4 xB EST_DU_TYPE NOMBRE

5 yB EST_DU_TYPE NOMBRE

6 xI EST_DU_TYPE NOMBRE

7 yI EST_DU_TYPE NOMBRE

8 DEBUT_ALGORITHME

9 AFFICHER ’’Donner une valeur à xA’’

10 LIRE xA

11 AFFICHER ’’Donner une valeur à yA’’

12 LIRE yA

13 AFFICHER ’’Donner une valeur à xB’’

14 LIRE xB

15 AFFICHER ’’Donner une valeur à yB’’

16 LIRE yB

17 xI PREND_LA_VALEUR (xA+xB)/2

18 yI PREND_LA_VALEUR (yA+yB)/2

19 AFFICHER ’’L’abscisse du milieu I de [AB] est xI=’’

20 AFFICHER xI

21 AFFICHER ’’L’ordonnée du milieu I de [AB] est yI=’’

22 AFFICHER yI

23 TRACER_POINT (xA,yA)

24 TRACER_POINT (xB,yB)

25 TRACER_POINT (xI,yI)

26 TRACER_SEGMENT (xA,yA)->(xB,yB)

27 FIN_ALGORITHME

PROGRAMMES D’ÉLÈVES AVEC DES ERREURS

1 VARIABLES

2 xa EST_DU_TYPE NOMBRE

3 ya EST_DU_TYPE NOMBRE

4 xb EST_DU_TYPE NOMBRE

5 yb EST_DU_TYPE NOMBRE

6 xi EST_DU_TYPE NOMBRE

7 yi EST_DU_TYPE NOMBRE

8 DEBUT_ALGORITHME

9 AFFICHER ’’donner une valeur à xa’’

10 AFFICHER ’’donner une à ya’’

11 AFFICHER ’’donner une valeur à xb’’

12 AFFICHER ’’donner une valeur à yb’’

13 AFFICHER ’’donner une valeur à xi’’

14 AFFICHER ’’donner une valeur à yi’’

15 FIN_ALGORITHME

1 VARIABLES

2 xA EST_DU_TYPE NOMBRE

3 yA EST_DU_TYPE NOMBRE

4 xB EST_DU_TYPE NOMBRE

5 yB EST_DU_TYPE NOMBRE

6 xI EST_DU_TYPE NOMBRE

7 yI EST_DU_TYPE NOMBRE

8 DEBUT_ALGORITHME

9 LIRE xA

10 LIRE yA

11 LIRE xB

12 LIRE yB

13 LIRE xI

14 LIRE yI

15 FIN_ALGORITHME

1 VARIABLES

2 xA EST_DU_TYPE NOMBRE

3 xB EST_DU_TYPE NOMBRE

4 yA EST_DU_TYPE NOMBRE

5 yB EST_DU_TYPE NOMBRE

6 xI EST_DU_TYPE NOMBRE

7 yI EST_DU_TYPE NOMBRE

8 DEBUT_ALGORITHME

9 AFFICHER ’’donner une valeur à xA’’

10 LIRE xA

11 AFFICHER ’’donner une valeur à yA’’

12 LIRE yA

13 AFFICHER ’’donner une une valeur à xB’’

14 LIRE xB

15 AFFICHER ’’donner la valeur à yB’’

16 LIRE yB

17 xI PREND_LA_VALEUR (xA+xB)/2

18 xA PREND_LA_VALEUR (yA+yB)/2

19 FIN_ALGORITHME

1 VARIABLES

2 xA EST_DU_TYPE NOMBRE

3 yA EST_DU_TYPE NOMBRE

4 xB EST_DU_TYPE NOMBRE

5 yB EST_DU_TYPE NOMBRE

6 xI EST_DU_TYPE NOMBRE

7 yI EST_DU_TYPE NOMBRE

8 DEBUT_ALGORITHME

9 AFFICHER ’’donner une valeur à xA’’

10 AFFICHER « LIRE xA »

11 AFFICHER ’’donner une valeur à yA’’

12 AFFICHER ’’LIRE yA’’

13 AFFICHER ’’donner une valeur à xB’’

14 AFFICHER ’’LIRE xB’’

15 AFFICHER ’’donner une valeur à yB’’

16 AFFICHER ’’LIRE yB’’

17 xI PREND_LA_VALEUR (xA+xB)/2

18 yI PREND_LA_VALEUR (yA+yB)/2

19 AFFICHER ’’l’abscisse du milileu I de [AB] est:xI=’’

20 AFFICHER ’’LIRE xI’’

21 AFFICHER ’’l’ordonnée du milieu I de[AB] est : yI=’’

22 AFFICHER ’’LIRE yI’’

23 FIN_ALGORITHME

1 VARIABLES

2 xa EST_DU_TYPE NOMBRE

3 ya EST_DU_TYPE NOMBRE

4 xb EST_DU_TYPE NOMBRE

5 yb EST_DU_TYPE NOMBRE

6 xi EST_DU_TYPE NOMBRE

7 yi EST_DU_TYPE NOMBRE

8 DEBUT_ALGORITHME

9 AFFICHER ’’donnée une valeur à xa’’

10 LIRE xa

11 AFFICHER ’’donnée une valeur à ya’’

12 LIRE ya

13 AFFICHER ’’donnée une valeur à xb’’

14 LIRE xb

15 AFFICHER ’’donnée une valeur à yb’’

16 LIRE yb

17 xi PREND_LA_VALEUR (xa+xb)/2

18 yi PREND_LA_VALEUR (ya+yb)/2

19 LIRE xi

20 LIRE yi

21 AFFICHER ’’l’abscisse du milieu I de [AB] est :=xI’’

22 FIN_ALGORITHME

COMMENTAIRES

  • Au travers de ces divers exemples de programmes d’élèves comportant des erreurs, on s’aperçoit que les notions d’Entrée/Sortie qui se traduisent par les instructions Lire/Afficher ne sont pas aisées à comprendre.
  • Pour les élèves qui écrivent « donner une valeur à xA » sans écrire ensuite « lire xA », on peut supposer qu’ils imaginent que la valeur est donnée dès le moment où ils écrivent « donner une valeur à… » alors qu’il s’agit d’un message adressé à l’utilisateur du programme.
  • Cela permet de travailler sur la notion de variable, bien différencier la variable de la valeur qu’elle peut prendre, donc d’insister aussi sur la notion d’affectation.
  • AlgoBox différencie les instructions : « Afficher message » et « Afficher variable », ce qui est également très intéressant au niveau pédagogique.
  • On peut faire remarquer que, quand un message s’affiche, les guillemets sont mis automatiquement, alors que ça n’est pas le cas pour l’affichage d’une variable.

Exemple d’énoncé


Considérons les points A(-1 ;1) , B(1 ;2) et C(3 ;-2).
Utiliser un logiciel de géométrie pour faire le graphique.

  1. Placer ces points dans un repère orthonormé.
  2. Dessiner le triangle ABC.
  3. Que peut-on conjecturer sur ce triangle ?
  4. Calculer les mesures des longueurs des côtés [AB], [BC], et [AC].
  5. Le triangle ABC est-il équilatéral ?
      • Le triangle ABC est-il isocèle ?
      • Le triangle ABC est-il rectangle ?
  6. En déduire la position du centre I du cercle circonscrit au triangle ABC.
  7. Calculer les coordonnées de I, et donner la valeur du rayon de ce cercle. Tracer ce cercle.
  8. Soit E(3 ;1). Montrer que E est un point de ce cercle.

COMMENTAIRES PÉDAGOGIQUES

  • Cet énoncé permet de montrer la nécessité de l’algorithme de calcul de la distance entre deux points qui intervient à plusieurs reprises dans l’exercice.
  • On introduit les algorithmes permettant de tester si un triangle est équilatéral, isocèle, rectangle.
  • Il y a une progressivité dans la difficulté de ces algorithmes car les tests logiques sont de difficultés croissantes.
    • Le test du triangle équilatéral utilise le connecteur logique ET avec deux conditions, dans une structure SI...ALORS…SINON.
    • Le test du triangle isocèle utilise le connecteur logique OU avec trois conditions, dans une structure SI…ALORS…SINON.
    • Le test du triangle rectangle utilise plusieurs tests imbriqués SI…ALORS…SINON.
  • On peut réinvestir tous ces algorithmes dans d’autres exercices.

ALGORITHME ’’TRIANGLE ÉQUILATÉRAL’’

  • Tout d’abord, au niveau de la conception de l’algorithme, certains élèves ont beaucoup de mal à expliciter leur démarche.
  • Même s’ils savent résoudre le problème mathématique posé, ils ne parviennent pas forcément à écrire l’algorithme correctement.
  • Dans tous les programmes où interviennent des calculs de distances, j’ai préféré demander aux élèves de calculer et de faire afficher la distance au carré, et ensuite la distance, pour bien différencier valeur exacte et valeur approchée, et éviter ainsi certains problèmes lors de comparaisons.
  • Une remarque à propos de l’algorithme « triangle équilatéral » : il est d’autant plus intéressant au niveau du travail sur la logique que l’on constate que le test (AB²=AC²) ET (AB²=BC²) est souvent écrit au début par élèves : (AB²=AC²) ET (AB²=BC²) ET (AC²=BC²).

PROGRAMME ALGOBOX TRIANGLE ÉQUILATERAL

1 VARIABLES

2 xA EST_DU_TYPE NOMBRE

3 yA EST_DU_TYPE NOMBRE

4 xB EST_DU_TYPE NOMBRE

5 yB EST_DU_TYPE NOMBRE

6 xC EST_DU_TYPE NOMBRE

7 yC EST_DU_TYPE NOMBRE

8 D1 EST_DU_TYPE NOMBRE

9 D2 EST_DU_TYPE NOMBRE

10 D3 EST_DU_TYPE NOMBRE

11 DEBUT_ALGORITHME

12 AFFICHER ’’donner une valeur à xA’’

13 LIRE xA

14 AFFICHER ’’donner une valeur à yA’’

15 LIRE yA

16 AFFICHER ’’donner une valeur à xB’’

17 LIRE xB

18 AFFICHER ’’donner une valeur à yB’’

19 LIRE yB

20 AFFICHER ’’donner une valeur à xC’’

21 LIRE xC

22 AFFICHER ’’donner une valeur à yC’’

23 LIRE yC

24 TRACER_POINT (xA,yA)

25 TRACER_POINT (xB,yB)

26 TRACER_POINT (xC,yC)

27 TRACER_SEGMENT (xA,yA)->(xB,yB)

28 TRACER_SEGMENT (xA,yA)->(xC,yC)

29 TRACER_SEGMENT (xB,yB)->(xC,yC)

30 D1 PREND_LA_VALEUR pow((xB-xA),2)+pow((yB-yA),2)

31 D2 PREND_LA_VALEUR pow((xC-xA),2)+pow((yC-yA),2)

32 D3 PREND_LA_VALEUR pow((xC-xB),2)+pow((yC-yB),2)

33 AFFICHER ’’la distance AB^2 vaut’’

34 AFFICHER D1

35 AFFICHER ’’la distance AC^2 vaut’’

36 AFFICHER D2

37 AFFICHER ’’la distance BC^2 vaut’’

38 AFFICHER D3

39 SI ((D1==D2) ET (D2==D3) ) ALORS

40 DEBUT_SI

41 AFFICHER ’’le triangle est équilatéral’’

42 FIN_SI

43 SINON

44 DEBUT_SINON

45 AFFICHER ’’le triangle n’est pas équilatéral’’

46 FIN_SINON

47 FIN_ALGORITHME

PROGRAMME ALGOBOX TRIANGLE ISOCÈLE

  • Tout le début de l’algorithme jusqu’à la ligne 38, est identique à l’algorithme « triangle équilatéral ».
  • Ils ne diffèrent qu’à partir des tests (ligne 39).
39 SI ((D1==D2) OU (D2==D3) OU (D1==D3)) ALORS

40 DEBUT_SI

41 AFFICHER ’’le triangle est isocèle’’

42 FIN_SI

43 SINON

44 DEBUT_SINON

45 AFFICHER ’’le triangle n’est pas isocèle’’

46 FIN_SINON

47 FIN_ALGORITHME

PROGRAMME ALGOBOX TRIANGLE RECTANGLE

  • Tout le début de l’algorithme jusqu’à la ligne 38, est identique à l’algorithme « triangle équilatéral » ou « triangle isocèle ».
  • Ils ne diffèrent qu’à partir des tests (ligne 39).
  • Nous avons fait le choix de ne pas introduire de tri, jugé trop difficile à ce stade d’apprentissage.
39 SI (D3==D1+D2) ALORS

40 DEBUT_SI

41 AFFICHER ’’le triangle est rectangle en A’’

42 FIN_SI

43 SINON

44 DEBUT_SINON

45 SI (D2==D1+D3) ALORS

46 DEBUT_SI

47 AFFICHER ’’Le triangle est rectangle en B’’

48 FIN_SI

49 SINON

50 DEBUT_SINON

51 SI (D1==D2+D3) ALORS

52 DEBUT_SI

53 AFFICHER ’’Le triangle est rectangle en C’’

54 FIN_SI

55 SINON

56 DEBUT_SINON

57 AFFICHER ’’Le triangle n’est pas rectangle’’

58 FIN_SINON

59 FIN_SINON

60 FIN_SINON

61 FIN_ALGORITHME

Activité : calcul du salaire d’un employé

  • On veut écrire une fonction permettant de calculer le salaire d’un employé payé à l’heure à partir de son salaire horaire et du nombre d’heures de travail.
  • Les règles de calcul sont les suivantes : le taux horaire est majoré, pour les heures supplémentaires,
    • de 25% au-delà de 160 heures,
    • de 50% au-delà de 200 heures.

FICHE PÉDAGOGIQUE

  • Cet exercice permet de faire calculer une expression qui dépend de l’intervalle où l’on se place.
  • C’est un algorithme opératoire qui utilise des tests imbriqués.
  • Cet exercice permet également de travailler sur les coefficients multiplicateurs.
  • On écrira le programme « FONCTION SALAIRES », donnant les valeurs de la fonction salaires, définie par morceaux sur [0 ;160[, [160 ; 200[, [200 ; 240], et qui est continue.
  • La fonction renvoie le salaire S en fonction du nombre d’heures effectuées nh (nh compris entre 0 et 240), avec un salaire horaire entré au clavier sh.
  • On fera également tracer la courbe de la fonction par le programme.

PROGAMME ALGOBOX FONCTION SALAIRE

1 VARIABLES

2 sh EST_DU_TYPE NOMBRE

3 nh EST_DU_TYPE NOMBRE

4 S EST_DU_TYPE NOMBRE

5 DEBUT_ALGORITHME

6 AFFICHER ’’Entrer le salaire horaire’’

7 LIRE sh

8 AFFICHER ’’Le salaire horaire vaut :’’

9 AFFICHER sh

10 SI ((nh<0) OU (nh>240)) ALORS

11 DEBUT_SI

12 AFFICHER ’’Le nombre d’heures est incorrect’’

13 FIN_SI

14 SINON

15 DEBUT_SINON

16 TANT_QUE ((nh>=0) ET (nh<=240)) FAIRE

17 DEBUT_TANT_QUE

18 SI ((nh>=0) ET (nh<160)) ALORS

19 DEBUT_SI

20 S PREND_LA_VALEUR sh*nh

21 FIN_SI

22 SINON

23 DEBUT_SINON

24 SI ((nh>=160) ET (nh<200)) ALORS

25 DEBUT_SI

26 S PREND_LA_VALEUR 160*sh + (nh-160)*1.25*sh

27 FIN_SI

28 SINON

29 DEBUT_SINON

30 SI ((nh>=200) ET (nh<=240)) ALORS

31 DEBUT_SI

32 S PREND_LA_VALEUR 160*sh + 40*sh*1.25 + (nh-200)*sh*1.5

33 FIN_SI

33 FIN_SI

34 FIN_SINON

35 FIN_SINON

36 TRACER_POINT (nh,S)

37 AFFICHER ’’nh=’’

38 AFFICHER nh

39 AFFICHER ’’S=’’

40 AFFICHER S

41 nh PREND_LA_VALEUR nh+1

42 FIN_TANT_QUE

43 FIN_SINON

44 FIN_ALGORITHME

Le jeu du lièvre et de la tortue

Règle du jeu.

  • À chaque tour, on lance un dé. Si le 6 sort, alors le lièvre gagne la partie, sinon la tortue avance d’une case.
  • La tortue gagne quand elle a avancé 6 fois.

Question : le jeu est-il à l’avantage du lièvre ou de la tortue ?

  • Le document ressources fournit 3 algorithmes.
  • Je n’exposerai que le troisième qui contient une boucle.

ALGORITHME 3 : Avec une structure itérative conditionnelle

Évidemment, plutôt que de répéter 6 fois les mêmes instructions, il est possible de simuler une partie à l’aide d’une boucle. De cette façon, il sera facile d’expérimenter de nouveaux jeux en modifiant le nombre de cases que doit parcourir la tortue.

Variables

dé : la face du dé tirée au hasard

case : le numéro de la case sur laquelle se trouve la tortue

N : le nombre de cases que doit parcourir la tortue pour gagner.

Initialisation

N prend la valeur 6

case prend la valeur 0.

Traitement

Répète

│ dé prend une valeur entière aléatoire entre 1 et 6 inclus.

Si dé < 6 alors

│ │ case prend la valeur case + 1

│ └

jusqu’à [ dé = 6 ou case = N ]

Sortie

Si case = N alors

Affiche « La tortue gagne »

Sinon

Affiche « Le lièvre gagne »

PROGRAMME SCILAB fourni par le document ressources

N=6 ;

Ncase=0 ;

de=0 ;

while (de<6│Ncase

de=floor(rand()*6+1) ;

if (de<6)

Ncase=Ncase+1 ;

end ;

end ;

if (Ncase==6)

disp(’’La tortue gagne’’) ;

else

disp(’’Le lièvre gagne’’) ;

end ;

Remarques :

  • « case » est un mot-clé du langage SCILAB ; la variable s’appelle donc « Ncase ».
  • La structure repeat..until n’existe pas dans SCILAB, le code est donc légèrement aménagé par rapport à l’algorithme.
  • Pour entrer dans la boucle une première fois, la variable « de » est initialisée avec la valeur arbitraire 0.

COMMENTAIRES

  • Ci-après le programme écrit avec AlgoBox.
  • Avec plusieurs exécutions, on obtient par exemple : sur un essai avec 10 simulations, la tortue a gagné 4 fois et le lièvre 6 fois.
  • Modifications possibles de cet algorithme :
    • On peut ensuite réécrire le programme en lui faisant compter le nombre de fois où la tortue gagne et le nombre de fois où le lièvre gagne, pour un nombre de simulations entré au clavier.
    • On peut également décider de changer N, le nombre de cases nécessaires pour que la tortue gagne et, dans ce cas, ajouter une lecture de N entré au clavier.

PROGRAMME ALGOBOX

1 VARIABLES

2 N EST_DU_TYPE NOMBRE

3 de EST_DU_TYPE NOMBRE

4 ca EST_DU_TYPE NOMBRE

5 DEBUT_ALGORITHME

6 ca PREND_LA_VALEUR 0

7 N PREND_LA_VALEUR 6

8 de PREND_LA_VALEUR 0

9 TANT_QUE (de< 6 ET ca

10 DEBUT_TANT_QUE

11 de PREND_LA_VALEUR floor(random()*6 + 1)

12 SI (de<6) ALORS

13 DEBUT_SI

14 ca PREND_LA_VALEUR ca+1

15 FIN_SI

16 FIN_TANT_QUE

17 SI (ca==N) ALORS

18 DEBUT_SI

19 AFFICHER ’’La tortue gagne’’

20 FIN_SI

21 SINON

22 DEBUT_SINON

23 AFFICHER ’’Le lièvre gagne’’

24 FIN_SINON

25 FIN_ALGORITHME

Comment est traitée la question dans les autres académies ?

  • À l’université d’été de Saint-Flour dont l’intitulé était « Des problèmes de mathématiques venus d’ailleurs », les questions ont été, d’une part, sur les applications de l’algorithmique dans des domaines très variés comme la prise de décision, le fonctionnement d’Internet, l’étude de la leucémie, et, d’autre part, d’ordre pédagogique sur l’enseignement de l’algorithmique.
  • Des groupes de travail se sont formés pour mutualiser des travaux, création d’activités algorithmiques, réflexions...
  • La question également soulevée est celle de l’évaluation, en particulier en algorithmique.
  • Des pistes ont été données dans les documents ressources et d’autres le seront sans doute au fur et à mesure des réflexions et des expériences de chacun avec les élèves tout au long de l’année, sachant également que les IREM et les sites académiques proposent de plus en plus de documents très intéressants.

Conclusion

  • Je pense que l’introduction de l’algorithmique en seconde, et très certainement bientôt aux autres classes du lycée toutes sections confondues, donne un renouveau à l’enseignement des mathématiques dans le secondaire.
  • Outre les problèmes de tâtonnements du début, je crois que ce domaine transversal à toutes les parties du programme est très motivant à la fois pour les élèves et les professeurs.
  • Cela a permis de redynamiser notre réflexion, nos questionnements, et nos travaux dans les différents champs de notre travail.

Documents joints

Algorithmique et programmation
Algorithmique et programmation
Diaporama de l’exposé d’Isabelle Abou

Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 22 novembre 2017, 14h-18h, campus du Tampon, amphi 120 D
- Mercredi 7 février 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 7 mars 2018, 14h-18h, campus du Tampon
- Mercredi 4 avril 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 2 mai, 14h-18h, campus du Tampon
- Mardi 5 juin 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 6 juin, 14h-18h, campus du Tampon

Fête de la science

Campus du Moufia, 16 et 17 novembre 2017.
Thème : « La recherche à l’heure du numérique »

Semaine des mathématiques

Du 26 au 31 mars 2018.
Thème : « Mathématiques et mouvement »


Brèves

Décès de Roger Mohr

mardi 27 juin

On sait bien que Nicolas Bourbaki n’était pas le nom d’une personne mais le pseudonyme d’un groupe. L’équivalent en informatique théorique est Claude Livercy, auteur de la théorie des programmes. Roger Mohr était un des membres de Claude Livercy.

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

L’algorithmique à l’IREM de Lille

vendredi 26 juin 2009

Le groupe AMECMI de l’IREM de Lille vient de mettre en ligne des ressources importantes au service des professeurs de Seconde :

- Algorithmique et programmation (Emmanuel Ostenne)
- Bibliographie amoureuse de l’algorithmique (Alain Juhel)

Statistiques

Dernière mise à jour

dimanche 12 novembre 2017

Publication

773 Articles
Aucun album photo
133 Brèves
11 Sites Web
132 Auteurs

Visites

47 aujourd'hui
911 hier
2164282 depuis le début
5 visiteurs actuellement connectés