Académique Documents
Professionnel Documents
Culture Documents
PROGRAMMATION
REFLEXIONS ET
EXPERIMENTATIONS
IREM DE LA REUNION
Le 28 Octobre 2009
Isabelle ABOU 1
POURQUOI
L’ALGORITHMIQUE?
- Nécessité pour l’École de s’inscrire dans la société civile
où les média sont omniprésents.
Isabelle ABOU 2
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.
Isabelle ABOU 3
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.
Isabelle ABOU 4
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.
Isabelle ABOU 5
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.
Isabelle ABOU 6
EXECALGO
C'est un logiciel gratuit, mais qui n'est pas libre ni multi-plateforme.
Isabelle ABOU 7
SCRATCH
C'est un logiciel libre, gratuit, et multi-plateforme.
Isabelle ABOU 8
SCILAB LYCEE
C'est aussi un logiciel libre, gratuit, et multi-plateforme qui a été reformaté
pour le lycée à partir du logiciel Scilab.
Il est utilisé dans les classes préparatoires aux grandes écoles mais la
syntaxe reste assez simple, plutôt synthétique.
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.
Isabelle ABOU 9
ALGOBOX
C’est un logiciel libre, multi-plateforme et gratuit.
Tous les algorithmes peuvent être exécutés et testés en mode classique, ainsi
qu’en mode pas à pas.
Démo
Tutoriel
Isabelle ABOU 10
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.
Isabelle ABOU 13
EXPERIENCE PERSONNELLE
Introduction à l’algorithmique grâce à une recette de
cuisine.
Isabelle ABOU 14
QUELLES ACTIVITES ALGORITHMIQUES?
COMMENT LES RELIER AU PROGRAMME?
Je présenterai:
* 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.
Isabelle ABOU 16
ANALYSE PEDAGOGIQUE
Ce premier exemple avec la recette de cuisine
peut être intéressant car il est très simple pour
commencer, et permet de:
Isabelle ABOU 17
PREMIERE RECHERCHE PAR
LES ELEVES
L’algorithme qui parait être le plus simple est « calcul des
coordonnées du milieu d’un segment ».
Isabelle ABOU 18
COMMENTAIRES
Je donnerai d’abord l’algorithme et le programme corrects,
puis des programmes comportant des erreurs commises
par mes élèves de seconde.
Isabelle ABOU 19
ALGORITHME: COORDONNEES
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.
Isabelle ABOU 20
PROGRAMME ALGOBOX
COORDONNEES DU MILIEU
1 VARIABLES 17 xI PREND_LA_VALEUR
2 xA EST_DU_TYPE NOMBRE (xA+xB)/2
3 yA EST_DU_TYPE NOMBRE
4 xB EST_DU_TYPE NOMBRE 18 yI PREND_LA_VALEUR
5 yB EST_DU_TYPE NOMBRE (yA+yB)/2
6 xI EST_DU_TYPE NOMBRE
7 yI EST_DU_TYPE NOMBRE
19 AFFICHER "L'abscisse du milieu I
8 DEBUT_ALGORITHME de [AB] est xI="
9 AFFICHER "Donner une valeur à xA"
10 LIRE xA
20 AFFICHER xI
11 AFFICHER "Donner une valeur à 21 AFFICHER "L'ordonnée du milieu
yA"
12 LIRE yA I de [AB] est yI="
13 AFFICHER "Donner une valeur à 22 AFFICHER yI
xB"
14 LIRE xB 23 TRACER_POINT (xA,yA)
15 AFFICHER "Donner une valeur à
yB"
24 TRACER_POINT (xB,yB)
16 LIRE yB
25 TRACER_POINT (xI,yI)
26 TRACER_SEGMENT (xA,yA)-
>(xB,yB)
27 FIN_ALGORITHME
Isabelle ABOU 21
2 PROGRAMMES D’ELEVES
AVEC DES ERREURS
1 VARIABLES 1 VARIABLES
2 xa EST_DU_TYPE NOMBRE 2 xA EST_DU_TYPE NOMBRE
3 ya EST_DU_TYPE NOMBRE 3 yA EST_DU_TYPE NOMBRE
4 xb EST_DU_TYPE NOMBRE 4 xB EST_DU_TYPE NOMBRE
5 yb EST_DU_TYPE NOMBRE 5 yB EST_DU_TYPE NOMBRE
6 xi EST_DU_TYPE NOMBRE 6 xI EST_DU_TYPE NOMBRE
7 yi EST_DU_TYPE NOMBRE 7 yI EST_DU_TYPE NOMBRE
8 DEBUT_ALGORITHME 8 DEBUT_ALGORITHME
9 AFFICHER "donner une valeur à xa" 9 LIRE xA
10 AFFICHER "donner une à ya" 10 LIRE yA
11 AFFICHER "donner une valeur à xb" 11 LIRE xB
12 AFFICHER "donner une valeur à yb" 12 LIRE yB
13 AFFICHER "donner une valeur à xi" 13 LIRE xI
14 AFFICHER "donner une valeur à yi" 14 LIRE yI
15 FIN_ALGORITHME 15 FIN_ALGORITHME
Isabelle ABOU 22
2 PROGRAMMES D’ELEVES
AVEC DES ERREURS 1 VARIABLES
1 VARIABLES 2 xA EST_DU_TYPE NOMBRE
2 xA EST_DU_TYPE NOMBRE 3 yA EST_DU_TYPE NOMBRE
3 xB EST_DU_TYPE NOMBRE 4 xB EST_DU_TYPE NOMBRE
4 yA EST_DU_TYPE NOMBRE 5 yB EST_DU_TYPE NOMBRE
5 yB EST_DU_TYPE NOMBRE 6 xI EST_DU_TYPE NOMBRE
6 xI EST_DU_TYPE NOMBRE 7 yI EST_DU_TYPE NOMBRE
7 yI EST_DU_TYPE NOMBRE 8 DEBUT_ALGORITHME
8 DEBUT_ALGORITHME 9 AFFICHER "donner une valeur à xA"
9 AFFICHER "donner une valeur à xA" 10 AFFICHER "LIRE xA"
10 LIRE xA 11 AFFICHER "donner une valeur à yA"
11 AFFICHER "donner une valeur à yA" 12 AFFICHER "LIRE yA"
12 LIRE yA 13 AFFICHER "donner une valeur à xB"
13 AFFICHER "donner une une valeur à xB" 14 AFFICHER "LIRE xB"
14 LIRE xB 15 AFFICHER "donner une valeur à yB"
15 AFFICHER "donner la valeur à yB" 16 AFFICHER "LIRE yB"
16 LIRE yB 17 xI PREND_LA_VALEUR (xA+xB)/2
17 xI PREND_LA_VALEUR (xA+xB)/2 18 yI PREND_LA_VALEUR (yA+yB)/2
18 xA PREND_LA_VALEUR (yA+yB)/2 19 AFFICHER "l'abscisse du milileu I de [AB]
19 FIN_ALGORITHME 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
Isabelle ABOU 23
PROGRAMME D’ELEVE 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 "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
Isabelle ABOU 24
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.
Isabelle ABOU 28
PROGRAMME ALGOBOX
TRIANGLE EQUILATERAL
1 VARIABLES 24 TRACER_POINT (xA,yA)
2 xA EST_DU_TYPE NOMBRE 25 TRACER_POINT (xB,yB)
3 yA EST_DU_TYPE NOMBRE 26 TRACER_POINT (xC,yC)
4 xB EST_DU_TYPE NOMBRE 27 TRACER_SEGMENT (xA,yA)->(xB,yB)
5 yB EST_DU_TYPE NOMBRE 28 TRACER_SEGMENT (xA,yA)->(xC,yC)
6 xC EST_DU_TYPE NOMBRE 29 TRACER_SEGMENT (xB,yB)->(xC,yC)
7 yC EST_DU_TYPE NOMBRE 30 D1 PREND_LA_VALEUR pow((xB-xA),2)+pow((yB-yA),2)
8 D1 EST_DU_TYPE NOMBRE 31 D2 PREND_LA_VALEUR pow((xC-xA),2)+pow((yC-yA),2)
9 D2 EST_DU_TYPE NOMBRE 32 D3 PREND_LA_VALEUR pow((xC-xB),2)+pow((yC-yB),2)
10 D3 EST_DU_TYPE NOMBRE 33 AFFICHER "la distance AB^2 vaut "
11 DEBUT_ALGORITHME 34 AFFICHER D1
12 AFFICHER "donner une valeur à xA" 35 AFFICHER "la distance AC^2 vaut "
13 LIRE xA 36 AFFICHER D2
14 AFFICHER "donner une valeur à yA" 37 AFFICHER "la distance BC^2 vaut "
15 LIRE yA 38 AFFICHER D3
16 AFFICHER "donner une valeur à xB" 39 SI ((D1==D2) ET (D2==D3) ) ALORS
17 LIRE xB 40 DEBUT_SI
18 AFFICHER "donner une valeur à yB" 41 AFFICHER "le triangle est équilatéral"
19 LIRE yB 42 FIN_SI
20 AFFICHER "donner une valeur à xC" 43 SINON
21 LIRE xC 44 DEBUT_SINON
22 AFFICHER "donner une valeur à yC" 45 AFFICHER "le triangle n'est pas équilatéral"
23 LIRE yC 46 FIN_SINON
47 FIN_ALGORITHME
Isabelle ABOU 29
PROGRAMME ALGOBOX
TRIANGLE ISOCELE
Tout le début de 39 SI ((D1==D2) OU (D2==D3) OU
l’algorithme jusqu’à la (D1==D3)) ALORS
ligne 38, est identique à 40 DEBUT_SI
l’algorithme « triangle 41 AFFICHER "le triangle est isocèle"
équilatéral ». 42 FIN_SI
Ils ne diffèrent qu’à partir 43 SINON
des tests (ligne 39). 44 DEBUT_SINON
45 AFFICHER "le triangle n'est pas
isocèle"
46 FIN_SINON
47 FIN_ALGORITHME
Isabelle ABOU 30
PROGRAMME ALGOBOX
TRIANGLE RECTANGLE
Tout le début de 39 SI (D3==D1+D2) ALORS
40 DEBUT_SI
l’algorithme jusqu’à la
45 SI (D2==D1+D3) ALORS
isocèle ». 46 DEBUT_SI
47 AFFICHER "Le triangle est rectangle en B"
Ils ne diffèrent qu’à partir
48 FIN_SI
des tests (ligne 39). 49 SINON
50 DEBUT_SINON
51 SI (D1==D2+D3) ALORS
Nous avons fait le choix de 52 DEBUT_SI
ne pas introduire de tri, 53 AFFICHER "Le triangle est rectangle en C"
54 FIN_SI
jugé trop difficile à ce
55 SINON
stade d’apprentissage. 56 DEBUT_SINON
57 AFFICHER "Le triangle n'est pas
rectangle"
58 FIN_SINON
59 FIN_SINON
60 FIN_SINON
61 FIN_ALGORITHME
Isabelle ABOU 31
ACTIVITE: CALCUL DU
SALAIRE D’UN EMPLOYE
• 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.
Isabelle ABOU 33
PROGAMME ALGOBOX
FONCTION SALAIRE
1 VARIABLES 24 SI ((nh>=160) ET (nh<200)) ALORS
2 sh EST_DU_TYPE NOMBRE 25 DEBUT_SI
3 nh EST_DU_TYPE NOMBRE 26 S PREND_LA_VALEUR 160*sh + (nh-
4 S EST_DU_TYPE NOMBRE 160)*1.25*sh
5 DEBUT_ALGORITHME 27 FIN_SI
6 AFFICHER "Entrer le salaire horaire " 28 SINON
7 LIRE sh 29 DEBUT_SINON
8 AFFICHER "Le salaire horaire vaut: " 30 SI ((nh>=200) ET (nh<=240)) ALORS
9 AFFICHER sh 31 DEBUT_SI
10 SI ((nh<0) OU (nh>240)) ALORS 32 S PREND_LA_VALEUR 160*sh +
11 DEBUT_SI 40*sh*1.25 + (nh-200)*sh*1.5
12 AFFICHER "Le nombre d'heures est 33 FIN_SI
incorrect" 33 FIN_SI
13 FIN_SI 34 FIN_SINON
14 SINON 35 FIN_SINON
15 DEBUT_SINON 36 TRACER_POINT (nh,S)
16 TANT_QUE ((nh>=0) ET (nh<=240)) FAIRE 37 AFFICHER "nh="
17 DEBUT_TANT_QUE 38 AFFICHER nh
18 SI ((nh>=0) ET (nh<160)) ALORS 39 AFFICHER "S="
19 DEBUT_SI 40 AFFICHER S
20 S PREND_LA_VALEUR sh*nh 41 nh PREND_LA_VALEUR nh+1
21 FIN_SI 42 FIN_TANT_QUE
22 SINON 43 FIN_SINON
23 DEBUT_SINON
44 FIN_ALGORITHME
Isabelle ABOU 34
LE JEU DU LIEVRE 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.
Isabelle ABOU 35
•
ALGORITHME 3
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 »
• └
Isabelle ABOU 36
PROGRAMME SCILAB
fourni par le document ressource
• N=6;
• Ncase=0;
• de=0;
• while (de<6 | Ncase<N) do
• 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.
Isabelle ABOU 37
COMMENTAIRES
Ci-après le programme écrit avec AlgoBox.
Isabelle ABOU 39
COMMENT EST TRAITEE LA QUESTION
DANS LES AUTRES ACADEMIES?
A l’Université d’été de Saint Four 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.
Isabelle ABOU 40
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.
Isabelle ABOU 42