http://www.enfa.fr/r2math
Juin 2013
N° 22
le bulletin du groupe de réflexion
sur l'enseignement des mathématiques
PY-MATH
en Quatrième et Troisième de
l’Enseignement Agricole,
Secondes générale et professionnelle,
Bac Pro, Bac Techno, filière S et BTSA
Sommaire
4e et 3e de l'EA Seconde Pro Bac Pro Seconde GT Bac Techno Filière S BTSA Enseignants
A maths lesson in English ... page 3
Comment amener les élèves de seconde
à créer des algorithmes ? ... page 11 Sudomaths ... page 33
Les 10 minutes des mathématiciens ... page 37
Probabilités et statistique avec GeoGebra ... page 39 Lois de probabilités avec GeoGebra... page 40 Les tests avec une calculatrice ou GeoGebra ... page 49 Test de Dixon - Recherche de valeurs
aberrantes ... page 57 Correction sujet BTSA remplacement 2012 -
(toutes options) ... page 65
Membres du groupe ayant participé à ce bulletin PY-MATH n°22 C
HAPUTBrigitte
ENFAde
TOULOUSE AUZEVILLEF
ERRERChristelle
LEGTAde
NÎMES RODILHANG
ARCIAJean-Philippe
LEGTAd'A
UXERREG
ARDIENNETAlain
LEGTAde
PLOMBIÈRES-
LES-
DIJONJ
UGANDelphine
LEGTAde
SAINT-
HERBLAINL
EB
ASTARDYannick
LEGTAde
MONTPELLIERL
ECLERCQFabrice
LEGTAdu
PAS-
DE-
CALAISM
ASOUNAVEAlice
LEGTAde
PAU MONTARDONQ
UETGuillaume
LEGTAd'
AUBENASR
OLLANDJeanne
LEGTAde
MORLAIXR
OUGERValérie
LEGTAde
BOURG-
EN-
BRESSES
ICRENathalie
LPAde
SAINT-
AFFRIQUES
IROTÉric
LEGTAde
BRESSUIRET
HOMASEmmanuelle
LEGTAd'
AVIGNONT
RONCHEGeneviève
LEGTAde
BRIVE OBJATW
AGNERSylvain
LEGTAde
MIRECOURTA MATHS LESSON IN ENGLISH
Les ingrédients :
-
Un groupe d'élèves de Seconde
GTqui donne envie.
-
Deux collègues l'une en Mathématiques et l'autre en Anglais qui travaillent ensemble depuis longtemps et ont œuvré de concert dans un projet
COMENIUSil y a quelques années.
-
Un établissement qui sollicite une section européenne en filière
STAVà la rentrée prochaine.
Et l'aventure est lancée… Let's go!
Voici le compte-rendu de l'expérience menée, l'espace d'une séance d'une heure de Mathématiques, avec l'avant et l'après séance.
Le contexte en Mathématiques
La première séquence de Seconde GT Du calcul numérique au calcul algébrique s'achève par des problèmes conduisant à la résolution d'équations des premier et second degrés (voir Annexe 1 : fiche 1, exercices 1, 2 et 3, sachant que d'autres exercices du manuel ont été traités). Il a été beaucoup question au cours de cette leçon du passage entre deux langues : la langue mathématique et la langue française.
Pourquoi alors ne pas envisager une troisième langue ? Well, speak English!
Je fais donc l’annonce en classe d'une prochaine séance de Maths en Anglais. Quelques élèves expriment alors des réticences « Déjà que c'est pas facile, alors en Anglais… » mais la grande majorité des élèves, positifs et curieux, se disent prêts à relever le défi. Défi auquel je m'associe et cela a l'air de les rassurer !
La préparation en Anglais
Après concertation avec ma collègue d'Anglais, il a été convenu de faire travailler les élèves sur plusieurs registres de vocabulaire en Mathématiques :
• vocabulaire lié aux opérations et au thème des équations,
• vocabulaire lié aux figures de géométrie plane,
• vocabulaire lié aux notions de largeur, longueur, haut, bas,
• vocabulaire spécifique autour de la maison et du jardin pour un des exercices.
Comme on peut le voir en Annexe 2, ma collègue d'Anglais a choisi différents supports pour faire réviser ou acquérir ce vocabulaire. À noter le logiciel Eclipse Crossword qui permet de créer facilement des mots croisés ! ou des nombres croisés !!!!!
Bien sûr, cet apprentissage s'est déroulé en cours d'Anglais suffisamment tôt pour être assimilé, en sachant que les élèves devaient venir avec ce lexique à la séance Maths en Anglais.
Le déroulement de la séance
La séance a été réalisée en présence des deux enseignantes. Le groupe des 14 élèves était installé en U, avec leur enseignante d'Anglais assise parmi eux.
Le ton a été donné dès le début, par la collègue angliciste : « Aujourd'hui, nous allons avoir
une séance de Maths en Anglais. La règle du jeu est pour tous, enseignantes et élèves, de
parler exclusivement en Anglais. Rassurez-vous ! Vous êtes plus compétents que moi en Maths. Moi je suis là pour apporter mon aide, si besoin, en Anglais à vous les élèves et aussi à votre professeur de Maths. J'interviendrai à la fin de chaque exercice pour faire le point avec vous. ».
Nous avions convenu que ma collègue d'Anglais n'interviendrait, au cours de l'exercice, que si la compréhension lui semblait handicapée par la langue et pas pour des raisons d'erreurs d'expression.
Maintenant, à moi d'intervenir ! Je rappelle, in English of course, que je ne suis pas professeur d'Anglais mais que l'on va tous essayer ensemble de relever le défi et je les rassure en leur disant que nous avons travaillé sur ce thème la semaine dernière en Français.
Je fais rappeler à Gaétan, en les écrivant au tableau, les quatre étapes à suivre : 1°) - choosing the unknown,
2°) - translating the text in an equation, 3°) - solving the equation,
4°) - giving an answer for the problem.
La trame est ainsi donnée pour les différents exercices.
Nous débutons la fiche 2 (voir Annexe 3).
Exercise 1
Mathilde lit l'énoncé, son accent en Anglais me rassure !!! Je m'assure que tous les mots soient compris en particulier square, en prenant quelques exemples : 2², 3², 5².
La traduction de l'énoncé sous la forme d'une équation se fait sans souci. Je fais dire la nature de l'équation et la méthode de résolution. Les élèves se souviennent bien de ce qui a été étudié en Maths et Pierre-Yves le résume avec assurance.
Louis vient faire la résolution au tableau et je l'aide à factoriser.
Complete the equality : x − 2 x² = 0 or x × ... − x × ... = 0.
Louis a un peu de mal à dire tous ces symboles en Anglais tout en résolvant l'équation, je l'encourage et on arrive ainsi jusqu'à la dernière étape, où la réponse est à rédiger.
Un point est fait par la collègue d'Anglais : je suis reprise, à juste titre, sur la prononciation du fameux x. Les élèves rassurés d'être arrivés sains et saufs jusque là disent avoir compris l'exercice, je le pense aussi, la séance peut continuer !
Exercise 2
Margaux lit l'énoncé, très concentrée.
Je demande à ce que soient précisés les mots : increased et reduced. Gaëtan (the first), à l'aise à l'oral en Anglais, parle d'augmentation et de diminution, as same as in French.
Je leur conseille de faire un dessin. Je passe les voir et m'assure de leur compréhension des termes précédents. Jessica, malgré ses difficultés en Anglais, veut bien venir faire le croquis au tableau.
Passons à la traduction de l'énoncé sous la forme d'une équation !
David nous rappelle les formules pour l'aire et le périmètre d'un rectangle. On y est presque...
Attention à la présence indispensable des brackets or parentheses ! David est là pour corriger...
Have you understood, Sarah? Sarah prétend que oui, je n'en suis pas sûre mais je laisse faire...
Il faut dire que Sarah a son caractère...
Et maintenant la résolution !
Gaëtan (the second), qui se débrouille bien en Maths et moins bien en Anglais, ne comprend pas bien que je lui demande s'il a compris, me répond Yes, sur les conseils de ses camarades...
Well, Gaetan, go to the blackboard and explain how to solve this equation!
Gaëtan, un peu timide, se lance et même se précipite pour résoudre... et retourner vite à sa place. Dommage ! Il va trop vite dans sa résolution. Margaux demande, in English, des explications et avec mon aide, nous devons détailler... Les choses se compliquent, pour lui et pour moi mais nous y parvenons ! Ce n'est pas si aisé de corriger certaines mistakes...
Un point est fait par la collègue d'Anglais : je suis reprise, une nouvelle fois à juste titre.
J'aurais dû dire : To help you... et non For help you... Prise dans mes bonnes intentions, j'en oublie mon B-A-BA in English… Les élèves disent avoir compris, je suis déjà moins sûre pour certains...
Mais c'est déjà la fin de la séance et chacun s'en étonne, élèves comme professeurs ! Le défi a été relevé, chacun s'en félicite même si les élèves, et nous deux aussi, sommes déçus de ne pas avoir traité l'exercise 3, où le vocabulaire préparé en Anglais avait été reconnu par les élèves dès la distribution de la fiche !
L'après-séance
Un devoir à la maison Maths-Anglais a été donné aux élèves. Il s'agit de l'exercice 4 de la fiche 1 fournie en Annexe, où il est demandé d'inventer, in English, un énoncé correspondant à des équations. Est-ce que c'était trop ambitieux ? Peut-être ! Ce n'est déjà pas si facile en Français. Autant les élèves se sont bien investis en classe, autant leur travail a été décevant pour ces recherches ! Il serait même difficile de montrer quelques productions ici...
Nous envisageons de renouveler l'expérience en classe, à raison d'une fois par trimestre, peut- être sous d'autres formes, avec d'autres supports comme les cours-vidéos de la BBC (adresse en fin d'article). À noter aussi que le manuel de Maths utilisé avec ces élèves est le manuel de la collection Didier qui propose en fin de chaque leçon an English corner et qu'ainsi peuvent être proposées quelques recherches mathématiques en Anglais !
L'expérience de cours en Anglais est menée également avec ce groupe d'élèves, à raison d'une fois par trimestre, en Biologie et en Histoire-Géographie. L'idée de se préparer à l'ouverture éventuelle d'une section européenne en filière STAV est, bien sûr, présente dans nos têtes.
Le bilan
Les élèves ont été pour la plupart soucieux de relever le défi. Ils ont été extrêmement concentrés et, tout en ayant pleinement conscience de cet effort-là, ont été satisfaits de cette première expérience. Quelques paroles du style « Qu'est-ce qu'elle dit ? », « Je ne comprends pas », « Mais si, regarde le vocabulaire donné en Anglais ! » ont bien été murmurées, mais les élèves ont tâché de respecter la règle du jeu : Parler exclusivement Anglais et moi aussi ! Beaucoup d'énergie dépensée par les élèves et aussi par leur professeur de Maths pour un résultat assez réussi, ma foi !
Il va de soi que pour garantir le succès d'une telle séance, il faut que les notions
mathématiques utilisées soient assimilées. Ici, la séance arrivait en fin de leçon et les
techniques de résolution des équations étaient dans l'ensemble maîtrisées. Quant à l'aspect
traduction d'un énoncé, qui n'est pas forcément aisé pour les élèves dans leur langue
maternelle, on pouvait craindre des difficultés. C'était de fait un vrai travail de langue pour
cette partie et donc doublement intéressant. Néanmoins, on peut se demander si, pour une
première fois, la difficulté n'était pas trop grande.
Ce fût l'occasion de croiser deux disciplines, de faire vivre une langue vivante dans un autre contexte, de surcroît un contexte scientifique et l'on sait que l'Anglais est la langue communément employée de nos jours dans ce domaine.
Quelques impressions de ma collègue d'Anglais
« J'ai trouvé cette expérience (qui n'était pas une première) très intéressante. Même si les élèves semblaient un peu intimidés et n'osaient pas toujours s'exprimer (peut-être l'auraient-ils fait plus volontiers si je n'avais pas été là), ils ont bien joué le jeu. Ils étaient très, très attentifs à ce que leur disait leur professeur de Maths et, chose très amusante, certains l'encourageaient
"very good!" (très surpris que le prof de math parle aussi anglais).
Les plus faibles en anglais mais plus forts en maths sont valorisés dans ce type de séance car lorsqu'un énoncé est écrit au tableau c'est tout de suite clair pour eux (même si ils n'avaient pas tout à fait compris les consignes en anglais qui avaient précédé). Alors que les faibles en maths ont été valorisés en étant capables de poser des questions ou de demander des explications en anglais !
Même si certains ont "soufflé" de soulagement à la fin de la séance qui leur avait demandé beaucoup de concentration (pour le prof d'anglais aussi..., les maths étant un très lointain souvenir !!), la plupart ont pris du plaisir à faire des maths en anglais et ont exprimé le souhait de recommencer. »
Ressources en ligne
• Le site de la BBC : www.bbc.co.uk/schools/
• Le site du CNED pour tester son niveau en Anglais :
http://www.englishbyyourself.fr/article_test-de-niveau_1151.html
• Le site Euromath d'échange et de mutualisation pour les professeurs de Mathématiques enseignant en section européenne: http://euromath.free.fr
• Le site d'accompagnement pour les sections européennes et de langues orientales Emilangues : http://www.emilangues.education.fr
• Un dictionnaire : http://www.amathsdictionaryforkids.com/dictionary.html
• Des vidéos :
http://www.teachers.tv/mathematics
• Des exercices en anglais : http://www.ixl.com/math
Annexe 1
FICHE 1 : Problèmes à mettre en équations et à résoudre
En suivant la démarche indiquée ci-dessous, traiter les exercices 1, 2 et 3 : 1°) - Choisir l'inconnue
2°) - Traduire l'énoncé sous la forme d'une équation 3°) - Résoudre l'équation
4°) - Conclure pour le problème posé Exercice 1
Déterminer le(s) nombre(s) dont le double diminué de 1 est égal au tiers augmenté de 1.
Exercice 2
Déterminer le(s) nombre(s) dont le triple du carré est égal au double.
Exercice 3
Si on diminue la longueur d'un bassin carré de 2 m, son aire diminue de 52 m². Déterminer la longueur initiale du côté de ce bassin.
Exercice 4
Voici deux problèmes à ne pas résoudre : Problème 1
Un âne porte 15 sacs de sel et 2 kg d'olives. Un mulet porte 2 sacs de sel et 40 kg d'olives. L'âne souffle fort ! « De quoi te plains-tu ? Nous portons la même charge » dit le mulet. Quelle est la masse x, en kg, d'un sac de sel ?
Problème 2
Pour s'entraîner au marathon, Paul part faire un footing à la vitesse de 15 km/h.
Son frère, Luc, veut le rejoindre en mobylette. Il part 2 h plus tard et roule à la vitesse de 40 km/h. Quel temps x, en h, mettra-t-il pour le rattraper ?
… et quatre équations !
Équation A : 40x − 15 = 2 Équation B : 15x + 2 = 2x + 40 Équation C : 15 (x + 2) = 40x Équation D : x + 40 = 2 (x + 15)
1°) - Parmi ces 4 équations, retrouver celle qui correspond au problème 1, celle qui correspond au problème 2.
2°) - Inventer, en Anglais, un énoncé correspondant à chacune des 2 équations restantes.
Annexe 2 Mathematics
A/ Match the French words with their equivalents in English:
équation •
problème •
inconnue •
solution •
résoudre •
vérifier •
conclure •
factoriser •
développer •
déduire (en conséquence) •
augmenter •
diminuer •
ajouter •
soustraire •
multiplier •
diviser •
• to increase
• to substract
• to check
• equation
• to decrease
• to divide (by)
• problem
• to conclude
• to add
• unknown
• solution
• to deduce
• to expand
• to solve
• to multiply (by)
• to factorise B/ Read the following operations:
4 and 3 are 7 or 4 plus 3 is 7 4 from 7 is 3 or 7 minus 4 is 3 4 threes are 12 or 4 times 3 is 12 4 into 12 is 3 or 12 divided by 4 is 3
C/ Find the noun corresponding to the following adjectives:
• long → ...
• wide → ...
• high → ...
• deep → ...
D/ Translate in English:
• Quelle est la largeur de la pièce ?
• La route a une largeur de 5 m.
• Quelle est la longueur du pont ?
• Quelle est la hauteur du mur ?
E/ Describe the following drawing:
Words to use: tree, ball, door, window, roof, ladder, wall, chimney, on the right, on the left, in front of, against, on...
Annexe 3 FICHE 2 : Solve problems with equations Exercise 1
Find the number(s) which equals the double of his square.
Exercise 2
A square field is changed on two consecutive sides: one side is increased by 20 m, the another side is reduced by 10 m. We have then a rectangle field with the same area.
Find the side of the square field in m.
Exercise 3
Describe the situation (In the first picture..., In the second picture...) Find the length of the ladder.
Exercise 4
A school rents a bus for an outing. Each student must pay 11 €. But 4 students can't come. So each student must pay more: the amount is then 13 € for everyone.
Find how many students are registered at the beginning.
70 cm 10 cm
COMMENT AMENER LES ÉLÈVES DE SECONDE À CRÉER DES ALGORITHMES ?
Depuis quelques années, l’algorithmique est au programme des classes de la seconde à la Terminale S. Forts (un peu !) de ces années d’expérience, nous avons mis en commun nos impressions, puis nos idées. Dans cet article, nous vous proposons deux manières différentes de travailler mais avec une progression commune : exécution d’algorithmes, modification d’algorithmes, puis création d’algorithmes.
En effet, dans un premier temps, l’exécution d’algorithmes donnés peut être un moyen d’entrer dans le vif du sujet. Puis, quand les élèves commencent à exécuter facilement à la main des algorithmes, on peut les inciter à les modifier. Cette étape nous paraît une bonne entrée en matière pour la création d’algorithmes.
Il nous paraît important que les élèves exécutent les algorithmes "à la main", mais pour leur donner envie d’aller plus loin et pour donner vie à ces programmes, la programmation des algorithmes sur la calculatrice ou un logiciel nous apparaît essentielle.
Les algorithmes donnés sont écrits en "pseudo-code". Il s’agit d’une forme standardisée qui se rapproche de la syntaxe d’un langage de programmation. Toutefois, le choix des mots-clés est arbitraire, il n’existe pas de règle universelle pour écrire en "pseudo-code".
Des indications de corrections sont données en bleu dans le texte.
Première proposition
Dans cette partie, différents algorithmes sans lien entre eux sont proposés avec, à chaque fois, les trois mêmes questions :
-
Quelles sont les données de l’algorithme ?
-
Quels sont les résultats de l’algorithme ?
-
Quelles sont les structures informatiques à utiliser ?
Nous donnons une traduction en langages Casio et Texas Instrument de certains des algorithmes.
En outre, pour que les élèves comprennent le fonctionnement d’un algorithme, nous leur demandons d’en réaliser une trace de l’exécution pas à pas. Une trace est une marque qui reste d’un événement passé. En algorithmique, il s’agit d’exécuter les instructions de l’algorithme pas à pas comme le ferait un ordinateur.
La présentation dans un tableau, qui peut cependant s’avérer parfois lourde, permet de voir quelle instruction (événement) laisse quelle trace.
I. - Affectation de variables
Dans un programme, une variable correspond à un emplacement de la mémoire de la calculatrice ou de l’ordinateur. Elle est repérée par un nom et contient une valeur.
L’instruction d’affectation permet d’attribuer une valeur à une variable.
On note, par exemple : « A prend la valeur 2 » ou « Affecter à A la valeur 2 » ou « 2 Æ A »
ou « A ← 2 ».
Exercice 1
Voici un algorithme, écrit en français, que les élèves ont appliqué plus d’une fois, ce qui peut être une entrée en matière et qui relativise ce mot si difficile à écrire : al-go-ri-th-me !
Appliquer cet algorithme à un nombre de votre choix.
Langage naturel Langage algorithmique
Variables : x, a, b, c, R
Entrées
Choisir un nombre Lire x (ou Saisir x)
Traitement
Le multiplier par 2 a prend la valeur x × 2 Ajouter 1 312 au résultat obtenu b prend la valeur a + 1312 Diviser le résultat par 2 c prend la valeur b ÷ 2 Soustraire le nombre de départ au résultat obtenu R prend la valeur c − x
Sortie
Afficher R
Exercice 2
1) Appliquer l’algorithme suivant aux valeurs a = 2 et b = 5.
Algorithme 1 Langage T. I. Langage Casio
Variables : a, b, c Entrées
1 Lire a Prompt A “A =” : ? → A
2 Lire b Prompt B “B =” : ? → B
Traitement
3 c prend la valeur a A ´ C A ´ C
4 a prend la valeur b B ´ A B ´ A
5 b prend la valeur c C ´ B C ´ B
Sortie
6 Afficher a Disp “A ”, A “A ”: A ◢
7 Afficher b Disp “B ”, B “B ”: B ◢
2) Appliquer l’algorithme précédent aux valeurs a = 2 et b = 5 en réalisant une trace de son exécution à l'aide du tableau suivant :
Algorithme 1 Variables
Ligne Instruction a b c
1 Lire a 2 Lire b
3 c prend la valeur a
4 a prend la valeur b
5 b prend la valeur c
6 et 7 Résultat
On obtient finalement :
Algorithme 1 Variables
Ligne Instruction a b c
1 Lire a 2 × ×
2 Lire b 2 5 ×
3 c prend la valeur a 2 5 2
4 a prend la valeur b 5 5 2
5 b prend la valeur c 5 2 5
6 et 7 Résultat a = 5 et b = 2 3) Expliquer ce que fait cet algorithme.
Exercice 3
1) Appliquer l’algorithme suivant aux valeurs a = 2 et b = 5 en en réalisant une trace.
Algorithme 2 Langage T. I. Langage Casio
Variables : a, b Entrées
1 Lire a Prompt A “A = ” : ? → A
2 Lire b Prompt B “B = ” : ? → B
Traitement
3 a prend la valeur a + b A + B ´ A A + B ´ A 4 b prend la valeur a − b A − B ´ B A − B ´ B 5 a prend la valeur a − b A − B ´ A A − B ´ A
Sortie
6 Afficher a Disp “A ”, A “A ”: A◢
7 Afficher b Disp “B ”, B “B ”: B ◢
2) Expliquer ce que fait cet algorithme.
Exercice 4
Créer un algorithme qui calcule la distance AB où A et B sont deux points donnés par leur coordonnées dans un repère orthonormé.
On n’oubliera pas de répondre aux trois questions essentielles : Quelles sont les données de l’algorithme ?
Quels sont les résultats attendus de l’algorithme ?
Quelles sont les structures informatiques à utiliser ?
II. Instruction conditionnelle : « Si… Alors… Sinon... »
Dans un algorithme, il se peut que, selon qu’une condition est vraie ou fausse, on doive exécuter un bloc d’instructions ou un autre. Pour cela, on utilise les instructions conditionnelles « Si… Alors... Sinon... » et « Si… Alors... ».
Si condition Alors Instructions 1 Sinon
Instructions 2 FinSi
Si condition Alors Instructions FinSi
Exercice 1
On considère la droite d’équation : y = − 2x + 3.
1) Appliquer l’algorithme suivant aux points de coordonnées (0,5 ; 2) et (0 ; 4) en en réalisant une trace dans le tableau donné ci-dessous.
Puis expliquer ce que fait cet algorithme.
Algorithme 3 Langage T. I. Langage Casio
Variables : x, y, z Entrées
1 Lire x Prompt X “X = ” :? → X
2 Lire y Prompt Y “Y = ” :? → Y
Traitement et sortie
3 z prend la valeur − 2 x + 3 − 2X + 3 ´ Z − 2X + 3 → Z
4 Si y = z Alors If Y = Z If Y = Z
Then
5 Afficher « Le point est sur la droite »
Disp “Le point est sur la droite”
Then “Le point est sur la droite” ◢
6 Sinon Else
7 Afficher « Le point n'est pas sur la droite »
Disp “Le point n’est pas sur la droite”
Else “Le point n’est pas sur la droite” ◢
8 Fin Si End IfEnd
Remarque : Sur T. I., il faut passer à la ligne après les instructions Then et Else.
Algorithme 3 Variables
Lignes Instructions x y z Valeur
condition
Ligne suivante
1 Lire x 0,5 × ×
2 Lire y 0,5 2 ×
3 z prend la valeur − 2 x + 3 0,5 2 2
4 Si y = z Alors 0,5 2 2 VRAI 5
5 Résultat "Le point est sur la droite"
2) Modifier cet algorithme pour qu'il affiche si le point est au dessus ou en dessous de la
droite.
Exercice 2
Créer un algorithme qui affiche si un point connu par ses coordonnées dans un repère orthonormé, est sur un cercle de centre A (connu par ses coordonnées) et de rayon R.
On peut être amené à utiliser une instruction « Si… Alors... » (sans Sinon).
Exercice 3
1) Appliquer l’algorithme suivant pour p = 350 en en réalisant une trace de l'exécution dans le tableau ci-dessous.
Algorithme 4 Langage T. I. Langage Casio
Variables : p, r Entrée
1 Lire p Prompt P “P = ” : ? → P
Initialisation
2 r prend la valeur 0 0 ´ R 0 → R
Traitement
3 Si p > 200 Alors If P > 200 If P > 200
Then Then 0,1 × P → R
4 r prend la valeur 0,1 × p 0,1 × P ´ R
5 p prend la valeur p − r P − R ´P P − R →P
6 Fin Si End IfEnd
Sortie
7 Afficher r Disp “R ”, R “R ”: R◢
8 Afficher p Disp “P ”, P “P ”: P◢
Algorithme 4 Variables
Lignes Instructions p r Valeur
condition
Ligne suivante
1 Lire p 350 ×
2 r prend la valeur 0 350 0
3 Si p > 200 Alors 350 0 VRAI 4
4 r prend la valeur 0,1 × p 350 35 5
5 p prend la valeur p − r 315 35
Résultat r = 35 et p = 315 2) Qu’afficherait l’algorithme pour p = 50 ?
Expliquer ce que fait l'algorithme 4.
III. Boucle « Tant que... »
Une boucle « Tant que... » permet de répéter plusieurs fois le même bloc d’instructions tant qu’une certaine condition reste vraie.
Tant que condition Instructions Fin Tant que Exercice 1
Algorithme 5 Langage T. I. Langage Casio
Variable : f Initialisation
1 f prend la valeur 0 0 ´ F 0 ´ F
Traitement
2 Tant que f est différent de 3 While F ≠ 3 While F ≠ 3 3 f prend une valeur aléatoire entière
entre 1 et 6 entAléat(1,6) ´ F Int(Ran# × 6 + 1) ´ F
4 Afficher f Disp F F◢
Pause
5 Fin Tant que End WhileEnd
Sortie
6 Afficher "Gagné" Disp “Gagné” “Gagné”◢
1) Programmer, puis faire tourner cet algorithme à l’aide de la calculatrice.
Expliquer ce que fait l'algorithme.
2) Réaliser une trace de l'exécution de l'algorithme 5 dans le tableau suivant.
Algorithme 5 Variable Itération
Lignes Instructions f Valeur
condition
Rang Itération
1 f prend la valeur 0 0
2 f est différent de 3 0 VRAI
3 f prend une valeur aléatoire entière entre 1 et 6 1 VRAI 1
4 Afficher f 1
2, 3 et 4 f prend une valeur aléatoire entière entre 1 et 6 4 VRAI 2 2, 3 et 4 f prend une valeur aléatoire entière entre 1 et 6 5 VRAI 3 2, 3 et 4 f prend une valeur aléatoire entière entre 1 et 6 2 VRAI 4 2, 3 et 4 f prend une valeur aléatoire entière entre 1 et 6 5 VRAI 5 2, 3 et 4 f prend une valeur aléatoire entière entre 1 et 6 3 FAUX 6
5 Fin Tant que
6 Afficher « Gagné »
3) Modifier l’algorithme pour qu’il affiche le nombre de coups qu’il a fallu pour gagner.
L’introduction d’un compteur s’avère utile.
Algorithme 6 Langage T. I. Langage Casio
Variables : f, k Initialisation
1 f prend la valeur 0 0 ´ F 0 ´ F
2 k prend la valeur 0 0 ´ K 0 ´ K
Traitement
3 Tant que f est différent de 3 While F 3 ≠ While F ≠ 3 4 f prend une valeur aléatoire entière
entre 1 et 6 entAléat(1,6) ´ F Int(Ran# × 6+1) ´ F
5 afficher f Disp F F ◢
6 k prend la valeur k + 1 K + 1 ´ K K + 1 ´ K
Pause
7 Fin Tant que End WhileEnd
Sortie
8 Afficher "Gagné en ", k, " coups" Disp “Gagné en ” “Gagné en ”◢
Disp K K◢
Disp “ Coups” “ Coups” ◢
4) Modifier l’algorithme pour simuler le lancer de 2 dés D et E jusqu’à l’obtention d’un double. On pourra introduire un compteur qui mettra en évidence le nombre d’essais nécessaires pour gagner.
Algorithme 7 Langage T. I. Langage Casio
Variables : D, E Initialisation :
1 D prend la valeur 0 0 → D 0 ´ D
2 E prend la valeur 1 1 → E 1 ´ E
Traitement
3 Tant que D est différent de E While D ≠E While D ≠ E 4 D prend une valeur aléatoire entière
entre 1 et 6 entAléat(1,6) ´ D Int(Ran# × 6+1) ´ D 5 E prend une valeur aléatoire entière
entre 1 et 6 entAléat(1,6) ´ E Int(Ran# × × 6+1) ´ E
6 Afficher D Disp D D◢
7 Afficher E Disp E E◢
Pause
8 Fin Tant que End WhileEnd
Sortie
9 Afficher "Gagné" Disp “Gagné” “Gagné” ◢ Remarques :
1) Les variables D et E sont initialisées avec des valeurs différentes avant de commencer la boucle sinon l’algorithme ne peut pas tourner (la condition du Tant que... est fausse).
2) Sur T. I., l’instruction Pause est utile lorsque plusieurs valeurs doivent être affichées ;
elle permet de les faire afficher une à une après appui sur la touche Entrée .
Exercice 2
Créer un algorithme qui simule et affiche le lancer de deux dés jusqu’à l’obtention d’un double 5.
L’introduction de l’instruction logique OU est nécessaire ici.
Algorithme 8 Langage T. I. Langage Casio
Variables : D, E Initialisation
1 0 → D 0 → D 0 ´ D
2 0 → E 0 → E 0 ´ E
Traitement
3 Tant que D ou E est différent de 5 While D ≠ 5 or E ≠ 5 While D ≠ 5 or E ≠ 5 4 D prend une valeur aléatoire entière
entre 1 et 6 entAléat(1,6) ´ D Int(Ran# × 6+1) ´ D 5 E prend une valeur aléatoire entière
entre 1 et 6 entAléat(1,6) ´ E Int(Ran# × 6+1) ´ E
6 Afficher D Disp “D ”, D “D ”: D◢
7 Afficher E Disp “E ”, E “E ”: E ◢
Pause
8 Fin Tant que End WhileEnd
Sortie
9 Afficher « Gagné » Disp “Gagné” “Gagné”◢
IV. Boucle « Pour... »
On pourrait se dispenser de présenter cette instruction aux élèves. En effet, une boucle
« Pour... » peut-être remplacée par une boucle « Tant que... » avec compteur. L’inverse n’est pas toujours possible.
Une boucle « Pour... » permet de répéter un certain nombre de fois une suite d’instructions.
Pour variable allant de valeur départ à valeur fin avec un pas donné Instructions
Fin Pour Remarques :
1) Il est inutile de préciser la valeur du pas lorsqu’il est égal à 1.
2) ALGOBOX ne permet pas de réaliser des boucles « Pour... » avec un pas différent
de 1.
Exercice 1
Algorithme 9 Langage T. I. Langage Casio
Variables : i, n, p Entrée
1 Lire n Prompt N “N = ” :? → N
Initialisation
2 p prend la valeur 1 1 ´ P 1 → P
Traitement
3 Pour i allant de 1 à n For(I, 1, N) For 1 → I To N
4 p prend la valeur p × i P × I´ P P × I → P
5 Fin Pour End Next
Sortie
6 Afficher p Disp “P”, P "P " : P ◢
1) Appliquer l’algorithme précédent à n = 4 en réalisant une trace de son exécution dans le tableau ci-dessous. Puis expliquer ce que fait cet algorithme.
Algorithme 9 Variables
Lignes Instructions n i p
1 Lire n 4 × ×
2 p prend la valeur 1 4 × 1
3 Pour i allant de 1 à n 4 × 1
4 p prend la valeur p × i 4 × 1
3 et 4 Étape1 4 1 1
3 et 4 Étape 2 4 2 2
3 et 4 Étape 3 4 3 6
3 et 4 Étape 4 4 4 24
Résultat p = 24 2) Programmer et faire tourner le programme pour n = 50.
3) Modifier cet algorithme pour qu’il affiche la somme des inverses des n premiers entiers naturels non nuls.
Remarque : On pouvait rédiger l’algorithme 9 avec une boucle « Tant que... » et un compteur ainsi :
Entrée Lire n Initialisation
p prend la valeur 1 i prend la valeur 1 Traitement
Tant que i ≤ n
p prend la valeur p × i i prend la valeur i + 1 Fin Tant que
Sortie
Afficher p
Exercice 2 (à réserver aux meilleurs élèves)
On veut approcher l’aire sous la courbe de la fonction carrée sur l’intervalle [0 ; 2] par la somme des aires de n rectangles situés au dessus de la courbe (voir dessins ci-dessous).
La largeur des rectangles est 2
n
et leur hauteur est i², i variant de 2
n
à 2 avec un pas de 2
n
.
n = 4 n = 10
Algorithme 10 Langage T. I. Langage Casio
Variables : i, n, s, pas Entrée
1 Lire n Prompt N “N = ” : ? → N
Initialisation
2 pas prend la valeur 2
n
2 / N ´ P 2 / N →P
3 s prend la valeur 0 0 ´ S 0 → S
Traitement
4 Pour i allant de 0 à 2 de pas en pas For(I, 0, 2, P) For 0 → I to 2 Step P 5 s prend la valeur s + pas × i² S + P × I
2´ S S + P × I
2´ S
6 Fin Pour End Next
Sortie
7 Afficher s Disp “S”, S “S ” : S ◢
Avec le logiciel LARP
V. Autres exercices Exercice 1
1) Créer un algorithme qui simule n lancers d’un dé à 6 faces.
Algorithme 11 Langage T. I. Langage Casio
Variables : i, n, f Entrée
1 Lire n Prompt N “N = ” : ? ´ N
Traitement et sortie
2 Pour i allant de 1 à n For(I, 1, N) For 1 ´ I To N 3 f prend une valeur aléatoire entière
entre 1 et 6
entAléat(1,6) ´ F Int(Ran# × 6+1) ´ F
4 afficher f Disp “F”, F “F” : F ◢
Pause
5 Fin Pour End Next
2) Modifier cet algorithme afin qu’il compte le nombre de fois où f prend la valeur 3 lors de n lancers (nécessité d’introduire un compteur).
Algorithme 11 bis Langage T. I. Langage Casio
Variables : i, n, f, k Entrées
1 Lire n Prompt N “N” : ? ´ N
Initialisation
2 k prend la valeur 0 0 ´ K 0 ´ K
Traitement
3 Pour i allant de 1 à n For(I, 1, N) For1 ´ I To N 4 f prend une valeur aléatoire entière
entre 1 et 6 entAléat(1,6) ´ F Int(Ran# × 6+1) ´ F
5 Pause
6 Si f = 3 alors If F = 3 If F = 3
7 Then
k prend la valeur k + 1 K + 1 ´ K Then K + 1 ´ K
8 Fin Si End IfEnd
9 Fin Pour End Next
Sortie
10 Afficher k Disp “K ”, K “K ”: K ◢
Exercice 2
1) Créer un algorithme qui calcule la somme des inverses des n premiers entiers naturels non nuls.
Algorithme 12 Langage T. I. Langage Casio
Variables : n, s, i Entrées
1 Lire n Prompt N “N = ”:? ´ N
Initialisation
2 s prend la valeur 0 0 → S 0 ´ S
Traitement
3 Pour i allant de 1 à n For(I, 1, N) For1 ´ I To N 4 s prend la valeur s +
1i
S+1 / I → S S + 1/I ´ S
5 Fin Pour End Next
Sortie
6 Afficher s Disp “Somme ”, S “Somme ”: S ◢
2) Compléter cet algorithme pour calculer aussi la somme des inverses des carrés des n premiers entiers naturels non nuls.
3) Faire tourner ce nouvel algorithme lorsque n prend les valeurs 10, 20, 50 et 100, et compléter le tableau ci-contre.
4) Commenter les résultats obtenus.
n = 10 20 50 100 1 + 1 2 + 1 3 + ... + 1
n
1 + 1
2
2+ 1
3
2+ ... + 1
n2
Ces deux sommes n ’ ont pas le même comportement. La première semble prendre des valeurs
de plus en plus grandes quand n augmente. Tandis que la deuxième semble avoir une limite
finie voisine de 1,6.
5) Modifier l’algorithme 12 pour déterminer à partir de quel entier n la somme des inverses des n premiers entiers naturels non nuls est supérieure ou égale à L (à choisir).
Algorithme 13 Langage T. I. Langage Casio
Variables : L, s, i Entrées
1 Lire L Prompt L ? ´ L
Intialisation
2 s prend la valeur 0 0 → S 0 ´ S
3 i prend la valeur 0 0 → I 0 ´ I
Traitement
4 Tant que s < L While S < L While S < L 5 i prend la valeur i + 1 I + 1 → I I + 1 ´ I 6 s prend la valeur s +
1i
S + 1 / I →S S+1 / I ´ S
Pause
7 Fin Tant que End WhileEnd
Sortie
8 Afficher “n = ”, i Disp “N ”, I “N ”: I◢
6) Modifier l’algorithme 13 pour déterminer à partir de quel entier n la somme des inverses des carrés des n premiers entiers naturels non nuls est supérieure à L (à choisir).
Puis compléter le tableau suivant :
L = 1,5 2 2,5 3 4
1 + 1 2 + 1 3 + ... + 1
n
> L pour n >
7) Certains savent sans aucun doute que la deuxième somme, quant à elle, tend vers
π2
6
quand n prend des valeurs de plus en plus grandes.
Modifier l’algorithme pour déterminer à partir de quel entier n, on a :
⎪⎪ ⎪
⎪⎪ ⎪ 1 + 1
2
2+ 1
3
2+ ... + 1
n2
−
π6
2< ε ( ε à choisir)
ε = 0,1 0,01 0,001
⎪⎪ ⎪
⎪⎪ ⎪ 1 + 1
2
2+ 1
3
2+ ... + 1
n2
−
π6
2< ε pour n ≥
Deuxième proposition
Le document qui suit a été distribué en classe de seconde dès le début de l'année. Nous y avons seulement ajouté des éléments de corrigé en bleu et des commentaires en italiques suite à sa mise en œuvre en classe.
Le but était triple :
•
pédagogiquement d'abord, marquer la rupture entre le collège et le lycée en passant deux semaines sur un chapitre souvent considéré à tort, comme n'étant pas réellement des mathématiques ;
•
pédagogiquement toujours, faire émerger la notion de modèle par des exercices mettant en œuvre des situations similaires ;
•
pédagogiquement enfin, être alors en mesure de passer très rapidement à un langage de programmation pour illustrer les idées mises en œuvre : les élèves, jusqu'alors utilisateurs de nouvelles technologies, se transforment peu à peu en créateurs.
Deux définitions préalables
On peut définir un algorithme comme une suite d'instructions, à appliquer dans un ordre précis, pour arriver en un nombre fini d'étapes à un certain résultat.
L'algorithmique est la science des algorithmes (création, amélioration...).
Premiers exercices
Dans les deux exercices qui suivent, on peut utiliser les instructions suivantes : 1. Avancer (d'une longueur donnée).
2. Tourner à gauche ou à droite (d'un angle donné en degré).
On suppose que le crayon se déplace par défaut horizontalement et vers la droite au départ.
Exercice 1
Écrire un programme permettant de construire un carré de côté 50 tout en revenant à la position de départ.
Avancer de 50
Tourner à gauche de 90°
Avancer de 50
Tourner à gauche de 90°
Avancer de 50
Tourner à gauche de 90°
Avancer de 50
Tourner à gauche de 90°
Remarque : On aurait tout aussi bien pu écrire : Tourner à droite de 90° à chaque fois.
Le bloc d'instructions qui se répète est : Avancer de 50
Tourner à gauche de 90°
Commentaire pédagogique : Beaucoup d'élèves disent : pourquoi ne pas multiplier ça
par 4 ? L'idée de boucle est déjà sous-jacente.
Exercice 2
Écrire un programme permettant de construire un triangle équilatéral de côté 100 tout en revenant à la position de départ.
Avancer de 100
Tourner à gauche de 120°
Avancer de 100
Tourner à gauche de 120°
Avancer de 100
Tourner à gauche de 120°
Le bloc d'instructions qui se répète est : Avancer de 100
Tourner à gauche de 120°
Commentaire pédagogique : Le piège est de penser immédiatement à tourner de 60°. Le professeur démontre rapidement par un petit dessin au tableau que c'est erroné et laisse trouver aux élèves la bonne mesure d'angle.
Remarque : Dans l'exercice 1 comme dans le suivant, un même bloc d'instructions a été répété plusieurs fois. Cette répétition des mêmes instructions un certain nombre de fois peut être résumée en introduisant une notion très importante en programmation, et très économique au niveau du nombre de lignes à écrire.
Les instructions répétitives : notion de boucle
Il existe essentiellement deux méthodes pour écrire une boucle, c'est-à-dire un procédé qui permet la répétition un certain nombre de fois d'un même processus (addition, multiplication, etc.).
Pour les mettre en pratique, nous allons résoudre l'exercice 1 à l’aide d’une boucle.
MÉTHODE 1
Analysons le programme en langage naturel suivant (THE MODEL) :
i ← 0 On affecte à i la valeur 0.
Tant que i < 4 (ou i ≤ 3) avancer de 50
tourner à gauche de 90°
i ← i + 1
Tant que la condition annoncée est vraie, on effectue les deux instructions avancer et tourner et on affecte à i sa valeur précédente augmentée de 1.
Fin Tant que
Quel est le résultat obtenu ? Un carré de côté 50.
On peut alors résumer la structure de boucle décrite ici de la manière suivante : Tant que condition vérifiée
Bloc d’instructions Fin Tant que
Remarque : Si la condition n'est pas vérifiée au début, alors le bloc d'instructions ne sera pas exécuté du tout.
Attention ! Pour que l'algorithme soit correct, il est nécessaire que la condition cesse d'être
vérifiée au bout d'un nombre fini de répétitions. Sinon, le programme boucle indéfiniment.
Exercice 3
Que fait le programme suivant ? S ← 80
Tant que S > 20 avancer de S Fin Tant que
Comme la condition du « Tant que... » va rester toujours vraie, ce script va boucler indéfiniment. Si on le programme sur machine, cette dernière va planter.
MÉTHODE 2
Une autre manière courante d'écrire une boucle est :
Pour i variant de 0 à 3 (ou de 1 à 4) La variable i évolue comme indiqué, par défaut de 1 en 1.
Les deux instructions suivantes sont effectuées jusqu'à ce que i atteigne la valeur maximum.
avancer de 50
tourner à gauche de 90°
Fin Pour
Le résultat obtenu est exactement le même : le dessin d'un carré de côté 50.
On peut alors résumer la structure de boucle décrite ici de la manière suivante : Pour i variant de 0 à N faire
Bloc d’instructions Fin Pour
ou Pour i variant de 1 à N faire Bloc d’instructions Fin Pour
Exercice 4
Écrire deux programmes utilisant chaque type de boucle pour résoudre l'exercice 2.
Avec une boucle Tant que... Avec une boucle Pour...
i ← 0
Tant que i < 3 avancer de 100
tourner à gauche de 120°
i ← i + 1 Fin Tant que
Pour i variant de 0 à 2 (ou de 1 à 3) avancer de 100
tourner à gauche de 120°
Fin Pour
Commentaire pédagogique : La boucle Tant que..., universelle quel que soit le langage de
programmation choisi me semble préférable à celle de Pour..., dont la syntaxe est très
variable. Par ailleurs, on y voit mieux l'évolution du compteur i. Aussi, pour débuter,
l'utilisation d'un seul type de boucle est amplement suffisant tout au long de l'année. Le
modèle du tracé d'un polygone ayant été donné, avec spécification des
données nécessaires : ici, la variable i, qui sert à compter les côtés de la figure, et la
structure de boucle car on répète plusieurs fois la même action, les élèves sont prêts à
chercher des exercices se référant au même modèle.
Exercice 5
Construire la figure suivante en utilisant l'instruction Tant que (longueur d'un côté du quadrillage 50). On partira du point A.
Exercice 6
Dessin d'une spirale dont la mesure des segments varie.
L'idée est d'utiliser une boucle car on répète plusieurs fois le même processus : avancer, puis tourner à gauche de 90°.
La différence par rapport à la question précédente est qu'à chaque itération, on avance de 30 unités supplémentaires.
D'où l'idée d'utiliser deux variables : i qui va compter le nombre de segments de la spirale et L la longueur du premier segment, qui va s'accroître de 30 à chaque itération.
Il y a neuf segments. On avance de L et la longueur L est incrémenté de 30.
i ← 0 L ← 30
Tant que i < 9 faire Avancer de L Tourner à gauche de 90°
L ← L + 30 i ← i + 1 Fin Tant que
Commentaire pédagogique : On peut très bien n'utiliser qu'une seule variable, ce qu'un certain nombre d'élèves font très naturellement. Le script est alors un peu plus court.
Dans les questions qui suivent la longueur du côté du quadrillage est de 30.
1) Construire la figure suivante en utilisant une boucle. On partira du point central.
2) En utilisant toujours une boucle, construire la figure suivante (Le repère n'a aucune importance). On partira encore du point central.
L'idée est d'utiliser une boucle car on répète plusieurs fois le même processus : avancer, puis tourner à gauche de 90°.
La différence par rapport à la question précédente est que deux segments consécutifs ont la même longueur. D'où l'idée d'utiliser deux variables : i qui va compter le nombre de segments de la spirale et L la longueur du premier segment, qui va s'accroître de 30 à chaque itération. Le bloc d'instructions Avancer, Tourner sera répété deux fois par rapport à la question 1.
i ← 0 L ← 30
Tant que i < 6 faire Avancer de L
Tourner à gauche de 90°
Avancer de L
Tourner à gauche de 90°
L ← L + 30 i ← i + 1 Fin Tant que
Remarque : Cet aspect visuel est fructueux à mettre en œuvre rapidement à l'aide de l'ordinateur. Et pour faire ça vite, rien de tel que... la tortue ! Oui, oui, comme en LOGO.
Un langage moderne, très performant, et à la syntaxe très simple possède cette fonctionnalité : c'est le langage Python. On peut le télécharger à l'adresse suivante : http://www.python.org. Les versions 2.x et 3.x diffèrent par certains points de syntaxe, aussi convient-il de choisir une version stable (2.7 pour les versions 2.x et actuellement 3.3 pour les 3.x) afin de travailler dessus. Pour l'installation de Python et une première initiation, on peut consulter les sites suivants : http://www.univ-irem.fr/videos/ (section environnement Python 3.2 ; ce qui y est dit est également valable pour la dernière version) ou http://code.google.com/p/swfk-fr/downloads/detail?name=swfk-fr_0.0.9.pdf. Cette première approche des boucles via un cadre visuel peut maintenant être travaillée dans un cadre calculatoire. Là encore, un exemple modèle servira de base au travail ultérieur.
Problème type : Calculer la somme S = 1 + 2 + 3 + ... + 99 + 100
Analyse : Bien évidemment, on ne va pas saisir à la machine cette longue opération ! Il nous faut donc trouver un moyen pour que cette dernière l'exécute, mais en écrivant le moins de lignes possible.
On commence par remarquer que l'opération qui est sans cesse utilisée est l'addition. D'où l'idée d'utiliser une boucle : on répète plusieurs fois le même procédé : ici additionner.
Additionner oui, mais quoi ? 1 d'abord, puis 2, puis 3, … , jusqu'à 100. Autrement dit on
additionne une suite de nombres qui varient, dans le cas présent de 1 en 1.
L'idée essentielle est de calculer S petit à petit, comme on le ferait à la main en ajoutant peu à peu tous les termes contenus dans l'addition.
Comme S va évoluer et les termes qui la composent aussi, on a l'idée d'introduire deux variables : S elle-même et un compteur i, qui devra prendre successivement les valeurs 1, 2, 3, …, 100.
Nous allons résoudre ce problème en créant un algorithme efficace, utilisant (mais ce n'est pas une obligation), le premier type de boucle (Tant que...), qui laisse mieux voir l'évolution des variables.
Mise en œuvre
Instructions Signification S ← 0 On affecte à S la valeur 0 (valeur initiale)
i ← 1 On affecte à i la valeur 1 (valeur initiale) Tant que i ≤ 100 La condition est posée: i varie jusqu'à 100
S ← S + i On réaffecte à S sa valeur précédente plus la valeur actuelle de i i ← i + 1 On réaffecte à i sa valeur augmentée de 1
Fin Tant que
Afficher S Une fois sorti de la boucle, on affiche S
On va à présent faire tourner l'algorithme à la main, c'est-à-dire regarder, étape par étape l'évolution des variables i et S, et enfin le résultat final. Pour cela, on complète le tableau suivant.
On ne donnera pas le résultat du calcul de S à chaque étape, mais seulement l'écriture de S sous la forme d'une somme.
Après l'itération i S
0 1 0 1 2 3 ...
99 100 Quelle est la dernière valeur prise par la variable i ? par la variable S ?
Quel est le résultat affiché par le programme ?
Attention, au vu du script, il est important d'insister sur le fait que S varie en premier et i en second. Le remplissage de ce tableau d'évolution des variables est primordial. Dans le cas présent, tout à la fin du script, i prend la valeur 101 et S la valeur 1 + 2 + ... + 100.
Analyse du problème résolu
Ceci permet de compléter pas à pas le tableau donné aux élèves.
Situation initiale
Comme i est égal à 1 et que la condition de la boucle est bien vérifiée, cette dernière exécute la suite d'instructions précédente :
•
S est remplacé par sa valeur précédente : 0 à laquelle on ajoute la valeur actuelle de i : 1. Ainsi, S = 0 + 1 soit S = 1.
•
i est remplacé par sa valeur actuelle : 1 à laquelle on ajoute 1. Ainsi i = 1 + 1 soit
i = 2.
Situation après une itération
Comme i est égal à 2 et que la condition de la boucle est bien vérifiée, cette dernière exécute la suite d'instructions précédente :
•
S est remplacé par sa valeur précédente : 1 à laquelle on ajoute la valeur actuelle de i, 2. Ainsi, S = 1 + 2
•
i est remplacé par la somme de sa valeur actuelle 2, et de 1. Ainsi i = 2 + 1 soit i = 3.
Situation après deux itérations
Et ainsi de suite... Tant que la condition de la boucle est valide, le bloc d'instructions est exécuté.
Situation après 99 itérations
Comme i est égal à 100 et que la condition de la boucle est bien vérifiée, cette dernière exécute la suite d'instructions précédente :
•
S est remplacé par sa valeur précédente : 1 + 2 + ... + 99 à laquelle on ajoute la valeur actuelle de i : 100. Ainsi, S = 1 + 2 + … + 100.
•
i est remplacé par sa valeur actuelle : 100 à laquelle on ajoute 1. Ainsi i = 101 Situation après 100 itérations
Cette fois-ci, i est égal à 101, donc la condition de la boucle n'est plus valide. La boucle s'arrête. Le programme effectue alors la dernière instruction (qui n'était pas dans la boucle) : afficher la valeur de S, c'est-à-dire le résultat de 1 + 2 + … + 100.
On remarque, puisque S évolue en premier dans le bloc d'instructions, qu'il y aura toujours 1 d'écart entre i et la dernière valeur apparaissant dans la somme constituant S. Ceci permet de compléter le tableau après 99 itérations.
Après l'itération i S
0 1 0
1 2 1
2 3 1 + 2
3 4 1 + 2 + 3
...
99 100 1 + 2 + 3 + ... + 99
100 101 1 + 2 + 3 + ... + 99 + 100
Exercice 7
Écrire un programme utilisant une boucle Tant que... calculant et affichant le résultat de : 1) S = 3 + 6 + 9 + ... + 201.
2) P = 2 × 4 × 6 × 8 × ... × 40.
3) S = 1 + 1 2 + 1 3 + ... + 10 1 . Corrigé de la question 1)
Il s'agit de sommer tous les multiples de 3 compris entre 3 et 201.
L'idée est la même que dans le problème résolu : utiliser une boucle (car on répète l'opération addition) et utiliser deux variables :
-
i, variable qui va énumérer touts les termes à additionner,
-
S (la somme recherchée qui va évoluer à chaque itération de i).
Un algorithme possible est donné ci-contre.
S ← 0 i ← 3
Tant que i ≤ 201
S ← S + i
i ← i + 3
Fin Tant que
Afficher S
Corrigé de la question 2)
Cette fois-ci, on multiplie tous les entiers pairs de 2 à 40.
On initialise le produit P à 1 (préciser pourquoi pas à 0).
On initialise i à 2.
On remplace P par sa valeur précédente multipliée par la valeur actuelle de i.
i est incrémenté de 2 à chaque itération.
P ← 1 i ← 2
Tant que i ≤ 40 P ← P × i i ← i + 2 Fin Tant que Afficher P Corrigé de la question 3)
Remarquons que l'on peut réécrire la somme cherchée sous la forme S = 1
1 + 1 2 + 1 3 + ... + 10 1 .
L'idée est la même que dans le problème résolu : utiliser une boucle (car on répète l'opération addition). Cette fois encore, on aura besoin de deux variables :
-
i qui prend successivement les valeurs des dénominateurs successifs 1, 2, 3, … jusqu'à 10,
-
S qui évolue à chaque itération de i.
S ← 0 i ← 1
Tant que i ≤ 10 S ← S + 1 i i ← i + 1 Fin Tant que Afficher S Exercice 8
En utilisant une boucle Tant que..., écrire un programme permettant de calculer puis d'afficher le résultat de la somme suivante : T = 1 + 1 2 + 1
2 × 3 + 1
2 × 3 × 4 + ... + 1
2 × 3 × 4 × ... × 10 . Indication : Bien analyser combien de variables sont nécessaires.
Corrigé de l’exercice 8
Remarquons que l'on peut réécrire la somme cherchée sous la forme T = 1
1 + 1
1 × 2 + 1
1 × 2 × 3 + 1
1 × 2 × 3 × 4 + ... + 1
1 × 2 × 3 × 4 × ... × 10 ..
Cette fois-ci, on aura besoin de trois variables :
-
i qui prendra successivement les valeurs 1, 2, 3, … jusqu'à 10,
-
P qui prendra successivement les valeurs 1, 2, 2 × 3, 2 × 3 × 4… jusqu'à 2 × 3 × 4 × … × 10,
-
T qui évoluera en même temps que les deux autres variables.
L'algorithme ci-contre répond alors au problème posé.
P ← 1 i ← 1 T ← 0
Tant que i ≤ 10 faire P ← P × i
T ← T + P 1 i ← i + 1 Fin Tant que Afficher T Commentaire pédagogique
C'est un exercice difficile. Peu d'élèves définissent correctement le cahier des charges, c'est-à- dire le nombre de variables nécessaires et les structures informatiques (boucles, instructions conditionnelles) nécessaires à sa résolution. Voilà malgré tout une bonne occasion de revenir sur le raisonnement exposé dans le problème type et remis en œuvre dans l'exercice
précédent.
Commentaires généraux :
Il apparaît au travers de ces quelques années d'expérience du nouveau programme de seconde,
que le langage naturel servant à décrire un algorithme, doit rapidement laisser la place à un
outil informatique afin que ce cours d'aspect théorique, prenne du sens. Le visuel nous semble
devoir y tenir une place centrale. Nos élèves sont en effet friands de toutes ces gourmandises
High-Tech : Android, tablettes tactiles, où la vue (et maintenant le toucher) du résultat
immédiat est une banalité. Les retours que nous avons pu avoir d'élèves, parfois en grande
difficulté corroborent ce constat. Il ne s'agit en aucun cas de bannir le calcul dans la pratique de l'algorithmique (quitte à prévoir plus d'exercices pour les apprenants les plus à l'aise), bien au contraire, mais d'y arriver en douceur, de revenir sans cesse sur les modèles acquis, afin de pouvoir avancer. C'est en pratiquant le ping-pong entre modèle et exercices que l'esprit se forge et acquière peu à peu sa créativité.
Par ailleurs, même si dans cette proposition, nous insistons sur le fait d'aborder les problèmes un par un (en langage naturel et en programmation sur calculatrice ou ordinateur) :
•
structures répétitives (boucles),
•