Vous êtes sur la page 1sur 42

ALGORITHMIQUE ET

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.

 - 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.

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.

 - 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.

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.

 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.

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.

 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.

Isabelle ABOU 6
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.

Isabelle ABOU 7
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 7ans.

 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.

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 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.

Isabelle ABOU 9
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
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.

 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. Isabelle ABOU 11
COMPETENCES
 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...;
Isabelle ABOU
Isabelle ABOU 12
 – 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.

Isabelle ABOU 13
EXPERIENCE 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…

 A 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…

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.

 Avec une analyse pédagogique de chaque


activité.
Isabelle ABOU 15
INTRODUCTION
RECETTE DE CUISINE
 Ingrédients de la pâte à crêpes:  Exercice:
 200g de farine  Remettre dans l'ordre les
 1 pincée de sel instructions de la recette de la
 ½ sachet de levure pâte à crêpes.
 3 cuillerées à soupe d'huile  Identifier les étapes de la recette
 15cl d'eau avec les étapes d’un algorithme.
 15 cl de lait
 4 oeufs
 4 cuillerées à soupe de rhum
 2 cuillerées à soupe de sucre + vanille
 ENTREE:
 Déclaration: Liste des ingrédients
 Préparation de la pâte dans le désordre:
 Initialisation: Dosage de chaque ingrédient
 ajouter le sucre + vanille
 TRAITEMENT:
 si la pâte est trop épaisse, ajouter un peu de
 I1: casser les oeufs
lait  I2: battre les oeufs
 mélanger les ingrédients  I3: ajouter le sucre + vanille
 battre les œufs  I4: ajouter la farine + levure + sel
 laisser reposer la pâte  I5: mélanger les ingrédients
 casser les oeufs  I6: délayer le tout avec l'eau + lait +
 délayer le tout avec l'eau + lait + rhum + rhum + huile
huile  I7: si la pâte est trop épaisse, ajouter
 ajouter la farine + levure + sel un peu de lait
 SORTIE:
 I8: laisser reposer la pâte

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:

 - 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.

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 ».

 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.

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.

 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.

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.

 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.
Isabelle ABOU 25
EXEMPLE D’ENONCE
 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.
Isabelle ABOU 26
COMMENTAIRES

PEDAGOGIQUES
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.


Isabelle ABOU 27
COMMENTAIRES PEDAGOGIQUES
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²).

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

 41 AFFICHER "le triangle est rectangle en A"


ligne 38, est identique à  42 FIN_SI
l’algorithme « triangle  43 SINON
44 DEBUT_SINON
équilatéral » ou « triangle

 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.

• 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.
Isabelle ABOU 32
FICHE PEDAGOGIQUE
• 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.

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.

• 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.

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.

 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.
Isabelle ABOU 38
PROGRAMME ALGOBOX
 1 VARIABLES  12 SI (de<6) ALORS
 2 N EST_DU_TYPE NOMBRE  13 DEBUT_SI
 3 de EST_DU_TYPE NOMBRE  14 ca PREND_LA_VALEUR ca+1
 4 ca EST_DU_TYPE NOMBRE  15 FIN_SI
 5 DEBUT_ALGORITHME  16 FIN_TANT_QUE
 6 ca PREND_LA_VALEUR 0  17 SI (ca==N) ALORS
 7 N PREND_LA_VALEUR 6  18 DEBUT_SI
 8 de PREND_LA_VALEUR 0  19 AFFICHER "La tortue gagne"
 9 TANT_QUE (de< 6 ET ca<N)  20 FIN_SI
FAIRE  21 SINON
 10 DEBUT_TANT_QUE  22 DEBUT_SINON
 11 de PREND_LA_VALEUR  23 AFFICHER "Le lièvre gagne"
floor(random()*6 + 1)  24 FIN_SINON
 25 FIN_ALGORITHME

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.

 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.

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.

 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.
Isabelle ABOU 41
MERCI DE VOTRE
ATTENTION

Isabelle ABOU 42

Vous aimerez peut-être aussi