You are on page 1of 33

Mathmatiques

Lyce

Ressources pour la classe


de seconde
- Algorithmique Ce document peut tre utilis librement dans le cadre des enseignements et de la formation des
enseignants.
Toute reproduction, mme partielle, d'autres fins ou dans une nouvelle publication, est soumise
l'autorisation du directeur gnral de l'Enseignement scolaire.

Juin 2009
eduscol.education.fr/ D0015

Table des matires


Prsentation gnrale.........................................................................................................3
1 / Quelques gnralits sur lalgorithmique..................................................................................................................................3
2 / Pour une pratique active de llve.............................................................................................................................................4
3 / Supports de programmation.........................................................................................................................................................5
4 / valuation des pratiques..............................................................................................................................................................5
Une initiation lalgorithmique...............................................................................................6
1 / De quoi va-t-on parler ?................................................................................................................................................................6
2 / Les lments de base dun algorithme simple.........................................................................................................................6
Exemples de dispositifs de classe..........................................................................................10
1 / Quelques jeux...............................................................................................................................................................................10
2 / Quelques automates...................................................................................................................................................................11
3 / Lecture dalgorithmes..................................................................................................................................................................11
4 / valuation de projets dlves...................................................................................................................................................13
Algorithmes et gomtrie....................................................................................................13
1 / Quelques problmes...................................................................................................................................................................13
2 / Points, segments et distances...................................................................................................................................................13
3 / Algorithmes divers........................................................................................................................................................................18
Algorithmes et fonctions....................................................................................................20
1 / Recherche des extremums sur un segment : fentrage vertical........................................................................................21
2 / Tester la monotonie.....................................................................................................................................................................23
3 / La question du fentrage horizontal : comportement asymptotique..................................................................................24
4 / Recherche de solution dquation et dextremum.................................................................................................................25
Algorithmes et probabilits.................................................................................................27
1 / Le jeu du livre et de la tortue...................................................................................................................................................27
2 / Concidence de date danniversaire dans une classe..........................................................................................................30
Bibliographie..................................................................................................................31
Prsentation rapide des logiciels...........................................................................................31
1 / SCRATCH......................................................................................................................................................................................31
2 / XCAS..............................................................................................................................................................................................31
3 / LINOTTE........................................................................................................................................................................................32
4 / MAXIMA.........................................................................................................................................................................................32
5 / PYTHON........................................................................................................................................................................................32
6 / SCILAB...........................................................................................................................................................................................32
7 / EXECALGO...................................................................................................................................................................................32
8 / Tableau de correspondance entre les langages....................................................................................................................33

Direction gnrale de l'enseignement scolaire

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.

Prsence universelle des algorithmes

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.

Aborder certains objets sous un jour nouveau

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.

Algorithmes et dmarche algorithmique

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.

Direction gnrale de l'enseignement scolaire

Algorithmique

Page 3 / 33

2 / Pour une pratique active de llve


Citons nouveau le projet de programme pour la classe de Seconde :
Lalgorithmique a une place naturelle dans tous les champs des mathmatiques et les problmes poss doivent tre en relation avec les autres parties
du programme (fonctions, gomtrie, statistiques et probabilit, logique) mais aussi avec les autres disciplines ou la vie courante.
La dcouverte de lalgorithmique peut avantageusement avoir lieu tout au long de lanne et gagne tre mise en uvre par
des situations varies, notamment en diversifiant les supports dactivits des lves. On pourrait trs bien commencer par
excuter les algorithmes1 sans ordinateur la main sur papier, avec les mains, avec les pieds, ou avec des objets etc. Par
ailleurs, mme si cela diffre entre la calculatrice et lordinateur, il convient de lier la gestion de mmoire des actes lis aux
manipulations concrtes dcriture, daffectation et daffichage de donnes.

a.

Organisation des enseignements

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 :

fonctions : tude numrique et asymptotique;


gomtrie : les questions daffichage, de positionnement et de dplacement dobjets gomtriques simples (points, segments, cercles) peuvent tre un champ dinvestigation trs riche ;
statistique : questions de tris, dtermination de certains indicateurs (mdiane, quartiles) ;
probabilits : la modlisation de certains phnomnes partir de frquences observes : mthode dite de Monte-Carlo,
etc. ;
numrique : le traitement des nombres permet daborder des problmes de comparaisons et de taille des nombres,
dexactitude dans les calculs, etc.

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

De tels exemples seront proposs dans la suite du document ressource.


Direction gnrale de l'enseignement scolaire

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.

4 / valuation des pratiques


Lvaluation des pratiques en Algorithmique peut sorganiser autour dune valuation par comptences qui ne conduira pas
ncessairement une note spcifique chiffre.
Les activits menes dans le cadre de la pratique de lalgorithmique peuvent servir de support dvaluation des comptences
lies, dune part, aux trois modalits fondamentales de lactivit en algorithmique qui sont :
a) analyser le fonctionnement ou le but dun algorithme existant ;
b) modifier un algorithme existant pour obtenir un rsultat prcis ;
c) crer un algorithme en rponse une problme donn.
et, dautre part, la rsolution de problmes telles que :
d) modliser et sengager dans une activit de recherche ;
e) faire une analyse critique ;
f) pratiquer une lecture active de linformation (critique, traitement), en privilgiant les changements de registre
(graphique, numrique, algbrique, gomtrique) ;
g) communiquer lcrit et loral.

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

Une initiation lalgorithmique


1 / De quoi va-t-on parler ?
Le mot algorithme vient du nom de lauteur persan Al-Khuwarizmi (n vers 780 - mort vers 850) qui a crit en langue
arabe le plus ancien trait dalgbre abrg de calcul par la compltion et la simplification 3 dans lequel il dcrivait des procds de calcul suivre tape par tape pour rsoudre des problmes ramens des quations4.
Dans un premier temps rdiger un algorithme consiste dcrire les diffrentes tapes de calcul pour rsoudre un problme
algbrique, numrique ou dcisionnel.
Des exemples souvent repris pour illustrer ces diffrents aspects, comme le rendu de monnaie pour le volet numrique, ou
encore les recettes de cuisine. On trouve encore des algorithmes dans des situations de la vie courante (shabiller) ou professionnelle (ainsi, la conduite dun train, la consultation dun catalogue de bibliothque, etc.).
Plus gnralement le mot algorithme dsigne tout procd de calcul systmatique voire automatique. Sajoute cela la
notion de finitude .
On dfinit parfois les algorithmes de la manire suivante : un algorithme est une suite finie de rgles appliquer dans un ordre dtermin un nombre fini de donnes pour arriver, en un nombre fini dtapes, un certain rsultat et cela indpendamment des donnes. 5 Le rsultat doit donc sobtenir en un temps fini.
propos des rgles appliquer , il faut entendre un traitement fait sur des donnes impos par une suite dinstructions
visant transformer ces donnes pour arriver au rsultat vis.
Ces instructions sont de natures diverses selon le type de donnes au dpart. Cest ce que nous allons prciser.

2 / Les lments de base dun algorithme simple


a.

Les trois tapes

Daprs ce qui prcde, trois tapes structurent un algorithme simple6 :

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.

La sortie des rsultats


Les rsultats obtenus peuvent tre affichs sur lcran, ou imprims sur papier, ou bien encore conservs dans un fichier. Si
on nen fait rien, ils restent en mmoire jusqu la prochaine excution ou sont perdus. loccasion, la sortie pourrait tre
graphique (afficher ou dplacer le pointeur de la souris ou des objets sur lcran) ou sonore voire sur Internet.
3
4
5
6
7

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 .

Instructions pour traiter les donnes


Pour raliser ces trois tapes voques prcdemment, on a besoin d instructions de base comme la lecture de donnes,
laffectation de variables et lcriture de donnes.

Laffectation de donnes dans des variables


La formalisation de notre algorithme commence par le tirage dun d et la mmorisation des points obtenus. Cette action
ncessite de crer une mmoire ou variable destine cet usage, zone de mmoire laquelle il est commode de donner
un nom ou identificateur. Avec le logiciel SCRATCH cela prend lallure suivante :9

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 !

La lecture (ou entre) des donnes


La lecture de donnes pourra se faire par interrogation de lutilisateur ou par extraction partir dun fichier rang sur un
disque voire de donnes accessibles par Internet. On a choisi de la traduire par linstruction : Saisir identificateur .
Par exemple, dans XCAS linstruction
input(A);

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

Lcriture (ou sortie) des donnes


L criture des donnes permet dafficher pour lutilisateur les valeurs des variables aprs traitement (ou en cours de traitement dans le cas o lon veut contrler lexcution). On a choisi de la traduire par linstruction : Afficher identificateur. On
pourra peaufiner la prsentation des rsultats pour avoir un affichage lisible et comprhensible. Une variante consiste
sortir directement des informations non contenues dans une variable, nous le traduirons par : Afficher message .
8

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

Dans SCRATCH ces sorties peuvent tre de la forme

ou

Les squences dinstructions


Le traitement des donnes se fait par une suite dinstructions parmi lesquelles figurent des affectations doprations ou de
calculs. Ces oprations ou ces calculs sont spcifiques selon le type des donnes utilises (nombres entiers, nombres dcimaux, ou chanes de caractres) ou selon les structures donnes utilises (listes, tableaux, etc.).
Les instructions, simples ou complexes, sont en principe traites les unes aprs les autres dans leur ordre dapparition dans le
programme. Dans la plupart des langages de programmation, les instructions dune mme squence sont spares par un caractre deux-points ou point-virgule ou simplement par un passage la ligne. Ainsi, dans la recette de la pte crpes, on
trouve la squence dinstructions (mettre la farine dans le bol ; faire un puits ; mettre les ufs dans le puits).
On voit trs bien ce principe luvre dans le logiciel
SCRATCH, la squence dinstructions se matrialisant par lembotement des pices de puzzle . Ci-contre, titre dexemple,
la simulation du lancer de deux ds et de lobtention de leur
somme (deux variables ayant pour noms a et b ont t pralablement cres).
Laffectation est en couleur orange, le calcul en couleur verte et
lcriture des donnes en couleur violette ; et cette squence
comporte trois instructions.
La mme dmarche, ralise avec le logiciel XCAS, amnerait crire :
a := 1+hasard(6) :; b := 1+hasard(6) :;
print(a+b) ;

Instructions (ou structures) de contrle


Le traitement de donnes se fait parfois sous conditions ou de manire spcifique. On parle alors de structures de
contrle . Elles sont de plusieurs natures diffrentes :

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

font automatiquement lindentation.


titre dexemple, nous pouvons considrer lalgorithme suivant qui teste si le nombre entier introduit est un carr parfait :
Saisir a
b prend la valeur racine(a)
c prend la valeur arrondi(b)
Si b = c alors

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...) };

Les structures rptitives


Elles permettent dexcuter plusieurs fois de suite le mme traitement cest dire la mme srie dinstructions.
La plus simple comprendre est la structure itrative qui
consiste rpter un certain traitement un nombre N de fois fix
lavance. Dans SCRATCH, la formalisation du jeu consistant
lancer 10 fois les deux ds et tenir jour le gain conformment
la rgle propose ci-dessus va se faire avec le bloc jaune rpter
fois (ci-contre).
Dans la plupart des langages (y compris ceux des calculatrices) on
utilise pour cela un compteur I (cest une variable) pour contrler le
nombre (entier) de tours. chaque tour le compteur I augmente automatiquement de 1.
Nous formulerons cela dans notre pseudo-langage par linstruction :
Pour I de 1 jusqu N faire
Traitement 1

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

Exemples de dispositifs de classe


Lenseignement de lalgorithmique fournit loccasion de varier les dispositifs de classe ; par exemple, on peut proposer aux
lves de modliser dune manire semi-formelle des algorithmes issus de la vie quotidienne et de les faire vivre sous
formes dactivits de communication. Dans la progression pdagogique on aura intrt passer par des phases de ttonnement, dexpression orale, dchanges sans chercher aborder trop rapidement la formalisation crite qui peut savrer bloquante pour certains.
Les exemples suivants ne sont dcrits ni dans le dtail, ni dans leur contenu ni dans leur mise en uvre dans la classe. Ils
peuvent servir de base la mise en place dactivits de groupe permettant des premires rflexions autour de la notion dalgorithme dans le cadre de situations axes sur la communication. En ce sens, aprs un temps dinvestigation les lves seront
chargs de produire un texte (crit ou oral) comprhensible et directement utilisable par leurs camarades par exemple.
Toutes ces activits ont pour objectif la production ou linterprtation dalgorithmes et leur vrification obtenue par laction
immdiate et pas ncessairement issue directement du champ mathmatique.
Dans ces premires activits, la formulation sera probablement lourde en comportant des structures de la forme : si tu es
dans telle situation alors fais cela, sinon ou tant que ceci se produit on continue faire... . Cette lourdeur pourra alors
fournir une motivation pour la mise en place une syntaxe commune sur des lments dalgorithmique rcurrents : boucles,
tests... Cette syntaxe commune peut tre un premier pas vers de premires rencontres avec des langages ddis. Au cours de
ce processus on pourra mettre en vidence le besoin de formalisation et de rigueur.
Lors de ces premires activits on pourra montrer que, consciemment ou non, les lves ont au cours des annes prcdentes (au collge) utilis, voire conu, des algorithmes en mathmatiques. Ils pourront tre mis en uvre de manire nave
sous forme de jeux ; en effet la gestuelle peut beaucoup aider comprendre certains algorithmes. Leur formulation pourrait
alors permettre daborder diffrents aspects de la programmation : tests darrts, boucle conditionnelle, etc. On peut citer
par exemple la recherche par dichotomie, lalgorithme dEuclide
Aprs une priode dinitiation, on peut amener les lves lire des algorithmes pr-crits, comprendre ce quils font et
poser des questions visant les modifier.

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.

Le Jeu des multiples

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 !

Ce jeu consiste en une course effrne... pour ne pas tre le premier !


Le principe : le professeur dEPS a gnreusement prt son jeu de dossards. Tous les dossards sont diffrents. Aprs avoir
endoss un dossard, tous les lves salignent les uns ct des autres sur un carrelage.
Au signal donn par le professeur, chacun avance dun nombre de carreaux gal son numro de dossard. partir du signal
suivant, les lves avancent sur le mme principe la condition davoir un lve qui soit plus avanc queux.
Outre que les mises en place de ce jeu peuvent tre multiples (avance simultane de tous les lves ou avance un par un,
choix des dossards, nombre dlves...), cette situation permet daborder deux questions intressantes : celle du ppcm de plus
de deux entiers (quil conviendrait de faire dcouvrir par les lves) et celle de savoir si un algorithme sarrte. La programmation effective de lalgorithme pourra tre envisage dans un deuxime temps (elle ncessite au moins deux boucles imbriques puisqu chaque tour de jeu il faut pour chaque coureur examiner si un autre coureur est devant).
Si le temps ne le permet pas, on peut jouer ce jeu sur un damier traditionnel dont le nombre de cases ne permet pas toujours daller jusquau bout de la partie. Il faut alors anticiper ce que sera la suite du jeu.

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.

Comment grer un distributeur de billets de banque ?

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.

Le dbit de repas du self par carte

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.

Direction gnrale de l'enseignement scolaire

Algorithmique

Page 11 / 33

a.

Un peu dpargne

On considre lalgorithme suivant :


Mettre 5000 dans S
Mettre 0 dans N
Effacer lcran
Tant que S est strictement infrieur 8000
Remplacer S par S*1,02
Augmenter N de 1
Afficher N et S
Fin du Tant Que
O S dsigne la somme dtenue par Paul la banque et N dsigne le nombre de semestres de dpt.
Questions :
crire les affichages successifs qui apparatront lcran.
Donner un problme dont la solution est donne par cet algorithme.

b.

Dincertaines conomies

On considre lalgorithme suivant :


Mettre 5000 dans S
Mettre 0 dans N
Effacer lcran
Tant que S est strictement infrieur 6500
Choisir un nombre alatoire compris entre 100 et 200
Remplacer S par S + A
Augmenter N de 1
Afficher N et S
Fin du Tant Que
o S dsigne la somme dtenue par Paul la banque et N dsigne le nombre de semestres de dpt.
Questions :
1. crire une suite possible daffichages.
2. Est-il possible dobtenir 6 comme dernire valeur de N ?
3. Quelle est la valeur minimale de la dernire valeur de N ?
4. Donner un problme dont la solution est donne par cet algorithme.

c.

DNB 2007
On donne le programme de calcul suivant :

choisir un nombre

lui ajouter 4

multiplier la somme obtenue par le nombre choisi

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

On considre lalgorithme cicontre, crit avec le logiciel


SCRATCH. On suppose que
lobjet ou lutin (dont les
coordonnes sont nommes x
et y) peut se dplacer dans une
fentre rectangulaire repre
par les points A(-200, -150)
(en bas gauche) et B(200,
150) (en haut droite).
Questions :
1. Quelle est la position initiale
de lobjet ?
2. quelle(s) condition(s) lobjet peut-il se dplacer ?
3. Proposer un parcours complet possible de lobjet.
Direction gnrale de l'enseignement scolaire

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 ?

4 / valuation de projets dlves


Dans un contexte de dveloppement dalgorithmes (voir la prsentation gnrale, valuation des pratiques, activits 4c et 4d
page 5), mme simples, se pose rapidement la question de lvaluation de la progression des lves, dans la mesure o la ralisation dun algorithme est souvent une question trs diffrente dun calcul mener, une dmonstration rdiger, etc. Se limiter un simple critre de fonctionnement nest pas satisfaisant : certains algorithmes de pitre qualit fonctionnent
tandis que dautres ne fonctionnent pas mais pour des causes tout fait mineures.
La grille ci-dessous peut donner quelques lments en ce sens, non limitatifs il va de soi, et on adaptera ce questionnement
aux situations effectivement rencontres.
Critre
Respect des bons usages
Le but vis par lalgorithme
est explicit, et des commentaires prcisent le droulement. Les variables
ont des noms bien choisis.
Correction du code :
Lalgorithme fonctionne.

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.

Fonctionne correc- Fonctionne pour des


choue pour des donnes
tement dans tous donnes (entres) stan- (entres) standard, mais
les cas.
dard mais checs mipour une raison mineure.
neurs sur des cas particuliers.

Interface utilisateur :
Aucune faute
(entres, sorties)
Elle est claire et commode.

1-3 fautes mineures

Plus de trois fautes mineures ou une faute majeure

Insuffisant
Ne rpond pas au
problme pos.
Objectif impossible
dterminer

choue pour des


donnes (entres)
standard, pour une
raison importante.
Plus dune faute majeure

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.

2 / Points, segments et distances


On peut justifier quun triangle est isocle, rectangle ou quilatral en ayant recours aux longueurs, tout en sinterrogeant sur
lexactitude de ce type de calcul. Une premire tche accomplir sera alors de calculer une distance, ce qui amne sintresser au trac des segments, etc.

a.

Algorithme 1 : Milieu dun segment

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);

Lusage de la notation grassmannienne (A+B)/2 peut tre vit en recourant la forme :


A:=point([1,2]);B:=point([3,4]);segment(A,B);C:=milieu(A,B);

b.

Algorithme 2 : quatrime sommet dun paralllogramme.

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

tu ajoutes ")" dans reponse


tu affiches reponse
tu termines

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.

Algorithme 3 : trac dun segment dans une fentre adapte

Saisir les coordonnes des extrmits du segment.


Dterminer la fentre daffichage :
Rcuprer les abscisses et ordonnes minimales et maximales des deux points ;
Diminuer un peu les valeurs minimales et augmenter un peu les valeurs maximales
(pour ce faire, on choisit dlargir de chaque ct dun cinquime de lcart entre le maximum et le minimum pour chacune des coordonnes).
Variables
Traduction TI :
x A , yA , x B , y B
: Disp "A(X,Y)"
xmin, xmax, ymin, ymax // Bornes de la fentre
: Input "X= ", X
deltax, deltay
// largissement de la fentre
: Input "Y= ", Y
Entres
: Disp "B(X,Y)"
Saisir xA , yA , xB , yB
: Input "X= ", Z
Traitement
: Input "Y= ", T
Si xA<xB then
: If X<Z

xmin prend la valeur xA


: Then

xmax prend la valeur xB


: XXmin
Sinon
: ZXmax

xmin prend la valeur xB


: Else

xmax prend la valeur xA


: ZXmin
Si yA<yB then
: XXmax

ymin prend la valeur yA


: If Y<T

ymax prend la valeur yB


: End
Sinon
: Then

ymin prend la valeur yB


: YYmin

ymax prend la valeur yA


: TYmax
deltax prend la valeur (xmax-xmin)/5
: Else
deltay prend la valeur (ymax-ymin)/5
: TYmin
xmin prend la valeur xmin-deltax
: YYmax
xmax prend la valeur xmax+deltax
: End
ymin prend la valeur ymin-deltay
: (XmaxXmin)/5D
ymax prend la valeur ymin+deltay
: (YmaxYmin)/5E
Sorties
: XminDXmin
Tracer la ligne de (xA;yA) (xB;yB)
: Xmax+DXmax
: YminEYmin
: Ymax+EYmax
: Line(X,Y,Z,T)

d.

Algorithme 4 : trac dun polygone dans une fentre adapte

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

13 crer la main lalgorithme du max est un bon exercice dalgorithmique lmentaire.


Direction gnrale de l'enseignement scolaire

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

Algorithme 5 : tracs de segments point par point

Ces exercices peuvent constituer une prise en main de Scratch.


La syntaxe est celle de la langue Franais (Canada)
Lobjet anim porte le nom de Sprite ou Lutin suivant lenvironnement.

Algorithme 5a : premier dplacement.


On place dabord le lutin sa position de dpart (au centre de lcran, cest--dire aux coordonnes (0,0) ).
On efface lcran puis on baisse le stylo pour commencer le trac.
Ensuite, on dplace 100 fois le lutin de 1 pas vers la droite.
Chaque dplacement est obtenu en ajoutant 1 x (la variable x prexiste, cest la coordonne
horizontale de la pointe du stylo ).
On relve le stylo et on termine en replaant le lutin sa position initiale.
Cet algorithme de mouvement, trs simple, peut tre adapt pour produire dautres mouvements rectilignes, dabord paralllement aux axes, puis dans dautres directions.
Il permet de sengager vers la simulation de divers mouvements rectilignes uniformes.

Algorithme 5b : deuxime dplacement.


Lalgorithme ci-contre ( droite) comporte plusieurs boucles imbriques.
Deux exploitations pdagogiques sont possibles :

soit on observe le trac obtenu, avec pour but dexpliquer le fonctionnement


de cet algorithme. Le trac fait bien ressortir le rle de chacune des boucles ;
en modifiant les constantes inhrentes lalgorithme propos (1, 4 et 20) on
observe diffrents tracs, ce qui aide affiner lanalyse.

soit on demande aux lves danalyser lalgorithme a priori, et de prvoir la


figure qui sera obtenue. La ralisation sous SCRATCH permettra alors de
contrler la rponse.
On pourra aussi proposer la recherche de lalgorithme donnant un carr, ou un rectangle de forme impose, puis tester la cration de diverses spirales

f.

Algorithme 6 : distance de deux points.

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

Variante avec SCRATCH


Lenvironnement SCRATCH ne permet pas de calculer trs facilement (pas de fonction carr ), mais, au-del des calculs,
il est intressant dutiliser SCRATCH pour manipuler directement des points (et autres objets graphiques) ; en particulier, la
fonction distance est incluse dans lenvironnement Scratch, il suffit de demander la distance dun Lutin un autre ou
au pointeur de la souris.
Lexemple suivant utilise ces techniques pour moduler le volume sonore en fonction de la distance un objet cach (le
trsor ). Lobjet cach (ici nomm Lutin2) est une simple croix matrialisant un emplacement (un point, en somme) et le
script associ est simplissime :
Script du Lutin1
Script du Lutin2 (trsor)

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.

Algorithme 7 : triangle isocle en A

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.

Algorithme en langage naturel


Saisir les coordonnes des points.
Calculer les longueurs AB et AC.
Si AB=AC alors afficher que le triangle est isocle en A,
sinon afficher quil ne lest pas.
Variables
x A , yA
// Coordonnes de A
x B , yB
// Coordonnes de B
xC , yC
// Coordonnes de C
D1
// AB
D2
// AC
Entres
Afficher A(x,y)
14 cest la mthode employe dans les dtecteurs de mtaux dits pole frire
15 utiliser le clic droit dans le cadre infrieur droit de lcran pour faire rapparaitre lobjet cach.
Direction gnrale de l'enseignement scolaire

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

Afficher ABC isocle en A


sinon

Afficher ABC non isocle en A


Afficher AB-AC =
Afficher D1 D2
Remarques :
On compare en fait les carrs de distances AB2 et AC2 ; en effet, le calcul des racines carres est ici superflu.
On introduit ici une nouvelle instruction conditionnelle : si condition alors action1 sinon action2, avec pour condition un
test dgalit.
Laffichage de la diffrence des longueurs permet de porter un regard critique sur la rponse affiche.16

Traduction avec SCRATCH :


Les distances sont directement donnes par le logiciel.
Dans la pratique lgalit parfaite est difficilement ralisable ce qui conduit tester si la diffrence des longueurs est
petite , par exemple on affiche ici lgalit des longueurs lorsque leur diffrence est infrieure 2.

En faisant apparatre les points correspondants on fait sentir la prsence de la mdiatrice du segment [AB].

3 / Algorithmes divers
a.

Algorithme 8 : fentre orthonormale automatique sur calculatrice

La fentre obtenue sur une calculatrice na aucune raison dtre orthonormale.


Ladaptation ne peut tre effectue quen tenant compte des dimensions de la fentre daffichage.
Lalgorithme est construit en partant du repre orthonormal par dfaut de la calculatrice qui est ensuite dilat ou contract
suivant la taille de la figure avant dtre translat lemplacement de cette figure (centre de symtrie si la figure en a un).
Lalgorithme suivant est partiel car il dpend de la nature de lobjet afficher.
Variables
deltax

// Distance maximale entre la plus grande et la plus petite abscisse

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

xmin prend la valeur i-h*(deltay/2v)

xmax prend la valeur i+h*(deltay/2v)


sinon

ymin prend la valeur j-v*(deltax/2h)

xmax prend la valeur j+v*(deltax/2h)


// La suite du programme se rsume laffichage de lobjet.

b.

Algorithme 9 : Trac dun cercle dans un repre orthonormal.

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)

Algorithme 10 : jeu de Marelle (ou Marelle de Bresenham)

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

gueur et Sud-Nord en largeur.


La dalle de dpart est la dalle sud-ouest de la pice (en bas gauche si on reprsente le carrelage par un rectangle)
Alice choisit un entier naturel a et Benjamin un nombre entier naturel b.
Au dbut de chaque partie Cline est sur la dalle de dpart et tient un compteur (ou score) s qui est initialement zro.
Lorsque le jeu dmarre Cline se dplace suivant la rgle suivante :
Si le compteur est strictement ngatif, elle avance dun carreau vers le Nord et le compteur augmente de b.
Si le score est positif ou nul, elle avance dun carreau vers lEst et le compteur diminue de a.
Le jeu sarrte lorsquelle arrive sur un bord du carrelage.
quoi ressemble la trajectoire dcrite par Cline ? Quelle en est la direction moyenne (si le dallage est suffisamment grand) ?
Le programme permettant de visualiser le dplacement donne une premire ide de la rponse. On peut affiner la recherche sur tableur en faisant
afficher les coordonnes (X;Y) des positions successives de Cline ainsi que le compteur et le rapport Y/X. On pourra justifier que la trajectoire
est entre les droites dquations aX-bY=a et aX-bY=-b (surveiller lvolution de la quantit Z=aX-bY+S).

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.

1 / Recherche des extremums sur un segment : fentrage vertical


On se donne une fonction f dfinie sur un segment [a;b]. Que peut-on dire concernant son maximum et son minimum ?.

a.

Algorithme 1 : dterministe pas constant (tabulation simple)

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

x prend la valeur x+pas // remarque : ici surveiller z

y prend la valeur f(x)

Si y>max alors

max prend la valeur y

Si y<min alors

min prend la valeur y

Sortie
Affiche min et max.
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.

Traduction sur calculatrices


Pour les transpositions sur calculatrice, la variable min sappelle C, la variable max sappelle D et le pas se nomme P. Les programmes cherchent le maximum de la fonction mmorise en Y1.
En sortie, les programmes calculatrices proposent le graphique de la fonction dans la fentre dduite des valeurs trouves.
Cest lobjet des cinq dernires lignes.

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.

Algorithme 2 : tabulation alatoire dune fonction

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

x prend une valeur alatoire entre a et b.

Si f (x) > max alors

max prend la valeur f (x)

Si f (x) < min alors

min prend la valeur f (x)

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)

Linstruction range(N) du langage PYTHON gnre une


liste de N entiers allant de 0 jusqu N1 (il existe aussi une
instruction xrange qui produit un effet similaire tout en
consommant moins de mmoire).

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.

Algorithme 3 : dterministe pas constant sur un intervalle born

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

Si ( f (x+pas)-f(x) nest pas de mme signe que sens ) alors

Affiche la fonction nest pas monotone

Affiche x et x+pas

Fin du programme

x prend la valeur x+pas

Affiche La fonction semble monotone .


Les affichages du traitement.

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");

3 / La question du fentrage horizontal : comportement asymptotique


On se donne une fonction f dfinie sur R. Quel est son comportement lorsque la variable prend des valeurs trs grandes ?
On change ici de point de vue, on ntudie plus la fonction sur un intervalle ferm mais un intervalle ouvert de R.

a.

Algorithme 4 : exploration de grandes valeurs de la variable

Lobjet de cet algorithme est de rechercher des informations sur le maximum de la fonction (sil existe !). Explorer efficacement un intervalle 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

Si f ( p(k) )>max alors

x prend la valeur p(k)


19 Ce cas est prvu dans certains langages (instruction break).
Direction gnrale de l'enseignement scolaire

Algorithmique

Page 24 / 33

Sortie

max prend la valeur f (x)

Affiche x et max.

Traduction sur calculatrices


Calculatrice TI :
Input N
0X
0C
Y1D
For(K,1,N)
K^2X
If Y1>D
Then
Y1D
XC
End
End
Disp C,D

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

4 / Recherche de solution dquation et dextremum


a.

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.

Algorithme 5 : jeu du nombre deviner


Ce texte propose la programmation dun petit jeu sur calculatrice, avant daborder la dichotomie.
Programmer un jeu : deviner le nombre en six essais.
On demande lutilisateur de deviner en moins de six essais un nombre tir au hasard entre 10 et 100.
On lui indique chaque fois si le nombre propos est suprieur ou infrieur au nombre cherch. Sans stratgie, il est difficile
dy parvenir.
Le choix des valeurs 10 et 100 qui encadrent le nombre trouver, ainsi que le nombre dessais est mettre en dbat dans la
classe. En effet, selon le choix de ces valeurs, il sera ou non possible de dterminer coup sr la solution avec une bonne
stratgie, ou on pourra seulement optimiser les chances de gagner.
Variables
N nombre choisi par lutilisateur
Initialisation
S, un nombre entier au hasard entre 10 et 100
essai prend la valeur 1
Traitement
Tant que essai est infrieur ou gal 6

Saisir N

Si N est suprieur S alors

Affiche cest moins

Si N est infrieur S

Affiche cest plus

Direction gnrale de l'enseignement scolaire

Algorithmique

Page 25 / 33

Sortie

Si n=S alors

Affiche gagn

fin de programme

essai prend la valeur essai+1

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.

Algorithme 6 : recherche dun zro par dichotomie


On transpose cette mthode ici. Cela donne lalgorithme suivant :
Variables
m , valeur milieu de lintervalle courant
Initialisation
a et b, les bornes de lintervalle [a ; b]
f, la fonction (rappel : f change de signe entre a et b)
Traitement
Pour i variant de 1 50

m prend la valeur (a+b)/2

Si f(m) et f (a) sont de mme signe alors

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.

Algorithme 7 : monter plus haut

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

Tant que les images augmentent, on continue,

Mais ds que limage diminue

on divise le pas par 10 (et on change de sens)

Pour pouvoir transposer cet algorithme, il faut le formaliser bien davantage.


En notant x 1 , x 2 et x 3 trois valeurs successives de la variable telles que f x 1 f x 2 et f x 2 f x 3 , il faut remarquer que le maximum est atteint dans [x 1 ; x 3 ] , mais quil nest pas possible de savoir priori sil est atteint pour une
valeur suprieure ou infrieure x 2 .
Cest la raison pour laquelle il faut prendre garde la nouvelle valeur de dpart de la variable avant de diviser le pas et de
commencer une nouvelle boucle.

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

Tant que [ f (x+pas) est suprieur ou gal f (x) ]

x prend la valeur x+pas

x prend la valeur x + pas

pas prend la valeur pas/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.

1 / Le jeu du livre et de la tortue


Rgle du jeu.
chaque tour, on lance un d. Si le 6 sort, alors le livre gagne la partie, sinon la tortue avance dune case. La tortue gagne
quand elle a avanc 6 fois.
Question : le jeu est-il lavantage du livre ou de la tortue ?

a.

Algorithme 1 : Simulation dune partie sans boucle

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

d prend une valeur entire alatoire entre 1 et 6 compris


tour prend la valeur 1
Traitement
Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

tour augmente de 1

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

tour augmente de 1

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

tour augmente de 1

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

tour augmente de 1

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

tour augmente de 1

Sortie
Si d = 6 alors

Affiche Le livre gagne


sinon

Affiche La tortue gagne

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.

Algorithme 2 : Cumuler un grand nombre dexpriences

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

d prend une valeur entire alatoire entre 1 et 6 compris

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris

Si d < 6 alors

d prend une valeur entire alatoire entre 1 et 6 compris


Direction gnrale de l'enseignement scolaire

Algorithmique

Page 28 / 33

Sortie

Si d < 6 alors

tortue prend la valeur tortue + 1

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.

Algorithme 3 : Avec une structure itrative conditionnelle.

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

d prend une valeur entire alatoire entre 1 et 6 inclus.

Si d < 6 alors

case prend la valeur case + 1

jusqu [ d = 6 ou case = N ]
Sortie
Si case = N alors

Affiche La tortue gagne


Sinon

Affiche Le livre gagne

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

2 / Concidence de date danniversaire dans une classe


Dans la vie courante certaines concidences apparaissent extraordinaires (comme rencontrer par hasard quelquun de
connu des centaines de kilomtres de chez soi). Malheureusement bien souvent ces concidences ne se prtent pas facilement une modlisation qui permettrait un calcul de probabilit ou une simulation.
Le problme voqu dans ce paragraphe ne pose pas de grandes difficults de modlisation; pour autant, le rsultat savrera
sans doute tonnant pour de nombreux lves.
Sa mise en place algorithmique peut tre loccasion de travailler des questions proches de celles des tris qui font souvent intervenir deux boucles imbriques.
Quelle est la probabilit que dans une classe de 30 lves, il y ait au moins deux lves qui partagent la mme date danniversaire ?
Pour effectuer une simulation, il sagit dans un premier temps de tirer les 30 dates danniversaires au sort (parmi 365 jours,
en supposant les dates danniversaire uniformment rparties sur lanne civile); il faudra ensuite chercher si deux dates concident.
Les dates sont mmorises dans un tableau. Comme cest souvent lusage, on note entre crochets lindice du tableau. Dans
lexemple, on considre que les indices du tableau commencent 0.

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

trouv prend la valeur faux


Traitement
Pour k de 0 28

Pour p de k+1 29

Si dates[k] = dates[p] alors

trouv prend la valeur vrai

Sortie
Affiche trouv
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;

Direction gnrale de l'enseignement scolaire

Traduction SCILAB (1000 expriences) :


N=0;
for i=1:1000
dates=floor(rand(30,1)*365+1);
trouve=%F;
for k=1:29
for p=k+1:30
if (dates(p)==dates(k))
trouve=%T;
end;
end;
end;
if (trouve)
N=N+1;
end;
end;
disp("Il y a "+string(N)+" concidences");

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

Prsentation rapide des logiciels


Les logiciels proposs ci-dessous sont libres au sens o leur tlchargement, leur installation sont autoriss sans aucune
restriction. On prendra garde, nanmoins, aux diffrences de licence rgissant leur emploi. Bien entendu, cette liste nest pas
limitative et rien nempche que dautres logiciels existants ou venir puissent tre employs avec profit pour illustrer lalgorithmique (par exemple, Ruby). La liste ne suit pas un ordre particulier (mais le premier logiciel est un peu part).

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

Un guide dapprentissage canadien (en franais) de SCRATCH, trs complet.


http://fr.groups.yahoo.com/group/scratch_group

Une liste de diffusion autour de SCRATCH.


http://computerkiddoswiki.pbworks.com/f/Programming+Concepts+and+Skills+Supported+in+Scratch.doc

Une base de documentation (en anglais).


http://www.howardism.org/Technical/Scratch/Book/Introduction.html

Autre guide dapprentissage (en anglais)

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

Site officiel (tlchargement, documentation, exemples)


Site o lon peut utiliser XCAS directement en ligne, sans
aucune installation.
Forum exclusivement consacr XCAS.
Algorithmique

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

Site officiel (tlchargement, exemples, documentation, forum ddi).

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/

Site officiel (tlchargement, notamment la version Scilab pour les lyces ).


Documents, liste de diffusion, adapts aux lyces.

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

Direction gnrale de l'enseignement scolaire

Algorithmique

Page 32 / 33

8 / Tableau de correspondance entre les langages


Saisir

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

Crer une variable, et la


contrler avec
un curseur.

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));

if X==2 then for K=1:N


...;
...;
else ...; end;
end;

While x<2,
...;
end;

PYTHON

N=input("N=")

X=2.0

print N

if X==2:
...
else:
...

while X<2:
...

Direction gnrale de l'enseignement scolaire

for i in range(N)
...

Algorithmique

You might also like