Professional Documents
Culture Documents
Lyce
Juin 2009
eduscol.education.fr/ D0015
Algorithmique
Page 2 / 33
Prsentation gnrale
1 / Quelques gnralits sur lalgorithmique
Le programme de seconde a t conu pour tre enseign et mis en uvre en sappuyant assez largement sur les progrs de
la science et de la technique informatiques, quil sagisse de logiciels ou de la pense algorithmique. Depuis une dizaine dannes le dveloppement de lusage de logiciels (calculatrice ou ordinateur) a permis de dvelopper chez les lves la capacit
dexprimenter, suscitant le sens de lobservation tout en faisant naitre de nouvelles questions relatives la nature de la dmonstration.
Cest dans ce contexte que lintroduction dune familiarisation avec lalgorithmique prend sa place dans une pratique des Mathmatiques dont un axe principal est la formation des lves la dmarche scientifique sous toutes ses formes. Prcisons
ds lors quelques lments qui ont conduit lintroduction de cette section.
a.
Comme la soulign la Commission de rflexion sur lenseignement des mathmatiques les mathmatiques sont partout prsentes
dans la vie courante : traitement des donnes, statistique, codage, compression de donnes, simulation numrique,... Mais cette prsence qui se renforce, est souvent occulte aux yeux du public qui ne voit que le produit fini . Cette observation sapplique parfaitement aux algorithmes
dont on voit plus souvent les rsultats que les principes fondamentaux. La prsence dalgorithmes dans lunivers technologique qui nous entoure nest plus dmontrer. Depuis lautomate le plus simple jusquaux systmes les plus complexes, les
algorithmes ordonnent beaucoup de nos gestes quotidiens. Leur prsence cependant ne se traduit pas par un contact direct
avec lutilisateur qui assimile volontiers la machine son mode de fonctionnement.
Cest pourquoi il est apparu ncessaire de spcifier dans le projet de programme pour la classe de Seconde :
La dmarche algorithmique est, depuis les origines, une composante essentielle de lactivit mathmatique. Au collge, les lves ont rencontr des algorithmes (algorithmes opratoires, algorithme des diffrences, algorithme dEuclide, algorithmes de construction en gomtrie). Ce qui est propos
dans le programme est une formalisation en langage naturel.
Dans le cours de Mathmatiques, les algorithmes apparaissent trs tt dans la scolarit. Oprations poses, rduction au
mme dnominateur, rsolution dune quation du second degr, factorisation dune expression polynomiale, identification
dune situation de proportionnalit, tous ces algorithmes supplantent parfois chez les lves les objets quils manipulent.
En travaillant dans un univers plus restreint, dans lequel les rgles en vigueur et la symbolique utilises sont en nombre
limit , on essaiera de prciser et de formaliser partiellement la notion dalgorithme.
b.
Le dveloppement du calcul automatis a permis (au niveau de la recherche) de dvelopper de nouveaux objets (fractales...),
de nouvelles mthodes de dmonstrations et a profondment modifi la pratique des chercheurs.
Dans la classe de seconde, la dcouverte de lalgorithmique permettra dtudier certaines notions sous un angle diffrent :
comment organiser la recherche du maximum dune fonction ? Comment reprsenter une droite sur un cran naffichant
que des pixels ? Comment raliser, en statistiques, le tri des donnes requis pour accder la mdiane ?
Ce document ressource propose ainsi dillustrer certaines questions en proposant de dvelopper des algorithmes de base
tout au long de lanne.
c.
La sensibilisation de llve la question de la dmarche algorithmique pourra se faire en vitant toute technicit ou
expos systmatique. On pourra sur ce thme consulter des publications ralises dans le cadre des IREM.
Les comptences suivantes pourront tre identifies et travailles :
comprendre et analyser un algorithme prexistant ;
modifier un algorithme pour obtenir un rsultat particulier ;
analyser la situation : identifier les donnes dentre, de sortie, le traitement...;
mettre au point une solution algorithmique : comment crire un algorithme en langage courant en respectant un
code, identifier les boucles, les tests, des oprations dcriture, daffichage... ;
valider la solution algorithmique par des traces dexcution et des jeux dessais simples ;
adapter lalgorithme aux contraintes du langage de programmation : identifier si ncessaire la nature des variables... ;
valider un programme simple.
Algorithmique
Page 3 / 33
a.
Lenseignement de lalgorithmique ne relve pas, ce niveau, de cours spcifiques ; au contraire, lintroduction de chaque
nouvel lment (variable, boucle, itration, etc.) devrait apparatre lors de la rsolution de problmes pour lesquels les dmarches habituelles sont malcommodes ou peu performantes : par exemple dans le cas de rptition dune tche, ou dans le
cas dun traitement trop long pour tre envisag la main . Ces situations peuvent tre rencontres lors de lextension
des cas plus gnraux de situations dj rencontres : recherche du pgcd de nombres trs grands, tri dun trs grand nombre
de valeurs numriques, simulations sur des chantillons de grande taille...
Une piste envisageable pourrait tre la rcriture dun algorithme simple, dont la complexification dans une mesure raisonnable fait cho de nouvelles notions rencontres pendant lanne ou de nouveaux questionnements sur la nature de
lobjet tudi. Par exemple : crire un algorithme permettant de crer un tableau de valeurs dune fonction, puis se poser les
questions : comment modifier cet algorithme pour trouver les extremums de cette fonction ? puis, ladapter pour trouver les
variations de cette fonction ? enfin, dans quelle mesure cet algorithme est-il fiable ?...
Il serait souhaitable dintgrer lcriture dalgorithmes dans tous les domaines du programme :
Ne pouvant tre exhaustif, ce document napportera que quelques clairages sur ces thmes.
La varit des supports et les moyens de les mettre en uvre dans la classe sont des lments indispensables la mise en
place de cet enseignement.
Il est important de noter que lalgorithmique modifiera profondment le rapport entre llve et les outils ou instruments
auxquels il sera confront dans son environnement scolaire et particulirement ceux habituellement identifis comme issus
du monde des TIC dans lenseignement (calculatrices, ordinateurs, logiciels mais aussi divers objets comme les appareils
photos numriques, etc.).
Enfin, il faut avant tout viter de confronter les lves des difficults trop importantes ; en effet, la classe de seconde est
une classe de dtermination et il ne sagit pas dy former des programmeurs mais de faire en sorte que les mathmatiques et
lalgorithmique soient au service dactivits de rsolution de problmes pour les sciences.
b.
Pratiques de llve
La pratique de lalgorithmique ne se rsume pas lcriture de programmes ; il serait mme judicieux de ne pas commencer
par l. Il convient donc de proposer aux lves des situations, activits et organisations pdagogiques varies.
Les travaux proposs pourront tre conus dans une perspective daction de llve et devront tre prsents le plus souvent
possible dans un cadre plus large que celui de la simple ralisation isole dun programme. Ils pourront par exemple sinscrire dans la dure et dans une organisation individuelle et/ou collective.
Voici quelques exemples de supports dactivits : relectures dalgorithmes, complexifications progressives, transpositions
dalgorithmes utilisant diffrents types de langages, progressivit dans le choix et lutilisation des outils de programmation...
Par ailleurs, il conviendrait de ne pas ngliger la richesse de lapprentissage partir dalgorithmes errons. Le travail de correction, de recherche de dysfonctionnements de certains algorithmes, ltude des cas particuliers sont des pistes quil
conviendrait dexplorer.
Enfin, lcriture dalgorithmes pourrait par ailleurs tre loccasion de dvelopper le travail en quipe dans le cadre de la ralisation de petits projets.
1
Algorithmique
Page 4 / 33
3 / Supports de programmation
Comme aucun logiciel ou langage nest impos par le programme, on montrera ci-aprs diffrents types denvironnements
de programmation. Les calculatrices graphiques programmables peuvent tre exploites grce leur commodit dusage en
classe entire. Cependant, leurs limites dues leur petite taille et leur capacit mmoire incitent proposer aux lves des activits sappuyant sur des logiciels utilisables sur ordinateur. Une large part des exemples proposs ci-aprs est parfaitement
traitable avec des calculatrices comme support.
Une piste intressante pourrait tre dorganiser lenseignement autour dune progressivit dans les outils utiliss au cours de
lanne (sans pour autant les multiplier) en traitant des exemples sur plusieurs environnements.
Il peut tre galement intressant de mettre en avant le fait que la complexification de lalgorithme dtermine de manire plus
ou moins ouverte le choix de linstrument comme par exemple pour les problmes lis :
au temps de calcul ;
la nature, la taille ou la prcision des nombres utiliss ;
la lisibilit de lalgorithme ;
la nature de la sortie.
Nombreux sont les logiciels qui peuvent tre utiliss2 : des logiciels ddis (comme SCRATCH, EXECALGO ou LINOTTE...), aux logiciels de programmation (PYTHON...) ou lis au calcul scientifique (SCILAB...) en passant par les logiciels de calcul formel (XCAS, MAXIMA, WIRIS...) qui proposent un module de programmation. Ces derniers permettront
de travailler sur des types de donnes plus spcifiques (trs grands nombres, expressions algbriques...). On pourra loccasion utiliser le tableur qui, sil traduit parfaitement les instructions conditionnelles, tend cependant cacher les itrations
sous les oprations de recopie de formules.
On se reportera la prsentation dtaille de quelques logiciels qui figure la fin de ce document.
Les exemples proposs dans ce document sont donc dclins dans diffrents environnements.
Tous les logiciels qui seront prsents par la suite sont libres au moins au sens o leur tlchargement lest.
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 5 / 33
La prparation du traitement
Il sagit de reprer les donnes ncessaires voire indispensables la rsolution. Ces donnes peuvent tre numriques, ou
sous forme de textes (on dit souvent chanes de caractres), ou de type logique ( deux valeurs possibles, vrai ou faux), ou
enfin de type graphique (des points).
Souvent les donnes pertinentes doivent tre agences sous une forme plus vaste, comme par exemple des tableaux ou listes
o on peut par exemple ranger commodment les valeurs prises par une fonction sur un grand nombre de points.
Dans cette phase peut aussi figurer ce quon appelle lentre des donnes, qui peut se manifester par la saisie de caractres ou
de nombres sur le clavier, ou la lecture de la position du pointeur de la souris, ou encore par la lecture dun fichier contenant
ces nombres ou caractres.
Il sagit aussi de reprer les rsultats intermdiaires quil est bon de mmoriser pour la suite car indispensables au traitement.
Il est parfois utile dutiliser des variables auxiliaires pour ne pas perturber les donnes initiales.
Le traitement
Il sagit de dterminer toutes les tapes des traitements faire et donc des instructions donner pour une excution automatique. Si ces instructions sexcutent en squence, on parle dalgorithme squentiel. Si les oprations sexcutent sur plusieurs processeurs en parallle, on parle dalgorithme parallle. Si les tches sexcutent sur un rseau de processeurs on parle
dalgorithme rparti ou distribu. Nous ne traiterons ici que des algorithmes squentiels7.
Le mot arabe utilis pour nommer la compltion ou restauration se lit Al-Jabr, ce qui donna naissance notre mot algbre.
Notamment, lquation du segond degr.
Encyclopaedia Universalis
Cest--dire, ne comportant pas de fonctions ou sous-programmes.
Avec une petite exception concernant Scratch (voir page 16, la chasse au trsor).
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 6 / 33
b.
Les instructions
Les instructions sont les briques de base des algorithmes, dont lassemblage dans un ordre prcis conduit au rsultat
attendu. Nous les prsenterons dans un pseudo-langage en franais , accompagnes de traductions concrtes laide de
quelques outils logiciels.8
Pour plus de facilit, nous suivrons pas pas le dveloppement de la formalisation concernant lalgorithme suivant :
Un joueur lance deux ds et fait la somme des points obtenus. Sil obtient 8, il gagne 10, sinon il perd 1.
Variante : le joueur rejoue 10 fois (et cumule ses gains et pertes).
Autre variante : le joueur rejoue jusqu avoir un gain cumul de 5 .
Le bloc vert matrialise une instruction fournissant une valeur numrique, tandis que le bloc orange soccupe du rangement de cette valeur dans une variable nomme a (qui aura t pralablement cre).
Les identificateurs sont des suites de lettres et chiffres (sans espaces) qui doivent tre choisies judicieusement pour que lalgorithme soit immdiatement lisible et interprtable ; dans lexemple nous avons choisi a mais il et mieux valu nommer
cette variable d ou tirage1 puisquelle est destine contenir le rsultat du tirage.
En bref, l affectation permet dattribuer une valeur une variable dsigne par son identificateur.10
On peut comparer laffectation de valeur une va riable comme le rangement dun objet dans un petit tiroir (ne pouvant
contenir quun objet la fois) ; sur la faade du tiroir figure un nom, cest lidentificateur qui permet de parler du tiroir luimme. Cette notion est trs proche de celle de variable au sens mathmatique.
Dans notre pseudo-langage en franais, nous traduirons laffectation par linstruction : identificateur prend la valeur valeur.
Laffectation remplace la valeur prcdente de la variable par la nouvelle. Ainsi linstruction A prend la valeur 2 affecte
la valeur 2 la variable dont A est lidentificateur et ceci quelle que soit la valeur contenue au pralable dans la variable A (laquelle sera perdue).
On rencontrera ici ou l des variables indices, nommes listes ou tableaux ; si mathmatiquement ces variables ressemblent
des vecteurs, on peut aussi bien les assimiler des commodes pourvues de multiples tiroirs !
va affecter dans la variable nomme A un nombre ou une expression tape au clavier. De mme, linstruction
entre :=
ramene("fichier.txt");
va ramener (affecter) dans la variable nomme entre la premire ligne du fichier dsign (ou la prochaine ligne si des
lectures ont dj eu lieu).
Nous nutiliserons pas les organigrammes qui eurent leurs heures de gloire dans lenseignement de linformatique mais se sotn
avrs inadquats face aux progrs de cette science (en particulier,dans le cadre des programmations fonctionnelle ou oriente objets).
9 Pour interprter sans peine les copies dcran provenant de SCRATCH il est prfrable de les voir en couleurs. Des diffrences de prsentation peuvent survenir suivant que le logiciel est rgl en franais ou franais-canadien .
10 Il ne faut surtout pas confondre la variable et son identificateur ; en effet, la variable, outre son identificateur qui est juste un nom,
possde une valeur qui est son contenu et une adresse qui est lendroit dans la mmoire o on va ranger la valeur.
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 7 / 33
ou
La structure alternative
Selon quune certaine condition est vrifie ou non, on fera un certain traitement ou un
autre (par traitement on entend, comme expliqu ci-dessus, une ou plusieurs instructions en squence). Pour revenir notre joueur, lalternative la plus simple est dafficher
un message favorable si la somme des deux ds (soit a+b) vaut 8 et dfavorable sinon :
On a choisi de traduire la structure alternative par linstruction :
Si condition alors
Traitement 1
Sinon
Traitement 2
On peut dailleurs imaginer que, selon le cas, il se peut que, si la condition nest pas vrifie, il ny ait pas de Traitement 2 effectuer alors la srie dinstruction du Traitement 2 est vide. On crira alors linstruction :
Si condition alors
Traitement 1
Pour ce qui concerne la condition , cest une expression logique prenant lune des deux valeurs VRAI ou FAUX, qui peut
tre simple ou complexe.
Par exemple une condition simple peut correspondre un test dgalit A est gal B not A=B, ou un test dingalit
not A est strictement infrieur B not A<B, A est strictement suprieur B not A>B, A est suprieur ou gal
B not A>=B, A est infrieur ou gal B not A<=B.
Une condition complexe est une combinaison logique de conditions simples. Par exemple le test A est gal B et B
est gal C , se note (A=B) ET (B=C) et le test A est strictement infrieur B ou B est strictement suprieur C se
note (A<B) OU (B>C).
On peut aussi imaginer des structures alternatives imbriques telles que
Si condition alors
Si condition alors
Traitement 1
Sinon
Traitement 2
Sinon
Traitement 3
Pour la lisibilit on utilise l indentation qui consiste crire les instructions sur des lignes diffrentes en dcalant les
mots. Le trait vertical utilis ici permet de bien dlimiter les champs. Certains diteurs de langages de programmation
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 8 / 33
Afficher("Carr")
Sinon
Afficher("Non carr")
Dans SCRATCH, cela prend lallure ci-contre
tandis que dans XCAS cela devient :
input(" Nombre ?",a) ;
b:=sqrt(a) ; c:=round(b) ;
if (b==c) { print(Carr !) }
else { print(Mmmmh...) };
Une autre structure rptitive est celle qui consiste rpter un certain traitement tant quune certaine condition reste valide
(on ne souhaite videmment pas que la rptition se fasse une infinit de fois). Nous formulerons cette structure ainsi :
Tant que condition faire
Traitement 1
Le nombre de rptitions dpendra de la condition. Si la condition nest pas vrifie au dbut alors le Traitement 1 ne sera pas
excut du tout. Si la condition est vrifie au dbut et si la condition nest pas susceptible dtre modifie lors du Traitement
1, alors le Traitement 1 sera excut indfiniment et lutilisateur sera oblig darrter (brutalement) le programme. On dit que
le programme boucle indfiniment , ce qui est une erreur majeure de programmation. Pour que lalgorithme soit correct,
il est ncessaire que la condition cesse dtre vrifie au bout
dun nombre fini de rptitions. Un raisonnement
mathmatique permet parfois de sen assurer, mais il est parfois difficile davoir lassurance du fait que le programme ne
bouclera jamais indfiniment.
Une dernire variante de la structure rptitive consiste rpter un traitement jusqu ce quune certaine condition soit
vrifie. Cest ce qui se produit lorsque notre joueur recommence jouer en esprant atteindre un gain de 5 (ci-contre,
avec SCRATCH).11
On la traduit par linstruction :
Rpte
Traitement 1
jusqu condition
On remarquera que dans ce type dinstruction, le test tant fait la fin de la boucle, cela implique que le traitement est excut au moins une fois mme si la condition est vrifie au dbut.
11 Situation fort intressante tant au plan mathmatique qualgorithmique : lalgorithme se termine-t-il ? Rien ne lassure !
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 9 / 33
1 / Quelques jeux
a.
Le Jeu du cartable
Pour nombre dlves de collge, prparer son cartable du lendemain de manire optimale est une activit parfois laborieuse ! Elle peut toutefois tre le support dun travail de dcouverte de la notion dalgorithme12.
Confie des lves disposs en groupes, lobjectif de cette activit est de dcrire une mthode permettant de prparer au
mieux (pas daffaires manquantes, mais pas daffaires superflues non plus) son cartable pour le lendemain. Diffrentes stratgies peuvent apparatre (en particulier celle de la table rase qui consiste tout vider...). Chaque groupe a donc en charge la
rdaction dune mthode permettant de faire son sac . Par exemple :
prparation du traitement : liste des disciplines du lendemain et liste du matriel dj prsent dans le cartable ; liste du matriel par discipline ;
traitement : comparaison des documents se trouvant dans le cartable et ceux y mettre ;
dition des rsultats : liste des fournitures places dans le cartable.
Une fois ralise, cette fiche est fournie un autre groupe qui peut ainsi la tester.
b.
Ce jeu (parfois utilis dans les cours de langues vivantes) peut tre dclin sous de nombreuses variantes.
Description du jeu : les lves sont placs en rond. Lun aprs lautre, les lves grnent les entiers naturels . La difficult
rside dans le fait que si lentier est par exemple un multiple de 3, llve annonce fizz , si cest un multiple de 5, il annonce
buzz , etc.
On peut proposer aux lves dcrire une rgle du jeu faire tester leurs camarades : comment programmer une machine
pour quelle rponde correctement si on lincluait dans le jeu ?
La question de larrt du jeu se pose : fixer un entier maximal ? Arrter quand il ne reste plus quun seul participant ?
On peut bien sr compliquer les rgles du jeu en y introduisant des rgles mathmatiques plus sophistiques. En voici
quelques exemples, sachant que lon choisit une onomatope pour chaque entier ne pas prononcer (la liste propose nest
12 Ce problme nest pas sans voquer le problme du sac dos : parmi les objets que je dois emporter dans mon sac dos, lesquels
dois-je choisir pour maximiser la somme emporte tout en ne dpassant pas les 15 kg autoriss ? Des versions simplifies de ce problmes pourraient tre prsentes aux lves.
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 10 / 33
pas exhaustive et ne sous-entend pas quelle doit tre propose dans cet ordre aux lves) :
si le nombre est le nime multiple de 3, llve doit rpter n fois lonomatope correspondante ;
si le nombre est multiple de deux entiers choisis, llve doit prononcer les deux onomatopes correspondantes ;
si le nombre est multiple de plusieurs entiers choisis, il est prononc tel quel ;
si le nombre contient un entier choisi dans son criture dcimale.
On voit que ce jeu peut par exemple permettre de dboucher sur la notion de ppcm ou de dcomposition en produit de facteurs premiers .
Les rgles pourront tre proposes par les lves eux mmes, dsireux den augmenter la difficult.
c.
Tous en rang !
2 / Quelques automates
Comme prcis dans le texte de prsentation, nous sommes entours dautomates dont le fonctionnement dpend dalgorithmes.
Tenter de reproduire le fonctionnement de ces automates (dont certains ont t tudis en cours de technologie au collge)
peut tre intressant. En voici trois exemples qui pourront tre illustrs dans un second temps laide du logiciel Scratch qui
fournit une interface graphique adapte ce genre de situation.
On peut bien entendu dcliner ces activits en fonction des ractions des lves et de leur propositions. Elles ont lintrt de
gnrer des algorithmes susceptibles dtre modifis en fonction des paramtres dutilisation quils dsireront perfectionner.
Chacune ne devrait pas tre livre cl en main la classe (ou aux groupes dans le cas o lon envisage de confronter les productions) mais tre pense par les lves qui en dlimiteront le domaine dapplication du plus simple au plus complexe.
a.
Quelques exemples de traitements possibles : vrification de la date de fin de validit de la carte, du solde du compte, du retrait maximal autoris (en jours glisss ou sur une priode fixe), vrification du code secret (carte avale au bout de trois
essais errons), choix multiples ou ouverts de la somme retirer, comment fournir cette somme en fonction du nombre de
billets encore disponibles dans le distributeur, impression ou non de la facturette...
b.
Cette situation vcue au quotidien par les lves permet l encore dexplorer et de multiplier les contraintes selon les questions poses en classe. Quelques contraintes envisageables au moment o llve passe prendre son repas : la-t-il rserv
dans la matine ? Lui reste-t-il des crdits repas ? Ltablissement propose-t-il des crdits repas ? Ltablissement a-t-il besoin
de conserver les statistiques de frquentation de llve dans une base de donnes ?
c.
Le digicode
Il sagit de modliser le systme de saisie dun code 4 chiffres et 1 lettre donnant accs un immeuble. Lalgorithme tant
un peu compliqu, il conviendra de commencer par un systme simplifi deux chiffres par exemple.
3 / Lecture dalgorithmes
Voici trois exemples dalgorithmes accompagns dun questionnement possible des lves. Ce questionnement complet peut
ne pas tre propos aux lves mais droul au fur et mesure de lanimation de la squence en fonction des ractions de la
classe.
Algorithmique
Page 11 / 33
a.
Un peu dpargne
b.
Dincertaines conomies
c.
DNB 2007
On donne le programme de calcul suivant :
choisir un nombre
lui ajouter 4
ajouter 4 ce produit
crire le rsultat
Quel type de nombre retourne ce programme ?
Plusieurs activits sont possibles : tester le programme avec un tableur, crire lalgorithme avec des noms de variables (cela le
clarifie trs nettement), et le faire fonctionner effectivement.
d.
Le guidage au clavier
Algorithmique
Page 12 / 33
4. Modifier le programme pour que dernier accepte lappui sur la flche vers le bas avec le dplacement correspondant.
5. Que reprsente la variable compteur la sortie ? Quelle est sa valeur minimale, maximale ?
Excellent
Aucune erreur
Bon
De petits dtails sont
ngligs.
Le but est difficile dterminer
Moyen
Des dtails manquent,
mais le programme tente
quand mme daccomplir
ses fonctions essentielles.
Interface utilisateur :
Aucune faute
(entres, sorties)
Elle est claire et commode.
Insuffisant
Ne rpond pas au
problme pos.
Objectif impossible
dterminer
Algorithmes et gomtrie
1 / Quelques problmes
Dans toute cette partie le plan est suppos muni dun repre orthonormal. A,B,C tant trois points du plan dfinis par leurs
coordonnes (entires), que peut-on dire du segment AB ? du triangle ABC ? comment afficher ces objets de manire ce
quils soient visibles ? etc.
Un programme tentant de rpondre ces questions dans toutes les situations peut sembler relativement complexe, mais si
on dcompose la tche en tches plus lmentaires, laffaire est plus aise.
Un scnario pdagogique possible est donc de commencer par faire raliser un programme court et simple, puis lenrichir
de semaine en semaine par tapes ; ce scnario, dont nous dtaillerons quelques aspects, peut tre adapt en fonction des
calculatrices et des logiciels utiliss par les lves.
a.
A,B tant deux points dont on connait les coordonnes, calculer les coordonnes du milieu de AB et reprsenter ces points.
Variables
x A , yA , x B , y B , x I , yI
Entres
Saisir xA , yA , xB , yB
Traitement
xI prend la valeur x Ax B / 2
yI prend la valeur y A yB / 2
Direction gnrale de l'enseignement scolaire
Traduction CASIO
"A(X,Y)"
"X="?X
"Y="?Y
"B(X,Y)"
"X="?Z
"Y="?T
Algorithmique
Page 13 / 33
Sorties
Afficher xI , yI
Afficher les points A,B,I dans la fentre graphique.
(Z+X)/2C
(T+Y)/2D
Plot On X,Y
Plot On Z,T
Plot On C,D
End
Traitement XCAS
Lenvironnement XCAS rend particulirement simple lapproche du graphisme, dans la mesure o les points y sont considrs comme des couples de coordonnes. titre dexemple, voici une squence dinstructions qui trace un segment et son
milieu dans la fentre graphique :
A:=point([1,2]);B:=point([3,4]);segment(A,B);C:=point((A+B)/2);
b.
Le plan est muni dun repre. A, B et C tant trois points dont on connait les coordonnes, faire afficher les coordonnes
du point D tel que ABCD soit un paralllogramme.
On calcule les coordonnes du point I milieu de la diagonale [AC].
Puis celles du point D symtrique du point B par rapport au point I.
Variables
x A , yA , x B , y B , x C , y C , x D , yD , x I , yI
Entres
Saisir xA , yA , xB , yB , xC , yC ,
Traitement
xI prend la valeur x Ax C / 2
yI prend la valeur y A yC / 2
xD prend la valeur 2 x I xB
yD prend la valeur 2 yI y B
Sorties
Afficher xD , yD
Traduction LINOTTE
Livre : Quatrime point paralllogramme
Paragraphe : saisie et calcul des coordonnes
Rles :
xA est un nombre vide
yA est un nombre vide
xB est un nombre vide
yB est un nombre vide
xC est un nombre vide
yC est un nombre vide
xD est un nombre vide
yD est un nombre vide
xI est un nombre vide
yI est un nombre vide
reponse est un texte valant "Le point D a pour coordonnes: ("
Actions :
tu affiches "xA="
tu demandes xA
tu affiches "yA="
tu demandes yA
tu affiches "xB="
tu demandes xB
tu affiches "yB="
tu demandes yB
tu affiches "xC="
tu demandes xC
tu affiches "yC="
tu demandes yC
tu ajoutes (xA+xC)/2 dans xI
tu ajoutes (yA+yC)/2 dans yI
tu ajoutes 2*xIxB dans xD
tu ajoutes 2*yIyB dans yD
tu ajoutes xD dans reponse
tu ajoutes ";" dans reponse
tu ajoutes yD dans reponse
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 14 / 33
Remarque :
Une autre approche, base sur les vecteurs, amnerait considrer D comme C
AB , soit x D=xCx Bx A . On pourra
mme remarquer que XCAS fournit une rponse trs simple sous la forme D:=C+B-A;. Laffichage des points se ralise
alors automatiquement dans la fentre graphique.
c.
d.
Il sagit dune extension du programme prcdent. Le nombre de sommets, mme limit, oblige le recours aux listes ; les
abscisses des points sont stockes dans la liste 1 et les ordonnes dans la liste 2, ainsi le point de rang N aura pour coordonnes L1(N) et L2(N). Lalgorithme utilise des fonctions max et min oprant sur des listes (ou tableaux), renvoyant le plus
grand (resp. le plus petit lment de la liste).13
Traduction TI
: ClrDraw
: 11dim(L1)
: 11dim(L2)
:
:
:
:
:
:
:
:
:
0N
While (Nint(N)0 or N<2 or N>10)
Disp "N ENTIER NATUREL"
Disp "ENTRE 2 ET 10"
Input "N=",N
End
For(I,1,N)
Disp "POINT",I
Input "X=",X
Algorithmique
Page 15 / 33
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
e.
Input "Y=",Y
XL1(I)
YL2(I)
End
L1(1)L1(N+1)
L2(1)L2(N+1)
max(L1)min(L1)H
max(L2)min(L2)V
min(L1)H/8Xmin
max(L1)+H/8Xmax
min(L2)V/8Ymin
max(L2)+V/8Ymax
H/8Xscl
V/8Yscl
For(I,1,N)
Line(L1(I),L2(I),L1(I+1),L2(I+1))
End
f.
A et B tant deux points du plan dfinis par leurs coordonnes, il sagit dautomatiser le
calcul de la distance d = AB . On utilise pour ce faire la formule
d = x B x A 2 y B y A2 . La racine carre tant une opration non exacte il est
prfrable de calculer dabord D=AB 2 .
Variables
x A , yA
// Coordonnes de A
x B , yB
// Coordonnes de B
D
// Carr de la distance de A B
Entres
Saisir xA , yA , xB , yB
Traitement
D prend la valeur (xB - xA)2+(yB - yA)2
Direction gnrale de l'enseignement scolaire
Traduction CASIO :
"A(X,Y)"
"X="?X
"Y="?Y
"B(X,Y)"
"X="?Z
"Y="?T
(ZX)+(TY)D
Algorithmique
Page 16 / 33
Sortie
Afficher AB=
Afficher D
Afficher AB=
Afficher D
"AB="
D
"AB="
(D)
End
Traduction PYTHON :
# Calcul de la distance entre deux points
from math import *
# permet dutiliser sqrt (racine)
xa=input("Saisissez labscisse du point A :")
#
ya=input("Saisissez lordonne du point A :")
# saisie des
xb=input("Saisissez labscisse du point B :")
# coordonnes des points
yb=input("Saisissez lordonne du point B :")
#
D=(xbxa)**2+(ybya)**2
# La puissance est note **
print AB^2 = ,D
# Calcul exact (grand entier)
print AB =,sqrt(D)
# Calcul approch
Lobjet dplacer (ici Lutin1) possde un script (algorithme) en forme de rptition jusquau moment o on est tout proche
de lobjet cach. Pour faire sentir la distance lobjet cach (Lutin2) on fait mettre un son de plus en plus fort au fur et
2000
, mais on peut en inventer dautres) ; on pourrait aussi bien promesure que lon se rapproche14 (do la formule 10
d
poser aux lves de jouer sur les couleurs ou tout autre signe visuel non numrique.
Le jeu avec ce petit algorithme permet loccasion de faire noter que la distance reste constante quand on dcrit un cercle
autour de lobjet cach15.
g.
A, B et C tant trois points non aligns du plan, dfinis par leurs coordonnes, on veut tester si le triangle est isocle en A.
Algorithmique
Page 17 / 33
Saisir xA,yA
Afficher B(x,y)
Saisir xB, yB
Afficher C(x,y)
Saisir xC, yC
Traitement
D1 prend la valeur (xB-xA)2+(yB-yA)2
D2 prend la valeur (xC-xA)2+(yC-yA)2
Sortie
Si D1=D2
alors
En faisant apparatre les points correspondants on fait sentir la prsence de la mdiatrice du segment [AB].
3 / Algorithmes divers
a.
16 Laffichage sera 0 ou 0.0 selon le systme de calcul employ ; mme en prsence de racines non exactes la diffrence doit tre exactement nulle puisque la fonction informatique racine (sqrt) renverra deux rponses identiques pour des entres identiques !
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 18 / 33
deltay
xmin, xmax
ymin, ymax
h
v
i,j
// Idem en ordonne.
// Bornes daffichage en abscisse.
// Bornes daffichage en ordonnes.
// Longueur horizontal de la fentre en pixels
// Longueur verticale de la fentre en pixels
// Coordonnes du centre de la fentre orthonormale finale
Traitement
// Rcupration de la taille de la fentre
Passer en Zoom dcimal
// Effet : La fentre affiche un repre orthonormal.
h prend la valeur xmax-xmin
// On sauvegarde la taille de la fentre orthonormale
v prend la valeur ymax-ymin
// Rcupration des coordonnes minimales et maximales de lobjet afficher
xmin prend la valeur ...
// Plus petite abscisse des points de lobjet afficher.
xmax prend la valeur ...
ymin prend la valeur ...
ymax prend la valeur ...
// Affectation des bornes de la fentre (quelconque)
deltax prend la valeur xmax-xmin
deltay prend la valeur ymax-ymin
xmin prend la valeur xmin-deltax/5
xmax prend la valeur xmax+deltax/5
ymin prend la valeur ymin-deltay/5
ymax prend la valeur ymax+deltay/5
// Adaptation pour rendre les units gales et centrage de la fentre
deltax prend la valeur xmax-xmin
deltay prend la valeur ymax-ymin
i prend la valeur (xmin+xmax)/2
j prend la valeur (ymin+ymax)/2
Si deltay/deltax > v/h
alors
b.
Tracer dans une fentre orthonormale, un cercle dont on connait le rayon et les coordonnes du centre.
Traduction TI
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
c.
Zdecimal
XmaxXminH
YmaxYminV
Disp "CENTRE(X,Y)"
Input "X=",X
Input "Y=",Y
Input "RAYON=",R
XRR/5Xmin
X+R+R/5Xmax
YRR/5Ymin
Y+R+R/5Ymax
XmaxXminD
YmaxYminE
(Xmin+Xmax)/2I
(Ymin+Ymax)/2J
If E/D>V/H
Then
IE*H/(2*V)Xmin
I+E*H/(2*V)Xmax
Else
JD*H/(2*V)Ymin
J+D*H/(2*V)Ymax
End
Circle(X,Y,R)
Le jeu se joue trois (Alice, Benjamin et Cline) sur un carrelage rectangulaire grandes dalles orient Ouest-Est en lonDirection gnrale de l'enseignement scolaire
Algorithmique
Page 19 / 33
Traduction TI
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
Traduction SCRATCH
Zdecimal
4,7X
3,1Y
0S
Input "A=",A
Input "B=",B
While X<4,7 and Y<3,1
Pt-On(X,Y)
If S<0
Then
Y+0,1Y
S+BS
Else
X+0,1X
SAS
End
End
Algorithmes et fonctions
Les algorithmes prsents dans ce chapitre, ainsi que leur transposition informatique doivent sinsrer au sein de la rsolution de problme dans le cadre du programme de la classe de Seconde sur les fonctions.
Le fil directeur de cette partie est la problmatique du fentrage, pour laquelle la notion de sens de variation et dextremum
joue un rle crucial. On entend par fentrage la recherche des bornes minimale et maximale pour laxe des abscisses et pour
laxe des ordonnes permettant dafficher la courbe reprsentative dune fonction afin de visualiser ses variations. On se placera sur un intervalle donn dans un premier temps.
Cette question du fentrage doit permettre dappliquer des algorithmes rpondant la recherche dextremums ou de soluDirection gnrale de l'enseignement scolaire
Algorithmique
Page 20 / 33
tions dquation et dinquation, tout en dgageant progressivement les notions de sens de variations.
a.
Afin de construire la reprsentation graphique dune fonction, il est ncessaire de connatre ses extremums sur lintervalle
tudi. Nous nabordons pas dans ce document les problmes de calcul formel, et nous limitons des valeurs approches.
b a
. On fera ensuite le
Une mthode consiste subdiviser lintervalle initiale [a ;b] en N intervalles de mme amplitude
N
passage en revue des valeurs prises par la fonction en chacune des bornes de la subdivision. On parle dune mthode par balayage pas constant. On utilise des variables intermdiaires min et max qui vont permettre de mmoriser au fur et mesure
du balayage la plus petite des valeurs et la plus grande grce une structure de contrle alternative. On utilise une structure
itrative pour calculer les diffrentes images des bornes.
Cela donne lalgorithme suivant :
Variables
a, b les bornes de lintervalle dtude
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
Si y>max alors
Si y<min alors
Sortie
Affiche min et max.
Remarques :
Il y avait N1 valeurs de f calculer, mais on en a calcul une ( f(a) ) avant dentrer dans la boucle .
Pour se convaincre du fait que lalgorithme fonctionne comme prvu, on peut surveiller lvolution de la quantit
z =x k.pas (cest une variable supplmentaire, ou, avec le tableur, une colonne supplmentaire) : au premier passage z
vaut a puisque k dmarre avec la valeur 1, et chaque tape x augmente de pas, k de 1, donc z reste gale a.
Cet algorithme peut se transposer sur tableur, le cas chant, lemploi des fonctions min et max rduit la mise en place de
la feuille de calcul une simple tabulation de la fonction f.
Selon le logiciel utilis pour transposer cet algorithme, les variables a, b, N et mme la fonction f peuvent tre saisies par
lutilisateur comme des arguments au moment de lappel du programme.
On peut pour simplifier lalgorithme utiliser une particularit des boucles itratives de certains logiciels (calculatrices) qui
permettent dutiliser comme compteur une variable relle sincrmentant dun pas constant.
Calculatrice TI :
Input A
Input B
Input N
AX
Y1C
Direction gnrale de l'enseignement scolaire
Calculatrice CASIO :
?A
?B
?N
AX
Y1C
Algorithmique
Page 21 / 33
Y1D
(B-A)/NP
For(K,1,N)
X+PX
If Y1>D
Then
Y1D
End
If Y1<C
Then
Y1C
End
End
Disp C,D
AXmin
BXmax
CYmin
DYmax
DispGraph
Y1D
(B-A)/NP
For K1 To N
X+PX
If Y1>D
Then Y1D
Ifend
If Y1<C
Then Y1C
Ifend
Next
C
D
AXmin
BXmax
CYmin
DYmax
DrawGraph
Remarques :
Dans le cadre de la rsolution de problme, il convient de bien faire remarquer que, dans presque tous les cas, les rponses
fournies par le programme ne sont que des valeurs approches des extremums, et que dans certains cas, certes loigns
des fonctions que les lves rencontrent, les valeurs sorties par le logiciel peuvent tre fort loignes des rponses exactes.
1
Un exemple : pour f x = 2
sur [0,95 ;0,95] avec un pas de 0,1 on trouve avec lalgorithme une valeur maxix 0,001
male denviron 285 alors que le maximum de f est exactement 1000.
Lorsque la fonction f est strictement croissante puis strictement dcroissante sur [a ;b ] 17, il est possible dtre plus prcis :
si on a trouv une valeur maximale pour x =ak.pas , on sait que le maximum de f sera atteint dans lintervalle
[ak1. pas ; ak1. pas ] ; on peut donc prendre ak.pas comme valeur approche de labscisse du maximum
avec une erreur infrieure ou gale pas.
b.
Le recours au hasard (dont on dit quil fait parfois bien les choses) est une tentative de remdier en partie au dfaut du programme prcdent sans avoir mener une tude plus formelle. Il sagit de balayer alatoirement lintervalle [ a ;b ] en
cherchant N valeurs diffrentes. On utilise alors une instruction spcifique donnant un nombre alatoire entre a et b ainsi
quune structure itrative. Cela donne lalgorithme suivant :
Variables
a, b les bornes de lintervalle
f la fonction tudier
N le nombre dimages calculer.
Initialisation
min prend la valeur f (a)
max prend la valeur f (a)
Traitement
Pour k variant de 1 N
Sortie
Afficher min et max
Remarques :
Arbitrairement, les variables min et max sont initialises avec la valeur de f a . En initialisant min et max avec la plus
petite et la plus grande des images f a et f b , le programme gagne en efficacit pour toutes les fonctions qui atteignent une valeur extrme sur les bornes de lintervalle (cest le cas de toutes les fonctions monotones).
Pour limplmentation, on utilise linstruction rand ou rand# ou encore random qui donne un nombre alatoire
de lintervalle [0 ; 1[. Si lon convient de nommer Alea comme sur un tableur la fonction qui donne une valeur alatoire de
17 On dit quune telle fonction est strictement unimodale. Cest le cas des fonctions polynmiales du second degr.
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 22 / 33
lintervalle [0 ; 1[, alors pour obtenir une valeur alatoire de lintervalle [a ;b ] , il suffit de remarquer que le produit de ce
nombre alatoire Alea par lamplitude ba donne un nombre alatoire de lintervalle [0;ba [ . Lajout de a cette
valeur donnera un nombre alatoire de lintervalle [ a ;b [ do la formule : aAleaba .
Traduction PYTHON :
La fonction f tudier est dfinie comme une fonction
(informatique) dont largument x est un nombre rel, et qui
retourne le rel image. Cest le mot-cl def du langage
PYTHON qui permet de dfinir cette fonction.
On trouve ici un avantage la souplesse du langage de programmation : la dfinition dune fonction par morceaux ne
pose aucun problme. Ainsi, on peut crire :
def f(x):
if x<1: return (x+1)*0.5
else: return sqrt(x)
def f(x):
return 3.0*xx**2
import random
a=5.0
b=5.0
N=50
minimum=f(a)
maximum=f(b)
for k in range(N):
x=random.uniform(a,b)
if f(x)>maximum:
maximum=f(x)
if f(x)<minimum:
minimum=f(x)
print maximum
print minimum
La comparaison des rsultats des deux algorithmes avec un mme nombre ditrations pourra donner lieu des changes
autour de la notion de hasard et de son efficacit selon les cas.
2
Par exemple, avec la fonction carr sur lintervalle [1;1] , on obtient une valeur approche du minimum 10 prs ds
que le nombre tir au hasard appartient lintervalle [0,1;0,1] , ce qui se produit avec une probabilit de 0,1. On devine
quavec 50 itrations, il y a une grande probabilit que cela se ralise au moins une fois. Plus prcisment, cette probabilit
50
vaut 10,9 qui est suprieur 99%.
4
Lalgorithme dterministe pas constant donnera 10 comme minimum de la fonction carr sur lintervalle [1 ;2 ] avec
100 itrations. Un raisonnement identique montre que lalgorithme alatoire, donnera quant lui une meilleure valeur approche du minimum plus dune fois sur deux.
Cela dit, lalgorithme dterministe que nous avons dtaill nest pas performant du tout, il en existe de bien meilleurs, notamment en rapport avec le nombre dor et les nombres de Fibonacci18, mais ces algorithmes sont au-del de ce que lon
peut attendre dun lve de Seconde.
2 / Tester la monotonie
La recherche dextremum est grandement facilite lorsquon connait les variations de la fonction. Cest lobjet des algorithmes qui suivent : tester la monotonie. On prendra garde la diffrence entre les rponses ngatives (lalgorithme montre
vraiment que la fonction nest pas monotone) et positives (la fonction peut tre monotone mais il se peut aussi quelle ait des
variations de sens contraire sur certains intervalles trs courts).
Lalgorithme prsent rpondra certaines questions qui se posent lors de la rsolution dun problme. Il pourra facilement
tre adapt de nouvelles situations, ou tre amnag pour donner de nouvelles informations pertinentes au regard du problme rsoudre.
On se donne une fonction f dfinie sur un intervalle [ a ;b ] . Que sait-on sur la monotonie de f ?
a.
Cet algorithme simple repose sur le balayage pas constant de lintervalle dtude et par la comparaison systmatique de
deux images successives ou plutt du signe de leur diffrence. Si ce signe ne change jamais, la fonction est peut-tre monotone, sinon elle ne lest certainement pas et on pourra arrter le balayage en affichant les valeurs considres .
Cet algorithme pourra permettre dapprofondir la notion de sens de variations.
Variables
a, b les bornes de lintervalle dtude [a ; b]
f, la fonction tudier
N, le nombre dintervalles
x, les valeurs successives de la variable
Initialisation
pas prend la valeur (b-a)/N
sens prend la valeur signe de la diffrence f (b) f (a)
x prend la valeur a
Traitement
18 http://en.wikipedia.org/wiki/Golden_section_search
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 23 / 33
Sortie
Pour k variant de 1 N
Affiche x et x+pas
Fin du programme
Remarques :
Le type de variable et les valeurs prises par sens dpendent du logiciel. Ce pourra tre un boolen (valeur logique
vrai ou faux ), ou alors les nombres -1 et +1.
De la mme faon, la boucle doit tre adapte sur calculatrice, et selon les logiciels, la sortie du traitement sera programme diffremment. Linstruction de fin de programme dans la boucle ne rentre pas dans les standards de la programmation. Ce choix pragmatique est ici fait pour des raisons de commodit au dtriment de la structure de lalgorithme.19
Traduction SCILAB :
On dfinit au pralable la fonction sous SCILAB par :
function y=f(x), y=x^2 + 10, endfunction
La mme remarque que ci-dessus, au sujet des fonctions dfinies par morceaux, vaut ici. La dfinition de la fonction peut
mme recourir un algorithme plus complexe comportant des boucles, notamment.
Puis le programme (avec un test supplmentaire pour sassurer que les deux images ne sont pas gales ) :
a=input("Entrer la valeur de a : ");
b=input("Entrer la valeur de b : ");
N=input("Entrer le nombre de tests : ");
sens = f(b)f(a);
x=a;
if sens==0
disp("Les images f(a) et f(b) sont gales : le programme ne fonctionnera pas");
end;
disp ("f(a) = "+string(f(a))+" et f(b) = "+string(f(b)));
for k=1:N
if ((f(x+pas)f(x))*sens<0)
disp("La fonction n''est pas monotone");
return;
end;
x=x+pas;
end;
disp("La fonction semble monotone");
a.
Lobjet de cet algorithme est de rechercher des informations sur le maximum de la fonction (sil existe !). Explorer efficacement un intervalle trs grand ne peut se faire en aveugle comme le fait une calculatrice, cest--dire par le biais dune progression arithmtique de la variable. On envisage alors des progressions plus rapides ; la mise en forme propose ci-dessous
explore les images par f des carrs des entiers.
Initialisation
f, la fonction tudier
p, la progression de la variable, exemple : p(k) = k
N, le nombre ditrations
max prend la valeur f (0)
x prend la valeur 0, ce sera lantcdent de max.
Traitement
Pour k variant de 1 N
Algorithmique
Page 24 / 33
Sortie
Affiche x et max.
Calculatrice Casio :
?N
0X
0C
Y1C
Y1D
For 1K To N
K^2X
If Y1>D
Then Y1D
XC
Ifend
Next
C
D
Remarques :
Cet algorithme peut ensuite tre dclin pour tester la monotonie, ou pour explorer de grandes valeurs ngatives, ou de petites valeurs proches de 0 et dans tous les cas on fera prendre conscience du caractre empirique de la rponse obtenue.
La tabulation de la fonction selon ce principe permet dapprhender le comportement asymptotique (et dintroduire de
faon empirique la notion de limite dans le cadre dune rsolution de problme o cette question est porteuse de sens).
Pour une exploration plus efficace, le choix dune croissance plus marque peut se faire sentir. Dans ce cas, une progression
gomtrique de la variable est une stratgie judicieuse (on pourra commencer par suggrer de remplacer k 2 par 2 k ).
La dichotomie
On se donne une fonction qui change de signe entre a et b. Rsoudre lquation f(x)=0.
De nombreuses situations abordes dans lanne donneront lieu la rsolution graphique, numrique ou algbrique dquations et dinquations.
Face la multiplicit de ces problmes, un algorithme automatisant cette tche est lgitime. videmment de nombreux outils
logiciels intgrent les fonctionnalits numriques ou formelles permettant cette rsolution.
Saisir N
Si N est infrieur S
Algorithmique
Page 25 / 33
Sortie
Si n=S alors
Affiche gagn
fin de programme
Affiche perdu .
Une bonne stratgie conduit lalgorithme utilisant la dichotomie. Cette mthode consiste, en choisissant chaque fois la
valeur situe au milieu de lintervalle en cours, rduire de moiti chaque fois lamplitude de lintervalle dans lequel se
trouve le nombre et comme 26 est gal 64, le dernier intervalle, sur cet exemple, est damplitude 1.
a prend la valeur m
sinon
b prend la valeur m
Sortie
Affiche a et b
Remarque :
Les variables a et b changent de valeur au fur et mesure de lexcution de la boucle. Comme on excute 50 fois celle-ci la
largeur de lintervalle initial est divis par 250 (environ 1015), ce qui donne un bon encadrement de la valeur cherche.
Traduction SCRATCH :
Le nombre m est affich lcran.
b.
Cet algorithme plus ambitieux que les prcdents pose des problmes dont les rponses sont subtiles. Il nest pas envisageable daborder un tel algorithme avant que les lves naient acquis une bonne maitrise de lalgorithmique.
On se propose ici de dterminer le maximum dune fonction croissante puis dcroissante sur un intervalle [a ;b ] 20.
La connaissance des variations permet une recherche efficace du maximum.
Sa description nave est la suivante :
pas prend la valeur (b-a)/10
20 On dit quune telle fonction est unimodale. Cest le cas des fonctions polynmiales du second degr.
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 26 / 33
Pour k variant de 1 10
Traduction PYTHON:
Variables
f , la fonction
a, b les bornes de lintervalle dtude.
Initialisation
pas prend la valeur (b a)/10
x prend la valeur a
Traitement
Pour k variant de 1 10
Sortie
Affiche x, x + 20*pas, f(x+10*pas)
def f(x):
return 3.0*xx**2
a=1.0
b=3.0
pas=(ba)/10
x=a
for i in range(8):
while(f(x+pas)>f(x)):
x=x+pas
x=x+pas
pas=pas/10
print x
print x+20*pas
print f(x+10*pas)
lissue du traitement, le maximum se situe entre x et x20pas (car le pas a t divis par 10 une dernire fois). En
sortie, lalgorithme affiche lintervalle qui encadre lantcdent du maximum, et limage de son centre en guise dapproximation du maximum.
Cet algorithme peut tre donn tudier aux lves, en leur demandant ce quil fait et dans quelle condition. L'enseignant
peut aussi en proposer des versions fausses, par exemple en omettant la ligne qui suit la sortie de la boucle Tant que :
x prend la valeur x+pas
ou en changeant les lignes :
x prend la valeur x+pas
pas prend la valeur pas/10
puis demander aux lves, aprs une analyse, de le corriger.
Algorithmes et probabilits
Les algorithmes proposs ci-aprs sinsrent dans le cadre de la simulation, et par consquent de lapproche dite frquentiste des probabilits.
a.
La partie se finit en au plus six lancs. Il est donc possible de simuler une partie sans avoir recours une boucle.
Variables
d : la face du d tire au hasard
tour : compte le nombre de tours que dure la partie
Initialisation
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 27 / 33
tour augmente de 1
Si d < 6 alors
tour augmente de 1
Si d < 6 alors
tour augmente de 1
Si d < 6 alors
tour augmente de 1
Si d < 6 alors
tour augmente de 1
Sortie
Si d = 6 alors
Affiche tour
Remarques :
Si le support de programmation sur lequel est transpos lalgorithme ne dispose pas des fonctionnalits de recopie de
texte, la mise en place dune boucle peut se justifier.
Il est possible de modifier un peu la modlisation du jeu, afin de simplifier sa mise en uvre, en particulier sur tableur ; en
effet, la partie est quivalente aux lancers de six ds. Le livre gagne sil existe au moins un six parmi les rsultats.
De cette faon un seul test peut suffire, condition de disposer de linstruction approprie (comme linstruction NB.SI du
tableur).
Cependant, larithmtique boolenne peut aussi se modliser 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.
b.
Il suffit damnager le programme afin dinsrer la simulation dune partie dans une boucle et de compter le nombre de parties gagnes par le livre ou la tortue. Lintrt dun langage de programmation devient vident : litration est trs rapide
aussi bien crire, modifier qu excuter (ce qui nest pas le cas avec le tableur). On pourra noter, cette occasion, que certains langages sont beaucoup plus rapides que dautres.
Variables
d : la face du d tire au hasard
N : le nombre de parties simuler
k : le compteur de boucle
tortue : le nombre de parties gagnes par la tortue
Initialisation
tortue prend une valeur 0
Traitement
Pour k de 1 N
Si d < 6 alors
Si d < 6 alors
Si d < 6 alors
Si d < 6 alors
Si d < 6 alors
Algorithmique
Page 28 / 33
Sortie
Si d < 6 alors
Affiche tortue .
Traduction XCAS
N:=10;
Tortue:=0;
for (K:=1;K<=N;K:=K+1){
d:=rand(6)+1;
if (d<6) {d:=rand(6)+1;}
if (d<6) {d:=rand(6)+1;}
if (d<6) {d:=rand(6)+1;}
if (d<6) {d:=rand(6)+1;}
if (d<6) {d:=rand(6)+1;}
if (d<6) {Tortue:=Tortue+1;}
};
print (Tortue);
c.
videmment, plutt que de rpter 6 fois les mmes instructions, il est possible de simuler une partie laide dune boucle.21
De cette faon, il sera facile dexprimenter de nouveaux jeux en modifiant le nombre de cases que doit parcourir la tortue.
Variables
d : la face du d tire au hasard
case : le numro 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
Rpte
Si d < 6 alors
jusqu [ d = 6 ou case = N ]
Sortie
Si case = N alors
Traduction SCILAB
N=6;
Ncase=0;
de=0;
while (de<6 | Ncase<N) do
de=floor(rand()*6+1);
if (de<6)
Ncase=Ncase+1;
end;
end;
if (Ncase==6)
disp("La tortue gagne");
else
disp("Le livre 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 lgrement amnag par rapport lalgorithme. Pour
entrer dans la boucle une premire fois, la variable de est initialise avec la valeur arbitraire 0.
21 La transformation de la rptition dinstructions en une boucle, si elle simplifie lalgorithme, ne lacclre pas pour autant.
Direction gnrale de l'enseignement scolaire
Algorithmique
Page 29 / 33
Algorithme 4
Variables
dates : tableau des trente jours danniversaire
trouv : un boolen qui indique si deux dates concident.
k, p: deux compteurs de boucles.
Initialisation
Pour k de 0 29
dates[k] prend une valeur entire alatoire comprise entre 1 et 365 inclus
Pour p de k+1 29
Sortie
Affiche trouv
Si le tirage au sort des dates se fait aisment sur tableur, il nen va pas de mme de la recherche de dates identiques (du fait
des deux boucles).
Traduction SCILAB :
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;
end;
end;
if (trouve)
disp("Deux personnes ont mme
anniversaire");
else
disp("Pas deux anniversaires
communs");
end;
Algorithmique
Page 30 / 33
Bibliographie
Projet de programme de Seconde, paru le 19 mai 2009 sur EDUSCOL
J.-P. KAHANE, Lenseignement des sciences mathmatiques. Commission de rflexion sur lenseignement des mathmatiques, d. CNDP-Odile Jacob, 2002, ISBN : 2-7381-1138-6.
IREM dAix-Marseille - LOutil algorithmique au lyce. Une introduction. (1987)
Dominique GUIN, Luc TROUCHE, Calculatrices symboliques. Transformer un outil en un instrument du travail mathmatique : un problme didactique, La Pense sauvage (2002).
B.WARIN, Lalgorithmique, d. Ellipses (2002), 328 pages, ISBN : 2-7298-1140-0
J.-L. CHABERT, Histoire dalgorithmes, d. Belin (1994), 586 pages, ISBN : 2-7011-1346-6
H.F. LEDGARD, Proverbes de programmation, traduit et annot par J. ARSAC, d. DUNOD (1983), 162 pages,
ISBN : 2-04-010238-8
C. et P. RICHARD, Initiation lalgorithmique, d. Belin (1981), 128 pages, ISBN : 2-7011-0838-1
1 / SCRATCH
SCRATCH est un langage de programmation qui permet de crer des animations, des jeux, de la musique SCRATCH
existe dans de nombreuses langues (on prfrera la traduction franais-Canada la traduction franaise).
SCRATCH est conu pour aider les jeunes crer et partager des projets grce la technologie Java.
Lenvironnement SCRATCH se distingue de ceux qui suivent par sa capacit grer la programmation vnementielle voire
parallle : un projet SCRATCH ne se rduit pas un seul algorithme, il inclut gnralement des lments multimdias (sons,
images animes) ainsi quune multiplicit dalgorithmes sexcutant tour tour.
Sites :
http://scratch.mit.edu
Site officiel (en anglais) pour le tlchargement, avec nombreux exemples, documentation.
http://guides.recitmst.qc.ca/scratch
2 / XCAS
Xcas est un systme de calcul formel pour Windows, Mac OSX et Linux/Unix. Il permet de faire du calcul formel, des reprsentations graphiques dans le plan ou lespace, de la gomtrie dynamique (dans le plan ou dans lespace), du tableur, des
statistiques et de la programmation. XCAS est aussi accessible en ligne.
Sites :
http://www-fourier.ujf-grenoble.fr/~parisse/
http://vds1100.sivit.org/giac/giac_online/demoGiacPhp.php
http://pcm1.e.ujf-grenoble.fr/XCAS/
Direction gnrale de l'enseignement scolaire
Page 31 / 33
3 / LINOTTE
LINOTTE est un langage de programmation utilisant une syntaxe en franais (exemple : tu affiches le texte ). Il fonctionne sous Java . Lapprentissage est rapide car sa syntaxe est le franais. On pourra sappuyer sur Linotte pour faire ses
premiers pas dans la programmation.
Site :
http://langagelinotte.free.fr
4 / MAXIMA
MAXIMA est un logiciel de calcul formel avec un module de programmation, existe en version Windows et Linux.
Site :
http://michel.gosse.free.fr
Un site trs complet do lon peut tlcharger le logiciel. Des documents, des exemples.
On y trouve galement des liens vers dautres sites.
5 / PYTHON
Python est un langage de programmation simple, relativement facile apprendre, polyvalent. Il est disponible sur les platesformes principales (Linux, Windows, Mac OSX).
Sites :
Site officiel de Python (en anglais).
http://www.framasoft.net/article1971.html Pour apprendre programmer en Python
http://python.developpez.com/cours/
Pour apprendre programmer en Python
http://die-offenbachs.de/eric/
Un excellent environnement de dveloppement Python
http://www.python.org/
6 / SCILAB
SCILAB est un logiciel de mathmatiques gnraliste qui propose un module de programmation (fonctionne sous Linux,
Windows, Mac OSX). Il est par ailleurs adapt aux calculs numriques et leurs visualisations.
Sites :
http://www.scilab.org/fr/
http://www.scilab.org/lycee/
7 / EXECALGO
EXECALGO est un logiciel conu par le groupe dexperts qui a rdig les programmes et le document daccompagnement
de la srie L et qui a pour objectif de faciliter la comprhension de la notion dalgorithme (fonctionne sous Windows).
Site :
http://ldif.education.gouv.fr/wws/d_read/eduscol.maths-l/Document%20accompagnement/
donne accs aux documents daccompagnement et en particulier ceux concernant lalgorithmique en srie L
Algorithmique
Page 32 / 33
Prend la valeur
Afficher
Si...alors
...sinon
Pour i variant de 1 N
Tant que...
Rpte ...
Jusqu
Calculatrice
TI
Input X
2X
Disp X
If X=2
Then
...
Else
...
End
For (K,1,N)
...
End
While X<2
...
End
Repeat X=2
...
End
Excute le bloc jusqu
ce que la condition soit
vraie (il peut ne pas
tre excut).
Calculatrice
Casio
?X
2X
If X=2
Then ...
Else ...
IfEnd
For 1K To N
...
Next
While X<2
...
WhileEnd
Do
...
While X<10
Excut au moins une
fois, puis tant que la
condition est vraie.
SCRATCH
XCAS
input("N=",N);
N:=2;
print(N);
if (X==2)
{...}
else {...}
for
(I:=1;I<=N;I:=I+1)
{...}
while (X<2)
{...}
SCILAB
N=input("N=");
N=2;
disp(N);
ou
mprintf("N="
+string(N));
While x<2,
...;
end;
PYTHON
N=input("N=")
X=2.0
print N
if X==2:
...
else:
...
while X<2:
...
for i in range(N)
...
Algorithmique