La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1Isabelle ABOU ALGORITHMIQUE STAGE LA REUNION. 2Isabelle ABOU PLAN DE LEXPOSE I. LALGORITHMIQUE II. LALGORITHMIQUE AU LYCEE III. LE LOGICIEL ALGOBOX IV.

Présentations similaires


Présentation au sujet: "1Isabelle ABOU ALGORITHMIQUE STAGE LA REUNION. 2Isabelle ABOU PLAN DE LEXPOSE I. LALGORITHMIQUE II. LALGORITHMIQUE AU LYCEE III. LE LOGICIEL ALGOBOX IV."— Transcription de la présentation:

1 1Isabelle ABOU ALGORITHMIQUE STAGE LA REUNION

2 2Isabelle ABOU PLAN DE LEXPOSE I. LALGORITHMIQUE II. LALGORITHMIQUE AU LYCEE III. LE LOGICIEL ALGOBOX IV. ACTIVITES ALGORITHMIQUES

3 3Isabelle ABOU PARTIE 4: ACTIVITES ALGORITHMIQUES

4 4Isabelle ABOU INTRODUCTION Dans cette partie sont présentés des exemples dactivités possibles en seconde qui intègrent des algorithmes dans leur résolution. Les exemples traités ici sont issus des sources suivantes: - certains ont été imaginés par lauteur de ce stage en suivant les instructions du nouveau programme officiel de Seconde, - dautres sont tirés de deux documents édités en juin et juillet 2009 par la Direction Générale de lEnseignement scolaire « Ressources pour la classe de Seconde » -Algorithmique-, et -Probabilités et statistiques-. - d'autres encore ont été tirés de sites Internet ou de manuels puis retravaillés et remaniés. Les programmes ont été écrits avec AlgoBox, ceux tirés des documents ressources sont écrits dans dautres langages. Ces exemples pourront évidemment être, discutés, critiqués, et éventuellement améliorés.

5 Isabelle ABOU5 PRESENTATION Pour introduire la notion dalgorithmique, on pourra sappuyer sur des situations relevant de la vie courante (recette de cuisine) et/ou de petits algorithmes opératoires sous forme de jeu (jeu du tour de magie). On traitera des algorithmes en relation avec les trois grandes parties de programme: - Fonctions - Géométrie - Probabilités et statistiques. A intégrer ensuite dans les chapitres appropriés. Le but nétant pas de donner une liste exhaustive dalgorithmes possibles, ce qui est de toute façon impossible, mais den donner un certain nombre, en relation avec des activités et résolution de problèmes, et qui paraissent appropriés à létat desprit du nouveau programme.

6 Isabelle ABOU6 EXEMPLE AVEC UNE 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 dun 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

7 Isabelle ABOU7 ANALYSE PEDAGOGIQUE Ce premier exemple avec la recette de cuisine peut être intéressant car - il est très simple pour commencer, - il permet de faire une petite recherche opérationnelle et dintroduire limportance de lordre des instructions, - il permet de mettre en évidence les trois étapes dun algorithme: entrée, traitement, sortie, - il permet dintroduire une instruction conditionnelle.

8 Isabelle ABOU8 JEU DU TOUR DE MAGIE Le professeur demande aux élèves deffectuer mentalement les calculs suivants: - Prendre un nombre entier, - Lui ajouter 3, - Multiplier le résultat obtenu par le nombre de départ, - Retrancher à ce nombre le carré du nombre de départ. Le professeur prend un élève au hasard, et lui demande de lui donner le nombre quil a obtenu après calculs. Il annonce ensuite le nombre que cet élève avait choisi au départ. Puis, le professeur pose la question aux élèves: comment ai-je fait? On réécrit ensemble les étapes de la procédure de calcul, on la fait tourner pour plusieurs nombres, et on met en évidence la forme du résultat obtenu. Cela peut être le premier algorithme calculatoire à introduire pour faire comprendre la déclaration, laffectation et la lecture/écriture.

9 Isabelle ABOU9 ALGORITHME TOUR DE MAGIE ENTREE n, p Entiers naturels Afficher « donner une valeur à n » Lire n TRAITEMENT Affecter à p la valeur n+3 Affecter à p la valeur p*n Affecter à p la valeur p-n² SORTIE Afficher p

10 Isabelle ABOU10 GEOMETRIE REPEREE

11 Isabelle ABOU11 PISTES DU PROGRAMME Le plan est supposé muni dun repère orthonormal. Calculer les coordonnées du milieu dun segment; Calculer la distance entre deux points; Calculer des périmètres, des aires, des volumes Calculer les coordonnées dun vecteur, de la somme de vecteurs; Résolution de problèmes: Dire si un triangle est équilatéral, isocèle, rectangle. Dire si un quadrilatère est un parallélogramme. Trouver le quatrième point dun quadrilatère pour obtenir un parallélogramme. Constructions géométriques.

12 Isabelle ABOU12 PREMIERS ALGORITHME ET PROGRAMME Lalgorithme qui nous parait être le plus simple, et le premier à faire chercher aux élèves est lalgorithme « calcul des coordonnées du milieu dun segment ». Cet algorithme permet dintroduire les notions fondamentales de lecture/ écriture, de mettre laccent sur la différence entre « Afficher un message » et « Afficher la valeur dune variable », qui sont deux instructions différenciées dans AlgoBox, ainsi que sur linstruction « Lire la valeur dune variable ». Dans un premier temps lalgorithme 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 lalgorithme, 1 heure, les rectifications éventuelles et pour certains lécriture dun autre algorithme, encore 1 heure.

13 Isabelle ABOU13 MISE EN SITUATION Nous donnerons dabord lalgorithme et le programme corrects, puis des programmes comportant des erreurs commises par les élèves de seconde de lanimatrice de ce stage. 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 dautres décrire également lalgorithme « calcul de la distance entre deux points ». Ces séances pourrons donner loccasion de faire de la pédagogie différenciée, puisque les élèves nen ont pas été au même stade dapprentissage ni de compréhension.

14 Isabelle ABOU14 ALGORITHME: COORDONNEES MILIEU DUN 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 xB 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

15 Isabelle ABOU15 PROGRAMME ALGOBOX COORDONNEES 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

16 Isabelle ABOU16 2 PROGRAMMES DELEVES 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

17 Isabelle ABOU17 2 PROGRAMMES DELEVES AVEC DES ERREURS 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

18 Isabelle ABOU18 EXEMPLE DENONCE 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.

19 Isabelle ABOU19 COMMENTAIRES PEDAGOGIQUES Cet énoncé permet de montrer la nécessité de lalgorithme de calcul de la distance entre deux points qui intervient à plusieurs fois. 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 dautres exercices.

20 Isabelle ABOU20 PROGRAMME ALGOBOX DISTANCE ENTRE 2 POINTS 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 D EST_DU_TYPE NOMBRE 7 dist 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 TRACER_POINT (xA,yA) 18 TRACER_POINT (xB,yB) 19 TRACER_SEGMENT (xA,yA)->(xB,yB) 20 D PREND_LA_VALEUR pow((xB-xA),2)+pow((yB-yA),2) 21 dist PREND_LA_VALEUR sqrt(D) 22 AFFICHER "la distance AB^2 vaut " 23 AFFICHER D 24 AFFICHER "La distance AB vaut " 25 AFFICHER dist 26 FIN_ALGORITHME

21 Isabelle ABOU21 PROGRAMME ALGOBOX TRIANGLE EQUILATERAL 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

22 Isabelle ABOU22 PROGRAMME ALGOBOX TRIANGLE ISOCELE Tout le début de lalgorithme jusquà la ligne 38, est identique à lalgorithme « 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

23 Isabelle ABOU23 PROGRAMME ALGOBOX TRIANGLE RECTANGLE Tout le début de lalgorithme jusquà la ligne 38, est identique à lalgorithme « 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é ici trop difficile pour commencer. 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

24 Isabelle ABOU24 EXECUTION PAS A PAS AVEC UN TRIANGLE QUELCONQUE #1 Nombres/chaines (ligne 13) -> xA:1 | yA:0 | xB:0 | yB:0 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #2 Nombres/chaines (ligne 15) -> xA:1 | yA:2 | xB:0 | yB:0 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #3 Nombres/chaines (ligne 17) -> xA:1 | yA:2 | xB:3 | yB:0 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #4 Nombres/chaines (ligne 19) -> xA:1 | yA:2 | xB:3 | yB:4 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #5 Nombres/chaines (ligne 21) -> xA:1 | yA:2 | xB:3 | yB:4 | xC:8 | yC:0 | D1:0 | D2:0 | D3:0 #6 Nombres/chaines (ligne 23) -> xA:1 | yA:2 | xB:3 | yB:4 | xC:8 | yC:5 | D1:0 | D2:0 | D3:0 #7 Nombres/chaines (ligne 24) -> xA:1 | yA:2 | xB:3 | yB:4 | xC:8 | yC:5 | D1:8 | D2:0 | D3:0 #8 Nombres/chaines (ligne 25) -> xA:1 | yA:2 | xB:3 | yB:4 | xC:8 | yC:5 | D1:8 | D2:58 | D3:0 #9 Nombres/chaines (ligne 26) -> xA:1 | yA:2 | xB:3 | yB:4 | xC:8 | yC:5 | D1:8 | D2:58 | D3:26 Tracé du point (1,2) (ligne 33) Tracé du point (3,4) (ligne 34) Tracé du point (8,5) (ligne 35) Tracé du segment (1,2,3,4) (ligne 36) Tracé du segment (1,2,8,5) (ligne 37) Tracé du segment (3,4,8,5) (ligne 38) La condition n'est pas vérifiée (ligne 39) Entrée dans le bloc DEBUT_SINON/FIN_SINON (ligne 44) La condition n'est pas vérifiée (ligne 45) Entrée dans le bloc DEBUT_SINON/FIN_SINON (ligne 50) La condition n'est pas vérifiée (ligne 51) Entrée dans le bloc DEBUT_SINON/FIN_SINON (ligne 56) Sortie du bloc DEBUT_SINON/FIN_SINON (ligne 58) Sortie du bloc DEBUT_SINON/FIN_SINON (ligne 59) Sortie du bloc DEBUT_SINON/FIN_SINON (ligne 60) ***Algorithme lancé en mode pas à pas*** donner une valeur à xA donner une valeur à yA donner une valeur à xB donner une valeur à yB donner une valeur à xC donner une valeur à yC la distance AB^2 vaut 8 la distance AC^2 vaut 58 la distance BC^2 vaut 26 Le triangle n'est pas rectangle ***Algorithme terminé***

25 Isabelle ABOU25 EXECUTION PAS A PAS AVEC UN TRIANGLE RECTANGLE #1 Nombres/chaines (ligne 13) -> xA:1 | yA:0 | xB:0 | yB:0 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #2 Nombres/chaines (ligne 15) -> xA:1 | yA:1 | xB:0 | yB:0 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #3 Nombres/chaines (ligne 17) -> xA:1 | yA:1 | xB:1 | yB:0 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #4 Nombres/chaines (ligne 19) -> xA:1 | yA:1 | xB:1 | yB:4 | xC:0 | yC:0 | D1:0 | D2:0 | D3:0 #5 Nombres/chaines (ligne 21) -> xA:1 | yA:1 | xB:1 | yB:4 | xC:6 | yC:0 | D1:0 | D2:0 | D3:0 #6 Nombres/chaines (ligne 23) -> xA:1 | yA:1 | xB:1 | yB:4 | xC:6 | yC:1 | D1:0 | D2:0 | D3:0 #7 Nombres/chaines (ligne 24) -> xA:1 | yA:1 | xB:1 | yB:4 | xC:6 | yC:1 | D1:9 | D2:0 | D3:0 #8 Nombres/chaines (ligne 25) -> xA:1 | yA:1 | xB:1 | yB:4 | xC:6 | yC:1 | D1:9 | D2:25 | D3:0 #9 Nombres/chaines (ligne 26) -> xA:1 | yA:1 | xB:1 | yB:4 | xC:6 | yC:1 | D1:9 | D2:25 | D3:34 Tracé du point (1,1) (ligne 33) Tracé du point (1,4) (ligne 34) Tracé du point (6,1) (ligne 35) Tracé du segment (1,1,1,4) (ligne 36) Tracé du segment (1,1,6,1) (ligne 37) Tracé du segment (1,4,6,1) (ligne 38) La condition est vérifiée (ligne 39) Entrée dans le bloc DEBUT_SI/FIN_SI (ligne 40) Sortie du bloc DEBUT_SI/FIN_SI (ligne 42) ***Algorithme lancé en mode pas à pas*** donner une valeur à xA donner une valeur à yA donner une valeur à xB donner une valeur à yB donner une valeur à xC donner une valeur à yC la distance AB^2 vaut 9 la distance AC^2 vaut 25 la distance BC^2 vaut 34 le triangle est rectangle en A ***Algorithme terminé***

26 Isabelle ABOU26 ALGORITHMES ET PROGRAMMES POUR… Dire si deux vecteurs sont colinéaires, deux droites parallèles, des points alignés. Trouver léquation dune droite à partir des coordonnées de deux points. Tracer dune droite comme fonction affine. Dire si deux droites sont sécantes, et calculer les coordonnées de leur point dintersection éventuel.

27 Isabelle ABOU27 VECTEURS On pourrait procéder de la manière suivante: - Commencer par lalgorithme « calcul des coordonnées dun vecteur à partir des coordonnées de deux points », car cest un algorithme calculatoire très simple, - Continuer avec lalgorithme « vecteurs colinéaires », - Finir, pour les élèves qui en sont capables, par lalgorithme « quatrième point dun parallélogramme ». Cela peut être intégré dans un énoncé dexercice comme le suivant, qui peut être fait sur logiciel de géométrie.

28 Isabelle ABOU28 ENONCE Soit A(-3;1), B(2;-2), et C(1;6), H(6;3). 1/ Les points A, B, C sont-ils alignés? 2/ Démontrer que le quadrilatère ABHC est un parallélogramme. 3/ Trouver les coordonnées du point D tel que le quadrilatère ABCD soit un parallélogramme. 4/ Que représente le point C pour le segment [HD]? Le démontrer. 5/ Trouver les coordonnées du point F symétrique de B par rapport à A.

29 Isabelle ABOU29 ALGORITHME COORDONNEES DUN VECTEUR Déclaration Variable xA, xB, yA, yB, e, f en Numérique Entrée Ecrire Entrer labscisse de A Lire xA Ecrire Entrer lordonnée de A Lire yA Ecrire Entrer labscisse de B Lire xB Ecrire Entrer lordonnée de B Lire yB Traitement Affecter à e la valeur de xB-xA Affecter à f la valeur de yB-yA Sortie Afficher Labscisse du vect(AB) est:, e Afficher Lordonnée du vect(AB) est:, f

30 Isabelle ABOU30 PROGRAMME ALGOBOX 4 ième POINT DUN PARALLELOGRAMME 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 xD EST_DU_TYPE NOMBRE 9 yD EST_DU_TYPE NOMBRE 10 DEBUT_ALGORITHME 11 AFFICHER "Donner une valeur à xA" 12 LIRE xA 13 AFFICHER "xA=" 14 AFFICHER xA 15 AFFICHER "Donner une valeur à yA" 16 LIRE yA 17 AFFICHER "yA=" 18 AFFICHER yA 19 AFFICHER "Donner une valeur à xB" 20 LIRE xB 21 AFFICHER "xB=" 22 AFFICHER xB 23 AFFICHER "Donner une valeur à yB" 24 LIRE yB 25 AFFICHER "yB=" 26 AFFICHER yB 27 AFFICHER "Donner une valeur à xC" 28 LIRE xC 29 AFFICHER "xC=" 30 AFFICHER xC 31 AFFICHER "Donner une valeur à yC" 32 LIRE yC 33 AFFICHER "yC=" 34 AFFICHER yC 35 xD PREND_LA_VALEUR xC-(xB-xA) 36 yD PREND_LA_VALEUR yC-(yB-yA) 37 AFFICHER "L'abscisse de D tel que ABCD parallélogramme est xD=" 38 AFFICHER xD 39 AFFICHER "L'ordonnée de D tel que ABCD parallélogramme est yD=" 40 AFFICHER yD 41 TRACER_POINT (xA,yA) 42 TRACER_POINT (xB,yB) 43 TRACER_POINT (xC,yC) 44 TRACER_POINT (xD,yD) 45 TRACER_SEGMENT (xA,yA)->(xB,yB) 46 TRACER_SEGMENT (xB,yB)->(xC,yC) 47 TRACER_SEGMENT (xC,yC)->(xD,yD) 48 TRACER_SEGMENT (xD,yD)->(xA,yA) 49 FIN_ALGORITHME

31 Isabelle ABOU31 EXECUTION AVEC LES VALEURS DE LEXERCICE ***Algorithme lancé*** Donner une valeur à xA xA=-3 Donner une valeur à yA yA=1 Donner une valeur à xB xB=2 Donner une valeur à yB yB=-2 Donner une valeur à xC xC=1 Donner une valeur à yC yC=6 L'abscisse de D tel que ABCD parallélogramme est xD=-4 L'ordonnée de D tel que ABCD parallélogramme est yD=9 ***Algorithme terminé***

32 Isabelle ABOU32 DROITES - Pour commencer algorithme « équation dune droite à partir des coordonnées de deux points »; - Puis, résolution dun système 2X2, les équations réduites des droites étant données. A intégrer dans des énoncés dexercices.

33 Isabelle ABOU33 ALGORITHME EQUATION DUNE DROITE Déclaration Variable xA, xB, yA, yB, a, b en Numérique Entrée Ecrire Entrer labscisse de A Lire xA Ecrire Entrer lordonnée de A Lire yA Ecrire Entrer labscisse de B Lire xB Ecrire Entrer lordonnée de B Lire yB Traitement Affecter à a la valeur de (yB-yA)/(xB-xA) Affecter à b la valeur de yA-a*xA Sortie Afficher Le coefficient directeur est :, a Afficher Lordonnée à lorigine est :, b Afficher Léquation de la droite est : y =, a, x+, b

34 Isabelle ABOU34 PROBLEME: RESOLUTION DUN SYSTEME LINEAIRE 2X2 Écrire un algorithme qui indique si deux droites, dont les équations ont été écrites sous forme réduite (y=m*x+p), sont parallèles. Lalgorithme donnera ensuite les coordonnées du point dintersection éventuel.

35 Isabelle ABOU35 ALGORITHME RESOLUTION DUN SYSTEME 2X2 Déclaration Variable m, n, p, q, xT, yT en Numérique Entrée Entrer le coefficient directeur de la droite (D) Lire m Entrer lordonnée à lorigine de la droite (D) Lire p Entrer le coefficient directeur de la droite (D) Lire n Entrer lordonnée à lorigine de la droite (D) Lire q Traitement et Sortie Si (m=n) Alors Si (p<>q) Alors Écrire Les deux droites sont strictement parallèles Sinon Écrire Les deux droites sont confondues Sinon Affecter à xT la valeur (p-q)/(n-m) Affecter à yT la valeur m*xT+p Ecrire Les deux droites sont sécantes, et ont pour point dintersection le point T de coordonnées: (, xT, ;, yT, )

36 Isabelle ABOU36 PROGRAMME ALGOBOX RESOLUTION SYSTEME 2X2 1 VARIABLES 2 m EST_DU_TYPE NOMBRE 3 p EST_DU_TYPE NOMBRE 4 n EST_DU_TYPE NOMBRE 5 q EST_DU_TYPE NOMBRE 6 xT EST_DU_TYPE NOMBRE 7 yT EST_DU_TYPE NOMBRE 8 DEBUT_ALGORITHME 9 AFFICHER "Entrer le coefficient directeur de la première droite" 10 LIRE m 11 AFFICHER "m=" 12 AFFICHER m 13 AFFICHER "Entrer l'ordonnée à l'origine de la première droite " 14 LIRE p 15 AFFICHER "p=" 16 AFFICHER p 17 AFFICHER "Entrer le coefficient directeur de la deuxième droite" 18 LIRE n 19 AFFICHER "n=" 20 AFFICHER n 21 AFFICHER "Entrer l'ordonnée à l'origine dela deuxième droite" 22 LIRE q 23 AFFICHER "q=" 24 AFFICHER q 25 SI (m==n) ALORS 26 DEBUT_SI 27 SI (p==q) ALORS 28 DEBUT_SI 29 AFFICHER "Les deux droites sont confondues" 30 FIN_SI 31 SINON 32 DEBUT_SINON 33 AFFICHER "Les deux droites sont strictement parallèles" 34 FIN_SINON 35 FIN_SI 36 SINON 37 DEBUT_SINON 38 xT PREND_LA_VALEUR (p-q)/(n-m) 39 yT PREND_LA_VALEUR m*xT+p 40 AFFICHER "Les deux droites sont sécantes et ont pour point d'intersection T" 41 AFFICHER "xT=" 42 AFFICHER xT 43 AFFICHER "yT=" 44 AFFICHER yT 45 FIN_SINON 46 FIN_ALGORITHME

37 Isabelle ABOU37 EXECUTION DROITES SECANTES ***Algorithme lancé*** Entrer le coefficient directeur de la première droite m=1 Entrer l'ordonnée à l'origine de la première droite p=2 Entrer le coefficient directeur de la deuxième droite n=6 Entrer l'ordonnée à l'origine de la deuxième droite q=7 Les deux droites sont sécantes et ont pour point d'intersection T xT=-1 yT=1 ***Algorithme terminé***

38 Isabelle ABOU38 EXECUTION DROITES PARALLELES ***Algorithme lancé*** Entrer le coefficient directeur de la première droite m=-3 Entrer l'ordonnée à l'origine de la première droite p=5 Entrer le coefficient directeur de la deuxième droite n=-3 Entrer l'ordonnée à l'origine de la deuxième droite q=6 Les deux droites sont strictement parallèles ***Algorithme terminé***

39 Isabelle ABOU39 UTILISATION DES RESSOURCES Le document daccompagnement « Ressources pour la classe de seconde – Algorithmique- » fournit 10 algorithmes en géométrie. 1/ Points, segments et distances Algorithme 1: Milieu dun segment Algorithme 2: Quatrième sommet dun parallélogramme Algorithme 3: Tracé dun segment dans une fenêtre adaptée Algorithme 4: Tracé dun polygone dans une fenêtre adaptée Algorithme 5: Tracés de segments points par points Algorithme 6: Distance de deux points Algorithme 7: Triangle isocèle en A 2/ Algorithmes divers Algorithme 8: Fenêtre orthonormale automatique sur calculatrice Algorithme 9: Tracé dun cercle dans une fenêtre orthonormale Algorithme 10: Jeu de Marelle (ou Marelle de Bresenham). Nous en exposerons certains.

40 Isabelle ABOU40 TRACE DUN SEGMENT DANS UNE FENETRE ADAPTEE Saisir les coordonnées des extrémités du segment. Déterminer la fenêtre daffichage : Récupérer les abscisses et ordonnées minimales et maximales des deux points ; Diminuer un peu les valeurs minimales et augmenter un peu les valeurs maximales (pour ce faire, on choisit délargir de chaque côté dun cinquième de lécart entre le maximum et le minimum pour chacune des coordonnées).

41 Isabelle ABOU41 ALGORITHME Variables xA, yA, xB, yB xmin, xmax, ymin, ymax // Bornes de la fenêtre deltax, deltay // Élargissement de la fenêtre Entrées Saisir xA, yA, xB, yB Traitement Si xA<xB Alors xmin prend la valeur xA xmax prend la valeur xB Sinon xmin prend la valeur xB xmax prend la valeur xA Si yA<yB Alors ymin prend la valeur yA ymax prend la valeur yB Sinon ymin prend la valeur yB ymax prend la valeur yA deltax prend la valeur (xmax-xmin)/5 deltay prend la valeur (ymax-ymin)/5 xmin prend la valeur xmin-deltax xmax prend la valeur xmax+deltax ymin prend la valeur ymin-deltay ymax prend la valeur ymin+deltay Sorties Tracer la ligne de (xA;yA) à (xB;yB)

42 Isabelle ABOU42 PROGRAMME TI : Disp "A(X,Y)" : Input "X= ", X : Input "Y= ", Y : Disp "B(X,Y)" : Input "X= ", Z : Input "Y= ", T : If X<Z : Then : XXmin : ZXmax : Else : ZXmin : XXmax : End : If Y<T : Then : YYmin : TYmax : Else : TYmin : YYmax : End : (XmaxXmin)/5D : (YmaxYmin)/5E : XminDXmin : Xmax+DXmax : YminEYmin : Ymax+EYmax : Line(X,Y,Z,T)

43 Isabelle ABOU43 LES FONCTIONS

44 Isabelle ABOU44 PISTES DU PROGRAMME Premiers algorithmes : Calculer la valeur dune fonction Donner un tableau de valeurs dune fonction. Écrire un algorithme de tracé de courbe, notamment pour le fonctions définies par morceaux. Dans le cadre de la résolution de problème : Le fil directeur est la problématique du fenêtrage, pour laquelle la notion de sens de variation et dextremum joue un rôle crucial. On entend par fenêtrage la recherche des bornes minimale et maximale pour laxe des abscisses et pour laxe des ordonnées permettant dafficher la courbe représentative dune fonction afin de visualiser ses variations. On se placera sur un intervalle donné dans un premier temps. Cette question du fenêtrage doit permettre dappliquer des algorithmes répondant à la recherche dextremums ou de solutions déquation et dinéquation, tout en dégageant progressivement les notions de sens de variations.

45 Isabelle ABOU45 VALEURS DUNE FONCTION EN UN POINT Soit la fonction définie sur IR par: F(x) = 3*x^2-6*x +10 Écrire un programme permettant de calculer la valeur de cette fonction en un point. Écrire un programme permettant de donner un tableau de valeurs de cette fonction sur un intervalle [a ; b] entré par lutilisateur, et avec un pas donné (ici égal à 0,1). Écrire un programme de tracé de la courbe représentative dune fonction sur un intervalle. On peut, bien sûr, écrire un programme qui, à la fois, trace la courbe de la fonction et donne son tableau de valeurs sur un intervalle.

46 Isabelle ABOU Professeur Formateur46 ALGORITHME VALEUR DUNE FONCTION EN UN POINT Déclaration des variables Variable x, y en Réel Entrées Afficher Entrer la valeur de x Lire x Traitement Affecter à y la valeur 3*x^2+5*x - 4 Sortie Afficher "f(x)=" ; y

47 Isabelle ABOU47 PROGRAMME VALEUR DUNE FONCTION EN UN POINT 1 VARIABLES 2 x EST_DU_TYPE NOMBRE 3 y EST_DU_TYPE NOMBRE 4 DEBUT_ALGORITHME 5 AFFICHER "Entrer la valeur de x" 6 LIRE x 7 AFFICHER "x=" 8 AFFICHER x 9 y PREND_LA_VALEUR F1(x) 10 AFFICHER "y=" 11 AFFICHER y 12 FIN_ALGORITHME Fonction numérique utilisée : F1(x)=3*pow(x,2) - 6*x + 10 Exécution ***Algorithme lancé*** Entrer la valeur de x x=3 y=19 ***Algorithme terminé***

48 Isabelle ABOU48 ALGORITHME TABLEAU DE VALEURS DUNE FONCTION Déclaration des variables Variable a, b, x, y en Réel Entrée Ecrire Entrer la borne inférieure de lintervalle détude Lire a Ecrire Entrer la borne supérieure de lintervalle détude Lire b Initialisation Affecter à x la valeur a Traitement et Sortie Tant que x <= b Affecter à y la valeur 3*x^2-6*x +10 Afficher (x ; y) Affecter à x la valeur x+10 E-1 Fin Tant que

49 Isabelle ABOU49 PROGRAMME ALGOBOX TABLEAU DE VALEURS DUNE FONCTION 1 VARIABLES 2 x EST_DU_TYPE NOMBRE 3 y EST_DU_TYPE NOMBRE 4 a EST_DU_TYPE NOMBRE 5 b EST_DU_TYPE NOMBRE 6 DEBUT_ALGORITHME 7 AFFICHER "Entrer la borne inférieure" 8 LIRE a 9 x PREND_LA_VALEUR a 10 AFFICHER "Entrer la borne supérieure" 11 LIRE b 12 TANT_QUE ((x>=a) ET (x<=b)) FAIRE 13 DEBUT_TANT_QUE 14 AFFICHER "x=" 15 AFFICHER x 16 y PREND_LA_VALEUR F1(x) 17 AFFICHER "y=" 18 AFFICHER y 19 x PREND_LA_VALEUR x+1 20 FIN_TANT_QUE 21 FIN_ALGORITHME Fonction numérique utilisée : F1(x)=3*pow(x,2) - 6*x + 10

50 Isabelle ABOU50 EXECUTION VALEURS DUNE FONCTION ***Algorithme lancé*** x=-10 y=370 x=-9 y=307 x=-8 y=250 x=-7 y=199 x=-6 y=154 x=-5 y=115 x=-4 y=82 x=-3 y=55 x=-2 y=34 x=-1 y=19 x=0 y=10 x=1 y=7 x=2 y=10 x=3 y=19 x=4 y=34 x=5 y=55 x=6 y=82 x=7 y=115 x=8 y=154 x=9 y=199 x=10 y=250 ***Algorithme terminé***

51 Isabelle ABOU51 PROGRAMME ALGOBOX COURBE DUNE FONCTION 1 VARIABLES 2 x EST_DU_TYPE NOMBRE 3 y EST_DU_TYPE NOMBRE 4 a EST_DU_TYPE NOMBRE 5 b EST_DU_TYPE NOMBRE 6 DEBUT_ALGORITHME 7 AFFICHER "Entrer la borne inférieure de l'intervalle" 8 LIRE a 9 x PREND_LA_VALEUR a 10 AFFICHER "Entrer la borne supérieure de l'intervalle" 11 LIRE b 12 TANT_QUE ((x>=a) ET (x<=b)) FAIRE 13 DEBUT_TANT_QUE 14 y PREND_LA_VALEUR F1(x) 15 TRACER_POINT (x,y) 16 x PREND_LA_VALEUR x+0.1 17 FIN_TANT_QUE 18 FIN_ALGORITHME Fonction numérique utilisée : F1(x)=3*pow(x,2) - 6*x + 10

52 Isabelle ABOU52 ACTIVITE: CALCUL DU SALAIRE DUN 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.

53 Isabelle ABOU53 FICHE PEDAGOGIQUE Cet exercice permet de faire calculer une expression qui dépend de lintervalle où lon se place. Cest un algorithme opératoire qui utilise des tests imbriqués. On pourra créer une fonction qui renvoie le salaire dun employé en fonction du salaire horaire et du nombre dheures. Cette fonction sera ensuite appelée par le programme. Lintérêt de lemploi dune fonction réside dans le fait que lon peut la réutiliser autant de fois quon le veut. On peut donc imaginer quune liste demployés accompagnée du nombre dheures que chacun a effectué est entrée par lutilisateur, et que le programme doit renvoyer une liste de salaires. Cet exercice permet également de travailler sur les coefficients multiplicateurs.

54 Isabelle ABOU54 DEUX PROGRAMMES Le logiciel AlgoBox ne permet pas dappeler une fonction, on procèdera donc différemment. Dans un premier temps, on écrira le programme « SALAIRE DUN EMPLOYE » donnant le salaire S dun employé donné, payé à un certain salaire horaire sh, et ayant effectué un certain nombre dheures nh. Dans un deuxième temps, 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 dheures effectuées nh (nh compris entre 0 et 240), avec un salaire horaire entré au clavier sh.

55 Isabelle ABOU55 FONCTION SALAIRE DUN EMPLOYE fonction calculerSalaire (sh:réel, nbh:entier):réel début si nh < 160 alors salaire <- sh * nh sinon si nh < 200 alors salaire <- 160 * sh + (nh - 160) * 1,25 * sh sinon salaire <- 160 * sh + 40 * sh * 1,25 + (nh - 200) * sh * 1,5 fsi retourne salaire Fin Lexique - sh : réel, salaire horaire - nh : entier, nombre d'heures de l'employé - salaire : réel, salaire de l'employé

56 Isabelle ABOU56 PROGRAMME ALGOBOX SALAIRE DUN EMPLOYE PROGRAMME ALGOBOX SALAIRE DUN EMPLOYE 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 de l'employé" 7 LIRE sh 8 AFFICHER "Le salaire horaire vaut: " 9 AFFICHER sh 10 AFFICHER "Entrer le nombre d'heures effectuées" 11 LIRE nh 12 AFFICHER "Le nombre d'heures effectuées est:" 13 AFFICHER nh 14 SI ((nh 240)) ALORS 15 DEBUT_SI 16 AFFICHER "Le nombre d'heures est incorrect" 17 FIN_SI 18 SINON 19 DEBUT_SINON 20 SI ((nh>=0) ET (nh<160)) ALORS 21 DEBUT_SI 22 S PREND_LA_VALEUR sh*nh 23 FIN_SI 24 SINON 25 DEBUT_SINON 26 SI ((nh>=160) ET (nh<200)) ALORS 27 DEBUT_SI 28 S PREND_LA_VALEUR 160*sh + (nh-160)*1.25*sh 29 FIN_SI 30 SINON 31 DEBUT_SINON 32 SI ((nh>=200) ET (nh<=240)) ALORS 33 DEBUT_SI 34 S PREND_LA_VALEUR 160*sh + 40*sh*1.25 + (nh-200)*sh*1.5 35 FIN_SI 36 FIN_SINON 37 FIN_SINON 38 AFFICHER "Le salaire de cet employé est:" 39 AFFICHER S 40 FIN_SINON 41 FIN_ALGORITHME

57 Isabelle ABOU57 EXECUTIONS SALAIRE DUN EMPLOYE ***Algorithme lancé*** Entrer le salaire horaire de l'employé Le salaire horaire vaut: 9 Entrer le nombre d'heures effectuées Le nombre d'heures effectuées est:140 Le salaire de cet employé est:1260 ***Algorithme terminé*** ***Algorithme lancé*** Entrer le salaire horaire de l'employé Le salaire horaire vaut: 9 Entrer le nombre d'heures effectuées Le nombre d'heures effectuées est:180 Le salaire de cet employé est:1665 ***Algorithme terminé*** ***Algorithme lancé*** Entrer le salaire horaire de l'employé Le salaire horaire vaut: 9 Entrer le nombre d'heures effectuées Le nombre d'heures effectuées est:230 Le salaire de cet employé est:2295 ***Algorithme terminé*** ***Algorithme lancé*** Entrer le salaire horaire de l'employé Le salaire horaire vaut: 9 Entrer le nombre d'heures effectuées Le nombre d'heures effectuées est:300 Le nombre d'heures est incorrect ***Algorithme terminé***

58 Isabelle ABOU58 REMARQUES On utilisera une boucle « Tant Que » pour obtenir un tableau de valeurs et faire tracer la fonction « Salaires » en choisissant le pas que lon désire. La courbe est tracée au fur et à mesure que le programme sexécute.

59 Isabelle ABOU59 PROGAMME ALGOBOX FONCTION SALAIRE 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 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 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

60 Isabelle ABOU60 UTILISATION DES RESSOURCES Les algorithmes concernant la problématique du fenêtrage sont tirés du document daccompagnement « Ressources pour la classe de seconde –Algorithmique- » fournit 7 algorithmes pour différentes problématiques. 1/ Recherche des extrema sur un segment : fenêtrage vertical Algorithme 1: Déterministe à pas constant (tabulation simple) Algorithme 2: Tabulation aléatoire dune fonction 2/ Tester la monotonie Algorithme 3: Déterministe à pas constant sur un intervalle borné 3/ Question du fenêtrage horizontal : comportement asymptotique Algorithme 4: Exploration des grandes valeurs de la variable 4/ Recherche de solution déquation et dextremum A. La dichotomie Algorithme 5: Le jeu du nombre à deviner Algorithme 6: Recherche dun zéro par dichotomie B. Recherche du maximum dune fonction croissante puis décroissante sur un intervalle [a;b]. Algorithme 7: Monter plus haut Nous nexposerons que les algorithmes sur les fenêtrages déterministes vertical et horizontal puisque lensemble des algorithmes est consultable dans le document.

61 Isabelle ABOU61 FENÊTRAGE VERTICAL On se donne une fonction f définie sur un segment [a;b]. Que peut-on dire concernant son maximum et son minimum ? Algorithme : déterministe à pas constant (tabulation simple) Afin de construire la représentation graphique dune fonction, il est nécessaire de connaître ses extremums sur lintervalle étudié. Nous nabordons pas dans ce document les problèmes de calcul formel, et nous limitons à des valeurs approchées. Une méthode consiste à subdiviser lintervalle initial [a ;b] en N intervalles de même amplitude (ba)/ N. On fera ensuite le passage en revue des valeurs prises par la fonction en chacune des bornes de la subdivision. On parle dune méthode par balayage à pas constant. On utilise des variables intermédiaires min et max qui vont permettre de mémoriser au fur et à mesure du balayage la plus petite des valeurs et la plus grande grâce à une structure de contrôle alternative. On utilise une structure itérative pour calculer les différentes images des bornes.

62 Isabelle ABOU62 ALGORITHME Variables a, b les bornes de lintervalle détude f, la fonction à étudier N, le nombre dintervalles x, la valeur « courante » y, la valeur correspondante de f(x) Initialisation min prend la valeur f (a) max prend la valeur f (a) pas prend la valeur (b-a)/N x prend la valeur a Traitement Pour k de 1 à N x prend la valeur x+pas y prend la valeur f(x) Si y>max alors max prend la valeur y Si y<min alors min prend la valeur y Sortie Affiche min et max.

63 Isabelle ABOU63 TRADUCTION SUR CALCULATRICES Calculatrice TI :Calculatrice CASIO : Input A Input B Input N A ->X Y1 -> C Y1 -> D (B-A)/NP For(K,1,N) X+P -> X If Y1>D Then Y1 -> D End If Y1<C Then Y1 -> C End Disp C,D A -> Xmin B -> Xmax C -> Ymin D -> Ymax DispGraph ? -> A ? -> B ? -> N A -> X Y1 -> C Y1 -> D (B-A)/N -> P For K -> 1 To N X+P -> X If Y1>D Then Y1 -> D Ifend If Y1<C Then Y1 -> C Ifend Next C D A -> Xmin B -> Xmax C -> Ymin D -> Ymax DrawGraph

64 Isabelle ABOU64 REMARQUES Dans le cadre de la résolution de problème, il convient de bien faire remarquer que, dans presque tous les cas, les réponses fournies par le programme ne sont que des valeurs approchées des extremums, et que dans certains cas, certes éloignés des fonctions que les élèves rencontrent, les valeurs sorties par le logiciel peuvent être fort éloignées des réponses exactes. Un exemple : pour f (x )= 1/ (x² + 0,001) sur [0,95 ;0,95] avec un pas de 0,1 on trouve avec lalgorithme une valeur maximale denviron 285 alors que le maximum de f est exactement 1000. Lorsque la fonction f est strictement croissante puis strictement décroissante sur [a ;b ], il est possible dêtre plus précis : si on a trouvé une valeur maximale pour x=a + k.pas, on sait que le maximum de f sera atteint dans lintervalle [a + (k1). pas ; a + (k+1). pas ] ; on peut donc prendre a + k.pas comme valeur approchée de labscisse du maximum avec une erreur inférieure ou égale à pas.

65 Isabelle ABOU65 FENÊTRAGE HORIZONTAL On se donne une fonction f définie sur R. Quel est son comportement lorsque la variable prend des valeurs très grandes ? On change ici de point de vue, on nétudie plus la fonction sur un intervalle fermé mais un intervalle ouvert de R. Algorithme : exploration de grandes valeurs de la variable Lobjet de cet algorithme est de rechercher des informations sur le maximum de la fonction (sil existe !). Explorer efficacement un intervalle très grand ne peut se faire «en aveugle» comme le fait une calculatrice, cest-à-dire par le biais dune progression arithmétique de la variable. On envisage alors des progressions plus rapides. La mise en forme proposée ci-dessous explore les images par f des carrés des entiers.

66 Isabelle ABOU66 ALGORITHME Initialisation f, la fonction à étudier p, la progression de la variable, exemple : p(k) = k² N, le nombre ditérations max prend la valeur f (0) x prend la valeur 0, ce sera lantécédent de max. Traitement Pour k variant de 1 à N Si f ( p(k) )>max alors x prend la valeur p(k) max prend la valeur f (x) Sortie Affiche x et max.

67 Isabelle ABOU67 TRADUCTION SUR CALCULATRICES Calculatrice TI :Calculatrice Casio : Input N 0 ->X 0 -> C Y1 -> D For(K,1,N) K^2 -> X If Y1>D Then Y1 -> D X -> C End Disp C,D ? -> N 0 -> X 0 -> C Y1 -> C Y1 -> D For 1 -> K To N K^2 -> X If Y1>D Then Y1 -> D X -> C Ifend Next C D

68 Isabelle ABOU68 REMARQUES Cet algorithme peut ensuite être décliné pour tester la monotonie, ou pour explorer de grandes valeurs négatives, ou de petites valeurs proches de 0 … et dans tous les cas on fera prendre conscience du caractère empirique de la réponse obtenue. La tabulation de la fonction selon ce principe permet dappréhender le comportement asymptotique (et dintroduire de façon empirique la notion de limite dans le cadre dune résolution de problème où cette question est porteuse de sens). Pour une exploration plus efficace, le choix dune croissance plus marquée peut se faire sentir. Dans ce cas, une progression géométrique de la variable est une stratégie judicieuse.

69 Isabelle ABOU69 PROBABILITES ET STATISTIQUES

70 Isabelle ABOU70 PISTES DU PROGRAMME STATISTIQUES : Calcul des paramètres dune série statistique (moyenne, fréquences). Échantillonnage Un échantillon est-il représentatif (ou conforme), au risque de 5%? Mise en place dune simulation avec utilisation des fonctions logiques dun tableur ou dune calculatrice PROBABILITES: Répétition dexpériences aléatoires, simulation cest-à-dire approche fréquentielle des probabilités. Algorithmes pour des marches aléatoires.

71 Isabelle ABOU71 EXEMPLE DACTIVITE ECHANTILLON CONFORME On considère un caractère, il peut sagir dun caractère génétique (lappartenance au groupe sanguin O par exemple) pour une population humaine. On considère la proportion p de personnes dans la population qui appartiennent à ce groupe. On donne un échantillon de taille n et on calcule la fréquence f de personnes de léchantillon appartenant à ce groupe. Il sagit de savoir si cet échantillon est représentatif de la population totale au seuil 95%.

72 Isabelle ABOU72 INTERVALLE DE FLUCTUATION Lintervalle de fluctuation au seuil 95%, pour une proportion p cest- à-dire correspondant à une variable aléatoire suivant une loi de Bernoulli (approchée par une loi normale quand n est grand) est [p- 1/rac(n); p+1/rac(n)]. Cest-à-dire que léchantillon est représentatif ou conforme si f appartient à cet intervalle. Lalgorithme qui suit, indique si léchantillon est conforme à partir de lentrée de la fréquence « f » comme donnée, il comporte un contrôle de saisie. On peut également écrire un algorithme où on entrerait le nombre de personnes qui ont le caractère étudié, et qui calculerait également f grâce à lalgorithme.

73 Isabelle ABOU73 ALGORITHME ECHANTILLON CONFORME Déclaration Variable p, f en Numérique Variable n en Entier Entrée Afficher Entrer la valeur de la proportion du caractère dans la population totale ; Lire p Afficher Entrer la taille de léchantillon ; Lire n TantQue n<25 Afficher Léchantillon est trop petit. Recommencer Afficher Entrer la taille de léchantillon Lire n FinTantQue Afficher Entrer la valeur de la fréquence dans léchantillon Lire f Traitement et Sortie Si [((p-1/racine(n))<=f) et (f<=(p+1/racine(n)))] Alors Ecrire Au risque de 5%, léchantillon est représentatif Sinon Ecrire Au risque de 5%, léchantillon nest pas représentatif

74 Isabelle ABOU74 PROGRAMME ALGOBOX ECHANTILLON CONFORME 1 VARIABLES 2 p EST_DU_TYPE NOMBRE 3 f EST_DU_TYPE NOMBRE 4 n EST_DU_TYPE NOMBRE 5 DEBUT_ALGORITHME 6 AFFICHER "Entrer la proportion du caractère, en valeur décimale, dans la population totale" 7 LIRE p 8 AFFICHER "Entrer la taille de l'échantillon" 9 LIRE n 10 TANT_QUE (n<25) FAIRE 11 DEBUT_TANT_QUE 12 AFFICHER "La taille de l'échantillon est trop petite. Recommencer." 13 AFFICHER "Entrer la taille de l'échantillon" 14 LIRE n 15 FIN_TANT_QUE 16 AFFICHER "Entrer la fréquence du caractère, en valeur décimale, dans l'échantillon" 17 LIRE f 18 SI (((p-1/sqrt(n))<=f) ET (f<=(p+1/sqrt(n)))) ALORS 19 DEBUT_SI 20 AFFICHER "Au risque de 5%, cet échantillon est représentatif de la population" 21 FIN_SI 22 SINON 23 DEBUT_SINON 24 AFFICHER "Au risque de 5%, cet échantillon n'est pas représentatif de la population" 25 FIN_SINON 26 FIN_ALGORITHME

75 Isabelle ABOU75 EXEMPLE DEXERCICE A lhôpital, on peut lire une affiche où il est écrit: « 1 français sur 20 est malade des reins et ne le sait pas. Pensez à vous faire dépister… ». On considère deux échantillons, le premier de taille 1000, constitué de personnes entre 0 et 35 ans et le second de taille 2000, constitué de personnes entre 36 et 80 ans. Pour, le premier 18 personnes ont des problèmes de reins, pour le second, il sont 120. Dire, pour chaque échantillon sil est représentatif de la population française.

76 Isabelle ABOU76 EXECUTIONS 1 ier échantillon: n=1000, p=0.05, et f=18/1000 ***Algorithme lancé*** Entrer la proportion du caractère dans la population totale Entrer la taille de l'échantillon Entrer la fréquence du caractère dans l'échantillon Au risque de 5%, cet échantillon n'est pas représentatif de la population ***Algorithme terminé*** 2 ième échantillon:. n=2000, p=0.05, f= 120/2000 ***Algorithme lancé*** Entrer la proportion du caractère, en valeur décimale, dans la population totale Entrer la taille de l'échantillon Entrer la fréquence du caractère, en valeur décimale, dans l'échantillon Au risque de 5%, cet échantillon est représentatif de la population ***Algorithme terminé***

77 Isabelle ABOU77 SIMULATION Pour faire des simulations de nombres aléatoires, la fonction « ALEA() » est utilisée en pseudo-code ou bien sur tableur, la fonction « rand » est utilisée sur calculatrice. Elle fournit un nombre aléatoire dans [0;1[. Si on a besoin de changer la plage de nombres aléatoires, on pourra considérer la fonction ALEA sur un autre intervalle, et utiliser la fonction ENT si on veut obtenir un entier. Sur AlgoBox, la fonction « random() » fournit un nombre pseudo- aléatoire compris entre 0 et 1, la fonction « floor() » est la fonction Partie Entière.

78 Isabelle ABOU78 SIMULATION DE NOMBRES ALEATOIRES Pour obtenir une valeur aléatoire de lintervalle [a ;b[, il suffit de remarquer que le produit de ce nombre aléatoire Alea() par lamplitude (ba), donne un nombre aléatoire de lintervalle [0;(ba)[. Lajout de a à cette valeur donnera un nombre aléatoire de lintervalle [a ;b [, doù la formule : a + Alea (ba). Applications : Pour le lancer dune pièce de monnaie, on simule le tirage de Pile ou Face en utilisant 0 pour Face et 1 pour Pile, il faut donc un nombre entier aléatoire dans [0;2[: 2*ALEA() fournit un nombre aléatoire dans [0;2[, ENT(2*ALEA()) fournit un nombre entier aléatoire dans [0;2[, cest-à- dire lentier 0 ou lentier 1. Pour le lancer dun dé à 6 faces, il faut un nombre entier aléatoire entre 1 et 6, on utilisera donc ENT(6*ALEA()+1).

79 Isabelle ABOU79 UNE INTRODUCTION A LA LOI DES GRANDS NOMBRES Lalgorithme suivant fournit une simulation Pile/Face qui permet de faire appréhender la loi des grands nombres. On peut, également utiliser une urne avec trois types de boules vertes, rouges, jaunes, chacune dans une certaine proportion dans lurne. Ceci induira une fréquence pour chaque type de boule qui se rapprochera, au bout dun grand nombre de tirages (avec remise), de la probabilité théorique.

80 Isabelle ABOU80 ALGORITHME DONNANT LA FREQUENCE DE PILE Déclaration Variable n, P, k en Entier Variable fr en réel Entrée Afficher Entrer le nombre de lancers; Lire n Initialiser P à 0 Initialiser k à 0 Traitement TantQue k <= n Si [ENT(2*ALEA())=1] Alors Affecter à P la valeur P+1 Affecter à k la valeur k+1 Sinon Affecter à k la valeur k+1 FinTantQue Affecter à fr la valeur P/n Sortie Afficher la fréquence de Pile sur les, n, lancers est:, fr

81 Isabelle ABOU81 PROGRAMME ALGOBOX SIMULATION PILE-FACE 1 VARIABLES 2 nbface EST_DU_TYPE NOMBRE 3 nbpile EST_DU_TYPE NOMBRE 4 i EST_DU_TYPE NOMBRE 5 lancer EST_DU_TYPE NOMBRE 6 frpile EST_DU_TYPE NOMBRE 7 frface EST_DU_TYPE NOMBRE 8 N EST_DU_TYPE NOMBRE 9 DEBUT_ALGORITHME 10 nbface PREND_LA_VALEUR 0 11 nbpile PREND_LA_VALEUR 0 12 AFFICHER "Entrer le nombre de simulations souhaitées." 13 LIRE N 14 POUR i ALLANT_DE 1 A N 15 DEBUT_POUR 16 lancer PREND_LA_VALEUR floor(random()*2+1) 17 SI (lancer==1) ALORS 18 DEBUT_SI 19 nbface PREND_LA_VALEUR nbface+1 20 FIN_SI 21 SINON 22 DEBUT_SINON 23 nbpile PREND_LA_VALEUR nbpile+1 24 FIN_SINON 25 FIN_POUR 26 frpile PREND_LA_VALEUR nbpile/N 27 frface PREND_LA_VALEUR nbface/N 28 AFFICHER "On a obtenu " 29 AFFICHER nbface 30 AFFICHER " fois face et " 31 AFFICHER nbpile 32 AFFICHER " fois pile." 33 AFFICHER "La fréquence de Pile est " 34 AFFICHER frpile 35 AFFICHER "La fréquence de Face est " 36 AFFICHER frface 37 FIN_ALGORITHME

82 Isabelle ABOU82 EXECUTION SIMULATION PILE-FACE ***Algorithme lancé*** Entrer le nombre de simulations souhaitées. On a obtenu 510 fois face et 490 fois pile. La fréquence de Pile est 0.49 La fréquence de Face est 0.51 ***Algorithme terminé*** ***Algorithme lancé*** Entrer le nombre de simulations souhaitées. On a obtenu 1000 fois face et 1000 fois pile. La fréquence de Pile est 0.5 La fréquence de Face est 0.5 ***Algorithme terminé***

83 Isabelle ABOU83 MARCHE ALEATOIRE ET TEMPS MOYEN Une marche aléatoire est une trajectoire constituée de pas successifs, aléatoires et indépendants. Les applications des marches aléatoires sont multiples tant - en botanique ( le botaniste Robert Brown notait en 1827, le caractère apparemment erratique du déplacement de particules de pollen dans leau, appelé par la suite mouvement brownien), - en sciences physiques (trajectoire dune molécule dans un liquide ou un gaz), - en économie (variations du cours dune action en bourse), ou - en sciences informatiques (certains moteurs de recherche utilisent des marches aléatoires pour parcourir les pages Internet) etc.

84 Isabelle ABOU84 MARCHE ALEATOIRE SUR UN CARRE Descriptif de lactivité Une coccinelle se promène sur un carré, en choisissant sa direction, verticale V ou horizontale H, de façon aléatoire. On considère quelle part dun des sommets A, et qu'elle a fini sa promenade quand elle revient à A. Problème: quelle est la durée moyenne dun trajet?

85 Isabelle ABOU85 FICHE PEDAGOGIQUE Cette activité est intéressante pour montrer la nécessité dune simulation puisque lintuition nest pas dune grande aide pour répondre. On privilégiera laspect expérimental et de recherche, pour aboutir ensuite à une analyse plus fine du problème. On modélisera ensuite le problème pour trouver la simulation appropriée (réinvestissement de la simulation Pile/Face).

86 Isabelle ABOU86 MARCHE A SUIVRE Faire dessiner un carré et faire simuler plusieurs trajets à la main par les élèves. Formaliser le trajet en une suite de V et de H qui se succèdent aléatoirement. Chercher le critère qui indique le STOP: c'est à la fois la parité du nombre de V et la parité du nombre de H. Remplacer la suite de V et H par une suite de 0 et 1, ce qui permet de faire une simulation sur ordinateur en utilisant la fonction Alea.

87 Isabelle ABOU87 FICHE ELEVE Une coccinelle se promène sur un carré ABCD en choisissant sa direction, verticale V ou horizontale H, de façon aléatoire. On considère quelle part dun des sommets, A et qu'elle a fini sa promenade quand elle revient à A. 1/ Dessiner un carré et décrire 20 trajets possibles trouvés à la main. 2/ Comment peut-on symboliser chaque direction et ensuite chaque trajet? 3/ Chercher une modélisation d'un trajet qui permette de faire ensuite une simulation sur ordinateur. 4/ Chercher le critère qui indique le STOP: la coccinelle a fini sa promenade. 5/ Écrire un algorithme, puis un programme qui permette de simuler un trajet et de calculer sa longueur. 6/ Écrire un programme pour trouver la longueur moyenne d'un trajet.

88 Isabelle ABOU88 ALGORITHME SIMULATION DUN TRAJET Déclaration Variable H,V,K, N en numérique Variable L en liste Entrée Affecter à H la valeur 0 Affecter à V la valeur 0 Affecter à K la valeur ENT(2*ALEA()) Mettre K dans L Traitement Si K=0 Alors Affecter à V la valeur V+1 Sinon Affecter à H la valeur H+1 TantQue [(Reste(V,2)>0) ou (Reste (H,2)>0)] Affecter à K la valeur ENT(2*ALEA()) Mettre K dans L Si K=0 Alors Affecter à V la valeur V+1 Sinon Affecter à H la valeur H+1 FinTantQue Affecter à N la valeur V+H Sortie Afficher le trajet est:, L Afficher La durée du trajet est:, N

89 Isabelle ABOU89 PROGRAMME ALGOBOX SIMULATION DUN TRAJET 1 VARIABLES 2 H EST_DU_TYPE NOMBRE 3 V EST_DU_TYPE NOMBRE 4 K EST_DU_TYPE NOMBRE 5 N EST_DU_TYPE NOMBRE 6 I EST_DU_TYPE NOMBRE 7 S EST_DU_TYPE NOMBRE 8 Moyenne EST_DU_TYPE NOMBRE 9 DEBUT_ALGORITHME 10 S PREND_LA_VALEUR 0 11 POUR I ALLANT_DE 1 A 1000 12 DEBUT_POUR 13 H PREND_LA_VALEUR 0 14 V PREND_LA_VALEUR 0 15 N PREND_LA_VALEUR 0 16 K PREND_LA_VALEUR floor(2*random( )) 17 SI (K==0) ALORS 18 DEBUT_SI 19 V PREND_LA_VALEUR V+1 20 FIN_SI 21 SINON 22 DEBUT_SINON 23 H PREND_LA_VALEUR H+1 24 FIN_SINON 23 H PREND_LA_VALEUR H+1 24 FIN_SINON 25 TANT_QUE ((V%2>0) OU (H%2)>0) FAIRE 26 DEBUT_TANT_QUE 27 K PREND_LA_VALEUR floor(2*random( )) 28 SI (K==0) ALORS 29 DEBUT_SI 30 V PREND_LA_VALEUR V+1 31 FIN_SI 32 SINON 33 DEBUT_SINON 34 H PREND_LA_VALEUR H+1 35 FIN_SINON 36 FIN_TANT_QUE 37 N PREND_LA_VALEUR V+H 38 S PREND_LA_VALEUR S+N 39 FIN_POUR 40 Moyenne PREND_LA_VALEUR S/1000 41 AFFICHER "La valeur moyenne du trajet est : " 42 AFFICHER Moyenne 43 FIN_ALGORITHME

90 Isabelle ABOU90 EXECUTIONS ***Algorithme lancé*** Le trajet est : 11 La durée du trajet est : 2 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 1001 La durée du trajet est : 4 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 00 La durée du trajet est : 2 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 00 La durée du trajet est : 2 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 0100001101 La durée du trajet est : 10 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 011101 La durée du trajet est : 6 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 0101 La durée du trajet est : 4 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 101101 La durée du trajet est : 6 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 0110 La durée du trajet est : 4 ***Algorithme terminé*** ***Algorithme lancé*** Le trajet est : 10110010 La durée du trajet est : 8 ***Algorithme terminé***

91 Isabelle ABOU91 DUREE MOYENNE DUN TRAJET A PARTIR DU PROGRAMME PRECEDENT Après les 10 simulations précédentes, on obtient une moyenne de : MOYENNE=48/10=4.8. Le nombre de simulations étant trop petit pour conclure, il faut écrire un programme qui calcule la moyenne des longueurs d'un nombre suffisamment grand de trajets.

92 Isabelle ABOU92 SIMULATION DE LA DUREE MOYENNE DUN TRAJET Il faudra écrire un algorithme qui : - simule plusieurs trajets, - compte la longueur de chaque trajet, - en fait ensuite la moyenne. L'algorithme suivant simule 1000 trajets et fait la moyenne de leurs longueurs. Remarque: dans ce dernier algorithme, il n'est pas nécessaire de détailler chaque trajet, c'est uniquement sa longueur qui interviendra dans le calcul de la durée moyenne.

93 Isabelle ABOU93 PROGRAMME ALGOBOX MOYENNE DUN TRAJET 1 VARIABLES 2 H EST_DU_TYPE NOMBRE 3 V EST_DU_TYPE NOMBRE 4 K EST_DU_TYPE NOMBRE 5 N EST_DU_TYPE NOMBRE 6 H1 EST_DU_TYPE NOMBRE 7 V1 EST_DU_TYPE NOMBRE 8 I EST_DU_TYPE NOMBRE 9 S EST_DU_TYPE NOMBRE 10 Moyenne EST_DU_TYPE NOMBRE 11 DEBUT_ALGORITHME 12 S PREND_LA_VALEUR 0 13 POUR I ALLANT_DE 1 A 1000 14 DEBUT_POUR 15 H PREND_LA_VALEUR 0 16 V PREND_LA_VALEUR 0 17 N PREND_LA_VALEUR 0 18 K PREND_LA_VALEUR floor(2*random( )) 19 SI (K==0) ALORS 20 DEBUT_SI 21 V PREND_LA_VALEUR V+1 22 FIN_SI 23 SINON 24 DEBUT_SINON 25 H PREND_LA_VALEUR H+1 26 FIN_SINON 27 H1 PREND_LA_VALEUR H-2*floor(H/2) 28 V1 PREND_LA_VALEUR V-2*floor(V/2) 29 TANT_QUE (V1>0 OU H1>0) FAIRE 30 DEBUT_TANT_QUE 31 K PREND_LA_VALEUR floor(2*random( )) 32 SI (K==0) ALORS 33 DEBUT_SI 34 V PREND_LA_VALEUR V+1 35 FIN_SI 36 SINON 37 DEBUT_SINON 38 H PREND_LA_VALEUR H+1 39 FIN_SINON 40 H1 PREND_LA_VALEUR H-2*floor(H/2) 41 V1 PREND_LA_VALEUR V-2*floor(V/2) 42 FIN_TANT_QUE 43 N PREND_LA_VALEUR V+H 44 S PREND_LA_VALEUR S+N 45 FIN_POUR 46 Moyenne PREND_LA_VALEUR S/1000 47 AFFICHER "La valeur moyenne du trajet est : " 48 AFFICHER Moyenne 49 FIN_ALGORITHME

94 Isabelle ABOU94 CONCLUSION 1ière simulation La moyenne des trajets est: 3.95 2ième simulation La moyenne des trajets est: 3.874 3ième simulation La moyenne des trajets est: 3.702 4ième simulation La moyenne des trajets est: 3.904 5ième simulation La moyenne des trajets est: 3.894 6ième simulation La moyenne des trajets est: 4.022 Après plusieurs simulations de 1000 trajets, on constate que la valeur de la durée moyenne d'un trajet tend vers 4 qui est la valeur théorique.

95 Isabelle ABOU95 UTILISATION DES RESSOURCES Le document daccompagnement « Ressources pour la classe de seconde –Algorithmique-» fournit 4 algorithmes sur les probabilités. - Le jeu du lièvre et de la tortue (3 algorithmes) Algorithme 1: simulation dune partie sans boucle Algorithme 2: cumuler un grand nombre dexpériences Algorithme 3: avec une structure itérative conditionnelle - Coïncidence des dates danniversaire dans une classe: Algorithme 4. Le document daccompagnement « Ressources pour la classe de seconde –Probabilités et Statistiques-» fournit 6 algorithmes sur les probabilités. - Coïncidence des dates danniversaire pour 12 personnes en utilisant un arbre. 2 algorithmes proposés, à analyser - Marche aléatoire et temps moyen Sauts de puce: 3 algorithmes proposés, à analyser - Nombre de lancers pour sortir tous les numéros dun dé cubique. Là aussi, nous avons choisi de nexposer quun certain nombre de ces algorithmes puisquils sont à disposition dans ces documents.

96 Isabelle ABOU96 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 dune case. La tortue gagne quand elle a avancé 6 fois. Question : le jeu est-il à lavantage du lièvre ou de la tortue ? Algorithme 1 : Simulation dune partie sans boucle La partie se finit en au plus six lancés. Il est donc possible de simuler une partie sans avoir recours à une boucle.

97 Isabelle ABOU97 ALGORITHME 1 Variables dé : la face du dé tirée au hasard tour : compte le nombre de tours que dure la partie Initialisation dé prend une valeur entière aléatoire entre 1 et 6 compris tour prend la valeur 1 Traitement Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris tour augmente de 1 Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris tour augmente de 1 Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris tour augmente de 1 Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris tour augmente de 1 Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris tour augmente de 1 Sortie Si dé = 6 alors Affiche « Le lièvre gagne » sinon Affiche « La tortue gagne » Affiche tour

98 Isabelle ABOU98 REMARQUES – Si le support de programmation sur lequel est transposé lalgorithme ne dispose pas des fonctionnalités de recopie de texte, la mise en place dune boucle peut se justifier. – Il est possible de modifier un peu la modélisation du jeu, afin de simplifier sa mise en œuvre, en particulier sur tableur ; en effet, la partie est équivalente aux lancers de six dés. Le lièvre gagne sil existe au moins un six parmi les résultats. – De cette façon un seul test peut suffire, à condition de disposer de linstruction appropriée (comme linstruction NB.SI du tableur). – Cependant, larithmétique booléenne peut aussi se modéliser avec des sommes ou des produits dentiers. Par exemple, le produit des six nombres (6 – dé) vaut 0 si et seulement il y a au moins un six.

99 Isabelle ABOU99 ALGORITHME 2 Algorithme 2: Cumuler un grand nombre dexpériences Il suffit daménager le programme afin dinsérer la simulation dune partie dans une boucle et de compter le nombre de parties gagnées par le lièvre ou la tortue. Lintérêt dun langage de programmation devient évident: litération est très rapide aussi bien à écrire, modifier quà exécuter (ce qui nest pas le cas avec le tableur). On pourra noter, à cette occasion, que certains langages sont beaucoup plus rapides que dautres.

100 Isabelle ABOU100 ALGORITHME 2 Variables dé : la face du dé tirée au hasard N : le nombre de parties à simuler k : le compteur de boucle tortue : le nombre de parties gagnées par la tortue Initialisation tortue prend une valeur 0 Traitement Pour k de 1 à N dé prend une valeur entière aléatoire entre 1 et 6 compris Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris Si dé < 6 alors dé prend une valeur entière aléatoire entre 1 et 6 compris Si dé < 6 alors tortue prend la valeur tortue + 1 Sortie Affiche tortue.

101 Isabelle ABOU101 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 à laide dune boucle. De cette façon, il sera facile dexpé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 »

102 Isabelle ABOU102 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; 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 sappelle donc « Ncase ». La structure repeat..until nexiste pas dans SCILAB, le code est donc légèrement aménagé par rapport à lalgorithme. Pour entrer dans la boucle une première fois, la variable « de » est initialisée avec la valeur arbitraire 0.

103 Isabelle ABOU103 COMMENTAIRES On peut écrire le programme avec AlgoBox et faire plusieurs exécutions pour observer les résultats obtenus. 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.

104 Isabelle ABOU104 COÏNCIDENCE DES DATES DANNIVERSAIRE DANS UNE CLASSE Dans la vie courante certaines coïncidences apparaissent « extraordinaires » (comme rencontrer par hasard quelquun de connu à des centaines de kilomètres de chez soi). Malheureusement bien souvent ces coïncidences ne se prêtent pas facilement à une modélisation qui permettrait un calcul de probabilités ou une simulation. Le problème évoqué dans ce paragraphe ne pose pas de grandes difficultés de modélisation; pour autant, le résultat savèrera sans doute étonnant pour de nombreux élèves. Sa mise en place algorithmique peut être loccasion de travailler des questions proches de celles des tris qui font souvent intervenir deux boucles imbriquées. Quelle est la probabilité que dans une classe de 30 élèves, il y ait au moins deux personnes qui partagent la même date danniversaire? Pour effectuer une simulation, il sagit dans un premier temps de tirer les 30 dates danniversaires au sort (parmi 365 jours, en supposant les dates danniversaire uniformément réparties sur lannée civile); il faudra ensuite chercher si deux dates coïncident. Les dates sont mémorisées dans un tableau. Comme cest souvent lusage, on note entre crochets lindice du tableau. Dans lexemple, on considère que les indices du tableau commencent à 0. Si le tirage au sort des dates se fait aisément sur tableur, il nen va pas de même de la recherche de dates identiques (du fait des deux boucles).

105 Isabelle ABOU105 ALGORITHME SIMULATION MÊMES DATES DANNIVERSAIRE Variables dates : tableau des trente jours danniversaire trouvé: un booléen qui indique si deux dates coïncident. k, p: deux compteurs de boucles. Initialisation Pour k de 0 à 29 dates[k] prend une valeur entière aléatoire comprise entre 1 et 365 inclus trouvé prend la valeur faux Traitement Pour k de 0 à 28 Pour p de k+1 à 29 Si dates[k] = dates[p] alors trouvé prend la valeur vrai Sortie Affiche trouvé

106 Isabelle ABOU106 PROGRAMMES SCILAB fournis par le document ressource dates=floor(rand(30,1)*365+1); trouve=%F; for k=1:29 for p=k+1:30 if (dates(p)==dates(k)) trouve=%T; end; if (trouve) disp("Deux personnes ont même anniversaire"); else disp("Pas deux anniversaires communs"); end Avec 1000 expériences N=0; for i=1:1000 dates=floor(rand(30,1)*365+1); trouve=%F; for k=1:29 for p=k+1:30 if (dates(p)==dates(k)) trouve=%T; end; if (trouve) N=N+1; end; disp("Il y a "+string(N)+" coïncidences");

107 Isabelle ABOU107 COMMENTAIRES On peut ensuite écrire le programme AlgoBox, et utiliser le type de variable liste pour la variable « dates ». Par contre, dans Algobox, il ny a pas de booléen. On peut contourner le problème en définissant la variable « trouvé » comme une variable numérique à laquelle on donnera suivant les cas la valeur 0 ou la valeur 1. On écrira un message de sortie correspondant à la valeur finale de « trouvé ».

108 Isabelle ABOU108 DES SAUTS DE PUCE Une puce se déplace sur un axe gradué: à chaque saut elle se déplace dune unité, de manière aléatoire et équiprobable vers la droite ou vers la gauche. Elle part de lorigine et effectue une marche de 30 sauts. Proposer un algorithme donnant la position du trentième saut. Enrichir lalgorithme précédent pour donner la liste des positions darrivée de N marches aléatoires.

109 Isabelle ABOU109 ALGORITHME 1 x désigne la position de la puce Variables x, i entiers Initialisation x prend la valeur 0 Traitement Pour i variant de 1 à 30 Si alea < 0,5 alors x prend la valeur x + 1 sinon x prend la valeur x – 1 fin Si fin Pour Sorties afficher x

110 Isabelle ABOU110 ALGORITHME 2 On peut demander aux élèves ce que fait lalgorithme suivant: Variables N, S, x, i, j entiers Entrées Saisir N Initialisation S prend la valeur 0 Traitement Pour j variant de 1 à N x prend la valeur 0 Pour i variant de 1 à 30 Si alea < 0,5 alors x prend la valeur x + 1 sinon x prend la valeur x – 1 fin Si fin Pour S prend la valeur S + x Fin Pour Sorties Afficher S/N

111 Isabelle ABOU111 ALGORITHME 3 On peut sinterroger sur la fréquence des différentes positions darrivée et pour cela simuler N marches aléatoires de 30 sauts, grâce à lalgorithme suivant: Variables N, x, i, j entiers, L liste Entrées Saisir N Initialisations L liste vide Traitement Pour j variant de 1 à N x prend la valeur 0 Pour i variant de 1 à 30 Si alea < 0,5 alors x prend la valeur x + 1 sinon x prend la valeur x – 1 fin Si fin Pour L(j) prend la valeur x Fin Pour Sorties Afficher la liste L

112 Isabelle ABOU112 HISTOGRAMME DES RESULTATS Pour mieux se représenter les résultats, il peut être utile de représenter les données aléatoires ainsi obtenues, sous la forme du graphique suivant :

113 Isabelle ABOU113 VIE COURANTE

114 Isabelle ABOU114 LARGUMENTATION STATISTIQUE Lactivité qui suit a été préparée par léquipe « statistiques et citoyenneté » de lIREM de Paris Nord. Elle permet de proposer un travail amenant les élèves à reformuler la question sur la discrimination éventuelle des jurés dorigine mexicaine ( 339 sur 870) lors dun procès aux États-Unis en 1976, dans un contexte statistique prenant en compte la fluctuation déchantillonnage. On peut utiliser, à sa suite, le programme exposé dans les pages précédentes sur le problème de la conformité dun échantillon.

115 Isabelle ABOU115 DISCRIMINATION ET STATISTIQUE En Novembre 1976 dans un comté du sud du Texas, Rodrigo Partida était condamné à huit ans de prison pour cambriolage dune résidence et tentative de viol. Il attaqua ce jugement au motif que la désignation des jurés de ce comté était discriminante à légard des Américains dorigine mexicaine. Alors que 79,1% de la population du comté était dorigine mexicaine, sur les 870 personnes convoquées pour être jurés lors des 11 années précédentes, seules 339 dentre elles étaient dorigine mexicaine. Lors du procès, un statisticien produisit des arguments pour convaincre la Cour Suprême du bien fondé de la requête de laccusé (dont les juges votèrent à 5 contre 4 en faveur de la requête).

116 Isabelle ABOU116 TRAVAIL ELEVES En vous situant dans le rôle de ce statisticien, produisez à votre tour des calculs, des raisonnements, des graphiques... pour montrer que le hasard ne peut pas « raisonnablement » expliquer à lui seul la sous représentation des américains dorigine mexicaine dans les jurys de ce comté. Vous commencez ce travail en binômes en utilisant les documents disponibles, la calculatrice, le tableur. Vous terminez la rédaction (arguments en français, calculs, graphiques...) en devoir à la maison.

117 Isabelle ABOU117 COMMENTAIRES Il sagit de concevoir lensemble des jurys désignés à ce jour comme un échantillon de taille 870 de la loi de Bernoulli de paramètre p où p désigne la proportion au Texas daméricains dorigine mexicaine (p~0,791). Les élèves sont amenés à simuler des échantillons de taille 870 pour voir si la fréquence observée est dans la zone de fluctuation au seuil 95%, ils peuvent utiliser lintervalle [p-1/rac(n);p+1/rac(n)].

118 Isabelle ABOU118 SONDAGES DOPINION PRINCIPE On a vu précédemment que si lon connaît la proportion p dun caractère dans une population totale, et si on fait un grand nombre de tirages de taille n, environ 95% dentre eux vérifient: la fréquence f du caractère dans léchantillon est dans lintervalle [p-1/rac(n); p+1/rac(n)]. Inversement, quand la proportion p du caractère est inconnue dans la population totale, si on fait un grand nombre de sondages de taille n, environ 95% dentre eux vérifient: p appartient à lintervalle [f-1/rac(n); f+1/rac(n)], où f est la fréquence du caractère pour un sondage de taille n. Lintervalle [f-1/rac(n); f+1/rac(n)] est appelé fourchette de sondage au niveau 0,95. Cest-à-dire f estime p avec une précision de 1/rac(n), au niveau de confiance 0,95.

119 Isabelle ABOU119 SONDAGES DOPINION ACTIVITE A Toulouse en 2001 on a fait un sondage dopinion sur un échantillon de taille n=601, concernant les intentions de vote aux municipales. Considérons un candidat A, toute personne interrogée doit répondre oui ou non à la question: avez-vous lintention de voter pour A. On est donc bien dans la cas dune loi binomiale, et on peut appliquer ce qui précède. On appelle f la proportion de personnes qui ont répondu oui à la question. Alors la différence entre la proportion p de personnes qui voteront pour A et les intentions ne doit pas dépasser 1/rac(n) soit 1/rac(601)=0,04079 environ 4%.

120 Isabelle ABOU120 COMMENTAIRES On peut construire une activité qui compare les résultats du sondage avec les votes effectifs, et chercher ensuite combien il aurait fallu interroger de personnes pour que les résultats soient meilleurs. Tout ce travail peut être couplé avec lalgorithme de conformité de léchantillon en inversant le rôle de p et de f.

121 Isabelle ABOU121 QUELQUES IDEES EN PREMIERE ET EN TERMINALE QUELQUES IDEES EN PREMIERE ET EN TERMINALE

122 Isabelle ABOU122 LES SUITES Un exemple classique: la suite de Syracuse dont le calcul dépend de la parité de n. Elle a notamment été utilisée dans un énoncé de Baccalauréat en mathématiques spécialité L. Cet algorithme peut être fait en première et/ou terminale. On peut demander aux élèves de le chercher ou bien de lexpliquer et de le faire tourner avec certains entiers comme cela est suggéré ci-après. Elle permet de conjecturer sur le comportement de la suite à partir de différentes valeurs initiales.

123 Isabelle ABOU123 LA SUITE DE SYRACUSE On donne lalgorithme suivant: Déclaration Variable n entier naturel Variable L liste Entrée : Écrire Entrer la valeur de n Lire n Initialisation : L liste vide Traitement : Tant que n < 100 Si n est pair Alors affecter à n la valeur n/2 Sinon affecter à n la valeur 3n + 1 Ajouter n à la liste L FinTant que Sortie : Afficher L 1/ Faire fonctionner lalgorithme avec n=3, n=4, n=15, n=21. Présenter les résultats dans un tableau donnant létat des variables au fur et à mesure. 2/ Cette suite est appelée « la suite de Syracuse », comment est-elle définie? 3/ Aux vues des résultats précédents, que peut-on conjecturer sur cette suite? Remarque: Cette conjecture nest toujours pas démontrée. Lien: suite de Syracusesuite de Syracuse

124 Isabelle ABOU124 PROGRAMME ALGOBOX fourni dans le fichier exemples 1 VARIABLES 2 n EST_DU_TYPE NOMBRE 3 u EST_DU_TYPE NOMBRE 4 i EST_DU_TYPE NOMBRE 5 DEBUT_ALGORITHME 6 LIRE n 7 u PREND_LA_VALEUR n 8 AFFICHER "0 -> " 9 AFFICHER u 10 POUR i ALLANT_DE 1 A 100 11 DEBUT_POUR 12 SI (u%2==0) ALORS 13 DEBUT_SI 14 u PREND_LA_VALEUR u/2 15 FIN_SI 16 SINON 17 DEBUT_SINON 18 u PREND_LA_VALEUR 3*u+1 19 FIN_SINON 20 AFFICHER i 21 AFFICHER " -> " 22 AFFICHER u 23 FIN_POUR 24 FIN_ALGORITHME

125 Isabelle ABOU125 EXECUTIONS ***Algorithme lancé*** 0 -> 51 1 -> 154 2 -> 77 3 -> 232 4 -> 116 5 -> 58 6 -> 29 7 -> 88 8 -> 44 9 -> 22 10 -> 11 11 -> 34 12 -> 17 13 -> 52 14 -> 26 15 -> 13 16 -> 40 17 -> 20 18 -> 10 19 -> 5 20 -> 16 21 -> 8 22 -> 4 23 -> 2 24 -> 1 25 -> 4 26 -> 2 27 -> 1 28 -> 4 29 -> 2 30 -> 1 … 97 -> 4 98 -> 2 99 -> 1 100 -> 4 Quelque soit la valeur de u(0), au bout dun certain nombre de termes on aboutit à la valeur 1, et ensuite on retrouve toujours les valeurs 4, 2, 1 à linfini.

126 Isabelle ABOU126 FRACTALES Les objets fractals peuvent se définir comme des structures obtenues par litération dun algorithme géométrique sur une figure. Pour construire des objets fractals, nous débutons avec un objet graphique quelconque (ligne, triangle, carré, cube, etc…). Par la suite, nous définissons une opération, ou une série dopérations, qui ajouteront un élément de complexité à lobjet initial. Nous appliquons à linfini, les transformations choisies à lobjet de départ.

127 Isabelle ABOU127 CONSTRUCTION DU FLOCON DE VON KOCH ALGORITHME: Tracer un triangle équilatéral. Remplacer le tiers central de chaque côté par un point dont la longueur de chaque côté est égale aussi au tiers du côté. Recommencer cette construction sur chaque côté des triangles ainsi formés.

128 Isabelle ABOU128 POIDS DUN ICEBERG Objectif : Un iceberg de 25 tonnes dérive vers le sud. Chaque jour, il perd 10% de sa masse. Combien de jours, faut-il, pour qu'il reste moins d'un kilogramme de glace ? on utilise lalgorithme suivant, on peut également faire afficher le poids de liceberg par jour, par mois, etc. fonte d'un iceberg

129 Isabelle ABOU129 APPROXIMATION DE PI PAR LA METHODE DE MONTE CARLO Cet exercice a pour but de calculer une approximation de la valeur de π en utilisant la méthode de Monte-Carlo et de la comparer avec une approximation connue de la valeur de π. Le principe de la méthode de Monte-Carlo est de tirer au hasard des coordonnées x et y, chacune dans lintervalle [0;1[. Si x² + y² < 1 alors le point P de coordonnées (x,y) appartient au quart de disque D de centre (0,0) et de rayon 1. La probabilité que P appartienne à D est π/4 (rapport de laire de D et du carré lenglobant). Donc, si on tire au hasard n points, et si p dentre eux appartiennent à D, on sattend à avoir : p/n π/4. On en tire une approximation de π égal à 4p/n.

130 Isabelle ABOU130 RESOLUTION On peut faire cette activité sur tableur ou écrire un programme pour trouver lapproximation de PI à partir de simulations.

131 Isabelle ABOU131 PROGRAMME ALGOBOX fourni dans le fichier exemples 1 VARIABLES 2 x EST_DU_TYPE NOMBRE 3 y EST_DU_TYPE NOMBRE 4 i EST_DU_TYPE NOMBRE 5 approxpi EST_DU_TYPE NOMBRE 6 somme EST_DU_TYPE NOMBRE 7 DEBUT_ALGORITHME 8 somme PREND_LA_VALEUR 0 9 POUR i ALLANT_DE 1 A 200000 10 DEBUT_POUR 11 x PREND_LA_VALEUR random() 12 y PREND_LA_VALEUR random() 13 SI (x*x+y*y<1) ALORS 14 DEBUT_SI 15 somme PREND_LA_VALEUR somme+1 16 FIN_SI 17 FIN_POUR 18 approxpi PREND_LA_VALEUR 4*somme/200000 19 AFFICHER approxpi 20 FIN_ALGORITHME

132 Isabelle ABOU132 EXECUTIONS ***Algorithme lancé*** 3.14244 ***Algorithme terminé*** ***Algorithme lancé*** 3.1354 ***Algorithme terminé*** ***Algorithme lancé*** 3.1476 ***Algorithme terminé*** ***Algorithme lancé*** 3.14492 ***Algorithme terminé***

133 Isabelle ABOU133 TOURS DE HANOÏ On dispose de trois piquets sur socle et de n disques de tailles deux à deux différentes, troués en leur centre. Les n disques sont empilés sur le socle n°A. Le but du jeu est de le faire passer tous sur le socle n° C en respectant les règles suivantes : –1. On ne déplace quun disque à la fois. –2. Un disque ne peut être mis que sur lun des trois socles –3. Un disque ne peut jamais être mis sur un disque de taille plus petit. Exemple : Tour de Hanoï avec 5 disques :

134 Isabelle ABOU134 NOMBRE DE DEPLACEMENTS On notera Un le nombre de déplacements pour réussir. Cas simples : Déterminer U1, U2, U3. Cas n = 4 : Déterminer U4 en expliquant votre procédure. Généralisation : a. Expliciter cette proposition : « Pour déplacer les n disques, il faudra nécessairement être dans cette situation : tous les disques sont empilés sur le socle n° B sauf le plus grand quon va pouvoir passer du premier socle au dernier socle. » b. En déduire que Un = 2 Un-1 +1. c. Vérifier U4 et en déduire U5 puis U6.

135 Isabelle ABOU135 TOURS DE HANOÏ UN EXEMPLE DALGORITHME RECURSIF Montrons, par induction sur n, quil existe toujours une solution. Si n = 1, celle-ci est banale. Si n = 2, cest tout aussi simple. Pour n = 3, la solution sobtient assez vite et il ny a pas beaucoup de choix: on commence par déplacer les deux disques du haut sur le piquet 2 avec les déplacements de piquet à piquet selon la séquence 1 3, 1 2, 3 2. Le piquet 1 ne contient plus que le grand disque, doù son déplacement 1 3, puis on déplace la tour du piquet 2 sur le piquet 3. Supposons maintenant le problème résolu pour n 1 disques. Evidemment, il est résolu indépendamment des numéros de piquet. On peut donc partir de n disques empilés sur le piquet a appartenant à {1, 2, 3} pour les enfiler, en respectant les règles, sur le piquet b appartenant à {1, 2, 3} \ {a}, le troisième piquet ayant alors le numéro 6 a b. Cela donne comme solution : 1. déplacer les n 1 disques supérieurs du piquet a sur le piquet 6 a b ; 2. déplacer le plus grand disque restant sur le piquet b ; 3. déplacer les n 1 disques du piquet 6 a b sur le piquet b.

136 Isabelle ABOU136 PROCEDURE Cet algorithme conduit à la procédure suivante : procedure TourdeHanoi(n :entier ; a,b :entier) ; début Si n > 0 alors début TourdeHanoi(n-1, a, 6-a-b) ; Ecrire(a,->,6-a-b) ; TourdeHanoi(n-1, 6-a-b, b) ; fin ; Fin ; Lien pour une animation : Tours de HanoïTours de Hanoï

137 Isabelle ABOU137 BIBLIOGRAPHIE EduSCOL Site : eduscol.education.fr * Programme de mathématiques pour la classe de seconde générale et technologique. * Ressources pour la classe de seconde -Algorithmique-. * Ressources pour la classe de seconde -Probabilités et statistiques-. * Ressources pour la classe de seconde -Fonctions-. * Ressources pour la classe de seconde -Notations et raisonnement mathématiques-. Activité du groupe « statistique et citoyenneté » de lIREM de Paris Nord sur le site de lAcadémie de Grenoble dans les documents ressources de seconde. Mathématiques Informatique. 1 ière L. Ed Delagrave Site: histoiredechiffres.free.fr Poids dun iceberg Approximation de PI par la méthode de Monte Carlo. Eric Gillon Tours de Hanoï et nombre de déplacements. Eric Gillon Cours algorithmique DEUG MIAS. Pierre Liardet Site de mathématiques de lAcadémie de la Réunion. Lien avec Icosaweb. Programmation. Alain Busser.


Télécharger ppt "1Isabelle ABOU ALGORITHMIQUE STAGE LA REUNION. 2Isabelle ABOU PLAN DE LEXPOSE I. LALGORITHMIQUE II. LALGORITHMIQUE AU LYCEE III. LE LOGICIEL ALGOBOX IV."

Présentations similaires


Annonces Google