TD Algorithmique Corriges
TD Algorithmique Corriges
TD Algorithmique Corriges
éric SIGWARD
IA-IPR de mathématiques de l'académie de Strasbourg
Auteurs
François BRISOUX
Professeur de mathématiques au lycée français René Descartes de Rabat
Christian Brucker
Professeur de mathématiques au lycée Théodore Deck de Guebwiller
Yvan MONKA
Professeur de mathématiques au collège Albert Camus de Soufflenheim
éric SIGWARD
L
es élèves ont rencontré au cours du collège un certain nombre d’algorithmes : les algo-
rithmes opératoires comme la division euclidienne, le calcul avec les fractions, l’algorithme
d’Euclide, des algorithmes d’enchaînement d’opérations mais également des algorithmes de
constructions géométriques. Les nouveaux programmes des classes de lycée privilégient les acti-
vités qui mettent en œuvre des démarches algorithmiques dans les différentes notions étudiées :
fonctions, géométrie, statistiques et probabilités.
Les exercices de ce cahier sont classés selon les trois grandes parties du programme de seconde :
fonctions, géométrie et statistiques. Ils peuvent cependant être traités de façon indépendante.
Les prérequis mathématiques, volontairement restreints, sont précisés en en-tête de chaque
exercice.
Les compétences algorithmiques* mises en jeu et travaillées sont indiquées au début de chaque
exercice. La plupart des algorithmes de ce cahier se traitent facilement sur une calculatrice pro-
grammable. La présence dans les énoncés de langages plus évolués comme le langage Python ou
bien spécifiques à un logiciel comme Scilab ou Xcas, permet aux élèves de s’entraîner à la lecture
d’algorithme car leur syntaxe est particulièrement simple et intuitive.
Le langage de programmation n’est pas la priorité de ces exercices, il est par contre essentiel de
bien comprendre les démarches algorithmiques, de s’entraîner à élaborer des algorithmes en
langage naturel, de comprendre le fonctionnement des algorithmes donnés dans le but de les
modifier ou de les compléter dans le cas d’une généralisation du problème étudié.
Les auteurs.
* Ces compétences se réfèrent aux compétences identifiées dans le document Ressources pour la classe de
seconde générale et technologique – Algorithmique, page 3.
▶ eduscol.education.fr/cid45766/mathematiques-pour-le-college-et-le-lycee.html
APPLICATION 1
Yasmine visite Paris mais elle n’a pas pris de plan. Elle se promène dans l’avenue de l’Observatoire, en direction du
jardin du Luxembourg lorsqu’elle demande son chemin à un passant qui lui indique :
« Continuez jusqu’au bout, tournez à droite, prenez la première à gauche puis la troisième à droite, continuez
alors tout droit jusqu’à la bifurcation de la rue, vous y êtes. »
Saint-Sulpice o
Cluny -
rue
La Sorbonne
Mon
Maubert-
a cine Mutualité
Rue R
s
Sorbonne
ieur
Odéon
el
ich
rue
le P
e Vaugirard
t-M
rue d rue
Mo
des
rinc
Éco
n
Sai
les
ge
Centre
e
bd
rue Guynemer
rue Madame
Musée du Sorbonne
Luxembourg
Rue
Sou Cardinal
ff lot
Lemoine
rue
Pl. du
Pan
Luxembourg théo Lycée
n
-Lu
Henri IV
ssa
l
c
iche
Rue Tournefort
Ru
av. de l’Observatoire
Barbusse
on
d
r Vous Val-de-Grâce
rr ie
Ve êtes ici
ru
rd
le
le
ed
e
o
bd
ri
ru
Nic
’As
du
n
Mo
He
sa
ntp Censier-
rre
s
a Église du
rue
r na Daubenton
Pie
sse Val-de-Grâce
rue
Port-Royal
. 3
InItIatIon à l’algorIthmIque
REMARQUE
Un algorithme ne doit contenir que des instructions qui ne comportent aucune ambiguïté et donc compréhensibles
par celui qui doit les exécuter.
2 Les langages
Un algorithme peut être décrit en langage « naturel », mais on utilise dans la plupart des cas un langage plus
précis adapté aux instructions utilisées : on parle alors de langage de programmation.
Les exemples d’algorithmes de ce manuel sont écrits dans plusieurs environnements : le langage naturel, AlgoBox,
le langage de programmation Python, le langage des calculatrices les plus courantes (TI et Casio), le logo avec le
logiciel GéoTortue ainsi que les syntaxes des logiciels Xcas et Scilab.
On pourra se reporter au tableau de correspondance entre les différentes syntaxes utilisées (▶ voir à la fin du cahier).
De façon générale, on peut considérer trois étapes dans un algorithme :
4
InItIatIon à l’algorIthmIque
3 L’affectation
Une des instructions fondamentales est l’affectation d’une valeur à une variable.
Les valeurs prises par les variables sont, par exemples, des nombres entiers, des nombres décimaux, des chaînes de
caractères, des listes, des tableaux, des graphiques, etc., et elles sont susceptibles de changer au cours de l’algorithme.
L’affectation se traduit de différentes manières selon le langage. Par exemple, si une variable A doit être affectée de
la valeur 3, on écrit en langage naturel : « A prend la valeur 3. »
Ce que l’on écrit :
3→A A=3 A:=3
en langage TI ou Casio ; en langage Python ou sous Scilab ; sous Xcas.
EXEMPLE
On considère la suite des affectations ci-contre :
Pour déterminer les valeurs prises par a et b à la suite de ces affectations, on
exécute pas à pas la succession des instructions, ici en indiquant dans un
tableau les valeurs successives prises par les deux variables a et b.
a b
Initialisation 1 5
3e ligne 2 5
4e ligne 2 4
5e ligne 4 –5
6e ligne 4 4
▶ Voir à la fin du cahier pour le tableau de correspondance entre les différentes syntaxes.
REMARQUE L’affectation d’une variable efface toute valeur antérieurement affectée. Si x et y sont deux variables, la
suite consécutive des deux instructions x = y et y = x n’a pas pour effet de permuter les contenus des deux variables.
APPLICATION 2
Écrire une suite d’instructions ayant pour effet de permuter les deux variables x et y.
On utilise une variable auxiliaire temp :
temp = x on stocke x dans temp
x=y x prend la valeur y
y = temp y prend la valeur temp égale à la valeur initiale de x
REMARQUE En Python, on peut réaliser des affectations simultanées, par exemple : « a,b=2,8 », et on peut réaliser
l’échange de deux variables sans l’aide de variable auxiliaire : « a,b=b,a ».
APPLICATION 3
Écrire un algorithme qui prend en entrée trois nombres et qui renvoie une permutation circulaire de ces trois
nombres, c’est-à-dire qui prend en entrée le triplet (a, b, c) et renvoie le triplet (c, a, b).
REMARQUES
• L’instruction input met l’ordinateur en position d’attente.
La valeur donnée par l’utilisateur sera ensuite affectée à la variable a.
• L’instruction afficher affiche la valeur de la variable précisée.
. 5
InItIatIon à l’algorIthmIque
4 L’instruction conditionnelle
On est très souvent amenés à effectuer des instructions sous certaines conditions.
Il s’agit, par exemple, d’effectuer des instructions qui dépendent, la plupart du temps, de la comparaison de deux
valeurs affectées à deux variables. Ces relations de comparaison sont <, >, ⩽, ⩾, =, ≠.
EXEMPLE 1
En regardant le plan de Paris (▶ page 3), le chemin de Yasmine, à partir de la rue de l’Observatoire, pourrait être :
« Continuez jusqu’au bout, tournez à droite, prenez la première à gauche puis :
si la troisième rue à droite est en travaux, alors prenez la suivante à droite, puis la première à droite, puis la
première à gauche, et continuez tout droit jusqu’à la bifurcation de la rue, vous y êtes.
Sinon, empruntez cette rue, continuez tout droit jusqu’à la bifurcation de la rue, vous y êtes »
REMARQUE En langage naturel une instruction conditionnelle peut se formuler par : « Si … alors … ; sinon … », ce qui
se traduit en langage Python par :
if condition :
instructions
else :
instructions
APPLICATION 4
Voici ci-contre le graphe d’une fonction f définie sur l’intervalle [– 4 ; 4]. y
Écrire un algorithme qui renvoie l’image d’un réel x donné en entrée. 2
1,5
0,5
–3 –1 0 1 2 3 x
Cet algorithme peut, par exemple, s’écrire à l’aide du logiciel AlgoBox ou encore en langages Python ou TI :
AlgoBox Python* TI
REMARQUE Dans la plupart des langages, les blocs d’instructions doivent être délimités par des symboles spécifiques.
En Python, ces délimiteurs de blocs sont repérés par les sauts de ligne et les indentations (décalage par rapport à la
marge). En Python, la ligne d’en-tête d’un bloc d’instructions se termine toujours par « : ».
6
InItIatIon à l’algorIthmIque
5 La boucle conditionnelle
On peut être amené à répéter un bloc d’instructions tant qu’une condition reste vérifiée.
En langage naturel une répétition en boucle peut se formuler par : « tant que … ».
Dans la plupart des langages, la syntaxe d’une répétition en boucle est while (tant que en anglais). Si la condition qui
suit la ligne d’en-tête contenant l’instruction while est vérifiée, alors le programme exécute toutes les instructions
du bloc qui suit, sinon le bloc est entièrement ignoré.
EXEMPLE 1
Le programme Python ci-dessous affiche les carrés et cubes des entiers de 1 à 20.
Dans cet exemple, les variables a et b contiennent à chaque itération deux termes consécutifs de la suite. La variable
c est un compteur de boucles.
APPLICATION 5
Écrire un algorithme qui affiche la table de multiplication par n, n entier naturel donné en entrée.
APPLICATION 6
Voici un algorithme écrit en Scilab. Quelle est la valeur de la variable x à la fin des instructions ?
. 7
InItIatIon à l’algorIthmIque
6 La boucle itérative
L’autre moyen de répéter des instructions peut se réaliser à l’aide de l’instruction for.
En Python, la boucle for parcourt dans l’ordre les éléments d’une séquence quelconque. La syntaxe est la suivante :
EXEMPLE
Calcul de la somme des entiers de 1 à 200 en langage Python :
APPLICATION 7
Écrire un algorithme qui affiche les lignes suivantes :
* ****
** Puis ***
*** **
**** *
APPLICATION 8
Que réalise cet algorithme écrit en Python ?
APPLICATION 9
Écrire un programme qui affiche les tables de multiplication de 2 à 9 en n’utilisant que des boucles conditionnelles.
8
InItIatIon à l’algorIthmIque
7 Les fonctions
Afin de faciliter la lecture d’un programme complexe, on peut le décomposer en sous-programmes plus simples à lire
et interpréter. Ces mêmes sous-programmes peuvent de plus être utilisés plusieurs fois dans le programme initial. Il
peut alors être intéressant de définir de nouvelles instructions pour la construction d’un programme.
La syntaxe en Python pour définir une fonction est la suivante :
Dans la suite du programme, l’appel à cette fonction s’effectuera simplement par son nom suivi des paramètres
entre parenthèses, de la même manière qu’un appel à une fonction prédéfinie du langage.
EXEMPLE
La fonction sec suivante convertit en secondes une durée exprimée heure, minute et seconde (l’instruction return
renvoie la valeur calculée par la fonction) :
def sec (h, m, s) :
"conversion en secondes"
return 3600*h+60*m+s
APPLICATION 10
Écrire une fonction qui calcule la somme des n premiers entiers naturels.
Ce logiciel permet de réaliser des figures géométriques en déplaçant, à l’aide de commandes, le curseur qui laisse
une trace derrière lui.
Les principales fonctions de ce module sont les suivantes :
. 9
InItIatIon à l’algorIthmIque
EXEMPLE
La suite des instructions suivantes dessine un carré de côté 100 :
> av 100 ; td 90 ; av 100 ; td 90 ; av 100 ; td 90 ; av 100 ; td 90
On l’écrira plus simplement :
> rep 4 [ av 100 ; td 90 ]
On peut créer de nouvelles procédures qui pourront être appelées ultérieurement dans d’autres programmes.
Définissons par exemple la procédure carre qui prendra la longueur du côté en argument :
APPLICATION 11
Réaliser les figures suivantes :
CO UP DE PO UCE
• Dans la figure 1, on pourra utiliser une procédure dodecagone et une procédure carre.
• Dans la figure 2, on pourra par exemple observer que la figure est constituée du motif ci-contre, composé de deux
losanges que l’on a fait tourner huit fois. Il faudra bien entendu être attentif à la position de la tortue. Pour la gestion
des couleurs, on se référera au site du programme GéoTortue.
• La figure 3 est constituée de cercles. Un cercle pourra être approché par un polygone régulier ayant un nombre
important de côtés.
Fig. 1 : Fig. 2 :
Fig. 3 :
10
activités algorithmiques - FonctIons
Calcul algébrique
1
prérequis : expressions algébriques
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Identifier les données d’entrée, de sortie, le traitement
Choisir un nombre
Multiplier ce nombre par 3
Ajouter le carré du nombre choisi
Multiplier par 2
Écrire le résultat
Demander un nombre A
Résultat prend la valeur 3A
Résultat prend la valeur 3A + A 2
Résultat prend la valeur 6A + 2A 2
Afficher résultat
2
prérequis : opérations sur les fractions, fractions irréductibles
■ Modifier un algorithme ■ Boucle conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement
a c
On souhaite écrire un algorithme permettant de réduire la somme + au même dénominateur, a, b,
b d
c et d étant des entiers.
a c u
1 Pour obtenir un résultat exact, on introduit deux variables u et v telles que + = ; u et v seront donc
b d v
les sorties de cet algorithme.
a. Donner les formules permettant de calculer u et v.
u = ad + bc et v = bd.
b. Écrire l’algorithme.
Entrer 4 entiers a, b, c et d
u prend la valeur ad + bc
v prend la valeur bd
Afficher u
Afficher v
Calcul .algébrique 11
F o n c t Io n s
Entrer 4 entiers a, b, c et d
Si b = 0 alors
Afficher « une des fractions n’est pas définie »
Fin si
Si d = 0 alors
Afficher « une des fractions n’est pas définie »
Fin si
u prend la valeur ad + bc
v prend la valeur bd
Afficher les valeurs de u et v
4 On souhaiterait enfin que le programme renvoie le résultat de la somme sous la forme d’une fraction
irréductible. On suppose disposer d’une fonction qui calcule le PGCD de deux entiers. Compléter alors
le programme précédent afin qu’il renvoie la fraction sous forme irréductible.
Après les calculs de u et v, on rajoute les instructions :
delta prend la valeur PGCD(u, v)
u
u prend la valeur
delta
v
v prend la valeur
delta
3
prérequis : racine carrée, aire du rectangle, valeur absolue d’un nombre réel
■ Comprendre et analyser un algorithme préexistant ■ Boucle itérative
■ Valider la solution algorithmique ■ Boucle conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation
L’algorithme de Héron permet de déterminer des valeurs approchées de racines carrées d’entiers.
Pour les mathématiciens grecs, déterminer une valeur approchée de 2 revient à construire un carré
dont l’aire est 2. Pour ce faire, partons d’un rectangle de longueur 2 et de largeur 1. Son aire est 2, mais ce
n’est pas un carré.
On construit alors un deuxième rectangle d’aire égale à 2 et dont la longueur est la moyenne arithmé-
1+ 2 3 4
tique des côtés du rectangle précédent, soit = . Sa largeur est alors égale à .
2 2 3
On réitère le processus en construisant une suite de rectangles d’aire 2 et dont les longueurs sont égales
aux moyennes des dimensions du rectangle précédent.
1 Compléter le tableau suivant avec des valeurs approchées des dimensions des rectangles successifs :
12
F onctIons
2 Nous voulons écrire un algorithme qui calcule les valeurs successives des longueurs des rectangles.
a. L’algorithme précédent peut s’écrire de la façon suivante :
Entrer un entier N
a prend la valeur 2
b prend la valeur 1
Pour i allant de 1 jusqu’à N
a + b
a prend la valeur
2
2
b prend la valeur
a
Afficher a et b
Fin pour
Traduire cet algorithme dans une syntaxe au choix et vérifier les valeurs obtenues à la question 1.
En Scilab :
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
b. On admet qu’au fur et à mesure des itérations, les rectangles « tendent » vers un carré d’aire 2, donc
de côté 2 . Modifier le programme précédent pour que les itérations s’arrêtent dès que la valeur absolue
de la différence entre ses dimensions est inférieure à une précision donnée en entrée.
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
En partant cette fois d’un rectangle 1 sur 11, on obtient la valeur approchée 3,316 6247903554 à 10−13 près
à la 6e itération de l’algorithme.
4
prérequis : Division euclidienne, partie entière (définie dans l’énoncé)
■ Comprendre et analyser un algorithme préexistant ■ Boucle conditionnelle
■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation
Calcul .algébrique 13
F o n c t Io n s
2 a. Si A est un entier naturel, par quel calcul peut-on obtenir le chiffre des unités ?
COU P DE P O UCE
On pourra utiliser la fonction « partie entière ». La partie entière d’un nombre réel x est l’entier, noté E(x)
tel que : E(x) ⩽ x < E(x) + 1. La partie entière d’un réel x est donc le plus grand entier inférieur ou égal à x.
x
Le chiffre des unités est le reste dans la division euclidienne par 10, c’est donc la partie entière de :
10
x .
r = x − 10 × E
10
b. Si A est un entier naturel, par quel calcul obtient-on l’entier privé de son chiffre des unités ?
x−r
10
c. Écrire un programme qui prend un entier A en entrée et renvoie la suite des entiers définie par l’algo-
rithme de l’énoncé.
En Scilab :
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
1 Exécuter ce programme avec les 20 premiers entiers naturels. Que peut-on conjecturer sur la valeur
renvoyée par le programme ?
f (1) = f (2) = f(3) = 1 ; f(4) = f(5) = f(6) = f (7) = f (8) = 2 ;
f (9) = f (10) = … = f(15) = 3 ;
f (16) = … = f(20) = 4.
La fonction semble renvoyer le plus grand entier dont le carré est inférieur à l’argument donné.
2 En étudiant l’évolution des différentes variables, expliquer la conjecture observée.
Itération 1 2 3 ... n
y 0 1 2 3 … n
b 1 3 5 7 … 2n + 1
a 1 4 9 16 … n2
14
F onctIons
Les écrans n° 1 et n° 2 donnent l’affichage après son exécution pour deux valeurs différentes en entrée.
Ecran n°1 : Ecran n°2 :
a. Pour cet algorithme, indiquer les valeurs successives de la variable X. Quel écran est conforme à la
sortie attendue ?
Les valeurs successives de la variable X sont X, X + A et (X + A) − A = X.
La valeur attendue en sortie est donc la valeur entrée pour X. Pour X = 7, l’écran n° 1 est conforme aux
attentes.
b. En regardant le mode d’emploi de la calculatrice utilisée, on constate qu’elle ne permet que des
calculs avec des nombres décimaux ayant moins de 15 décimales.
Expliquer alors l’affichage qui semble non conforme.
Dans le cas affiché par l’écran n° 2, la calculatrice arrondit la somme X + A à 45 car elle n’arrive pas à
stocker en mémoire la valeur 45,000……0001.
La différence (X + A) − A donne donc 45 – 45 = 0, ce qui explique pourquoi la valeur affichée en sortie
n’est pas égale à 10− 80.
7
prérequis : tableau de valeurs d’une fonction
■ Comprendre et analyser un algorithme préexistant ■ Boucle itérative
■ Adapter un algorithme aux contraintes du langage de programmation
a. Dans les tableaux ci-dessous, indiquer les valeurs affichées pour les variables x et y dans les 4 boucles.
Algorithme n° 1 Algorithme n° 2
i 1 2 3 4 i 1 2 3 4
x 4 6 8 10 x 1 3 6 10
y 15,2 34,8 62,4 98 y 0,8 8,4 34,8 98
b. Programmer le deuxième de ces algorithmes à la calculatrice pour vérifier les résultats annoncés.
Puis recopier ci-dessous le programme saisi.
8
prérequis : pourcentages et coefficient multiplicateur
■ Comprendre et analyser un algorithme préexistant ■ Boucle itérative
■ Modifier un algorithme
■ Adapter un algorithme aux contraintes du langage de programmation
Fin pour
Afficher p
2 Programmer les deux algorithmes sur la calculatrice et indiquer, dans chaque cas, le prix d’un kilo de
mangues, d’un prix initial de 5 €, après les 10 augmentations.
16
F onctIons
9
prérequis : Variations et maximum d’une fonction
■ Comprendre et analyser un algorithme préexistant ■ Instruction conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement ■ Boucle conditionnelle
■ Valider la solution algorithmique
a. Soit f la fonction définie sur l’intervalle [1 ; 5] dont la courbe représentative est donnée ci-dessous.
y
5 𝒞𝒞f
4
3
2
1
0 1 2 3 4 5 x
x prend la valeur 1
Tant que x < 5 et f(x + 1) > f(x)
x prend la valeur x + 1
Fin tant que
Afficher x
0 1 2 3 4 5 x
x prend la valeur 1
y prend la valeur 5
Tant que x < 5 et g(x) < g(x + 1)
x prend la valeur x + 1
Fin tant que
Tant que y > 1 et g(y − 1) > g(y)
y prend la valeur y − 1
Fin tant que
Si x = y alors
Afficher « Le maximum de la fonction g sur [1 ; 5] est atteint en »
Afficher x
Sinon
Afficher « Le maximum de la fonction g sur [1 ; 5] n’est pas atteint en »
Afficher x
Fin si
c. On considère la courbe incomplète d’une fonction définie sur l’intervalle [1 ; 5] donnée ci-dessous.
Compléter cette représentation graphique pour que l’algorithme précédent, appliqué à cette fonction,
affiche une affirmation fausse.
y
Avant l’affichage, x et y valent 3,
5
donc l’algorithme affichera que
4
le maximum de la fonction est
3
atteint en 3 ; ceci est faux car
2
le maximum de cette fonction
1
semble atteint entre 2,5 et 3
0 1 2 3 4 5 x
strictement.
10
prérequis : Image d’un nombre par une fonction
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Valider un programme simple ■ Boucle conditionnelle
30
20
10
0 1 2 3 4 5 6 7 x
x 0 1 2 3 4 5 6 7
y 0 9 20 33 48 65 84 105
b. À l’aide d’un graphique de f tracé sur la calculatrice, déterminer la valeur de x en sortie pour A = 500
en entrée.
La valeur de x sera 97 car f (96) = 9 984 et f(97) = 10 185.
18
F onctIons
11
prérequis : représentation graphique d’une fonction
■ Comprendre et analyser un algorithme préexistant ■ Instruction conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement ■ Boucle conditionnelle
10
La fonction f donnée par f ( x ) = x − est croissante sur l’intervalle [0 ; 8] et l’équation f(x) = 0 admet
x +1
une unique solution α comme l’illustre sa représentation graphique ci-contre.
y
On souhaite encadrer la valeur α avec la précision p choisie.
Le principe est le suivant :
• on commence par calculer l’image du centre de l’intervalle [0 ; 8] ;
2
• 4 est le centre de l’intervalle [0 ; 8] et f (4) = 2 est positif, donc α < 4 car la fonc-
0 α 4 8 x
tion f est croissante ;
• on peut en conclure que α ∈ [0 ; 4] ;
• on réitère le processus sur l’intervalle [0 ; 4].
a. Par quelle formule calcule-t-on le centre d’un intervalle [a ; b] à partir des bornes a et b ?
b−a
Le centre de l’intervalle [a ; b] est .
2
b. Compléter le tableau suivant pour obtenir un encadrement d’amplitude 0,5. On utilisera une calcu-
latrice pour obtenir les valeurs des images f(x).
b–a x f(x)
Signe de l’image
Borne a Borne b (amplitude de (centre de (image du
du centre
l’encadrement) l’intervalle) centre)
0 8 8 4 2 positif
0 4 4 2 ≈ −1,333 3 négatif
2 4 2 3 0,5 positif
2 3 1 2,5 ≈ −0,357 1 négatif
2,5 3 0,5 2,75 ≈ 0,083 33 positif
c. L’algorithme ci-contre donne l’encadrement souhaité.
Entrer un nombre positif p
a prend la valeur 0
b prend la valeur 8
Tant que b – a > p
b − a
Si f 0 alors
2
b − a
b prend la valeur
2
Sinon
b − a
a prend la valeur
2
Fin si
Fin tant que
Afficher a, b
Quel sera l’affichage donné en sortie par cet algorithme lorsque l’entrée p est 0,1 ?
Fonctions de référence
12
prérequis : calcul de pourcentages
■ Comprendre et analyser un algorithme préexistant ■ Instruction conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation
L’algorithme suivant était programmé dans la caisse enregistreuse pour indiquer le prix à payer par un
client.
y
Soit f la fonction définie sur [0 ; 1] par f(x) = x2 et 𝒞 sa courbe représentative dans un
1
repère orthonormal. On souhaite simuler un jeu de fléchettes, où l’on vise au hasard
𝒞𝒞
un point quelconque du carré jaune.
Pour ceci, on considère le point d’impact M de la fléchette qui a comme coordonnées
x et y. Chacune de ces coordonnées est un nombre réel, choisi de manière aléatoire
dans l’intervalle [0 ; 1]. 0 1 x
20
F onctIons
a. Écrire un algorithme qui simule le jeu précédent et renvoie la position du point d’impact M par
rapport à la courbe 𝒞.
14
prérequis : Fonction inverse, équation d’une droite
■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
■ Valider la solution algorithmique
1
Soit f la fonction définie sur l’intervalle ]0 ; +3[ par f ( x ) =
et 𝒞 sa courbe représentative dans un repère
x
(O ; I , J). Soit a un nombre réel donné et Da la droite d’équation y = ax dans le repère (O ; I , J).
J
𝒞
–2 –1 0 I 2 3 x
–1
–2
b. Écrire un algorithme qui, pour une entrée a, donne le nombre de points d’intersection de 𝒞 avec Da.
Expliquer, en prenant quelques exemples, comment fonctionne l’algorithme proposé.
Entrer un nombre a
Si a > 0 alors
Sinon
Fin si
1 1
• Pour a = −8, l’affichage « aucun point » est exact car l’équation = − 8 x (équivalente à x 2 = − )
x 8
n’a pas de solution dans l’intervalle ]0 ; +3[.
1 1
• Pour a = 8, l’affichage « un point » est exact car l’équation = 4 x (équivalente à x 2 = ) a une de
x 4
ses solutions dans l’intervalle ]0 ; +3[.
15
prérequis : Fonction définie par intervalles
■ Identifier les données d’entrée, de sortie, le traitement ■ Instruction conditionnelle
■ Mettre au point une solution algorithmique
■ Adapter un algorithme aux contraintes du langage de programmation
a. Compléter l’algorithme suivant pour qu’il donne le prix à payer quel que soit le nombre de photos
commandées.
Fin si
Si n ⩾ 26 et n ⩽ 70 alors
Fin si
Si n ⩾ 71 alors
Fin si
Afficher p
16
prérequis : calcul de pourcentages par coefficients
■ Comprendre et analyser un algorithme préexistant ■ Boucle itérative
■ Mettre au point une solution algorithmique
Le 1er janvier 2013, la dirigeante d’une société promet à ses actionnaires une diminution des coûts de
production de 5 % par mois.
Pour les convaincre de la soutenir, elle met en œuvre l’algorithme suivant :
22
F onctIons
a. Pour une entrée C = 100 et N = 5, compléter le tableau ci-dessous qui donne les valeurs affichées par
l’algorithme.
I 1 2 3 4 5
CF 95 90,25 85,74 81,45 77,38
b. Proposer un algorithme qui affiche le nombre de mois nécessaires pour diviser par deux les coûts de
production.
K prend la valeur 1
I prend la valeur 0
Tant que K > 0,5
I prend la valeur I + 1
K prend la valeur 0,95 × K
Fin tant que
Afficher le nombre I
17
prérequis : puissance entière
■ Comprendre et analyser un algorithme préexistant ■ Boucle conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement
L’algorithme ci-contre, écrit en Python, renvoie une valeur y pour tout couple (x ; n)
où n est un entier naturel.
a. Indiquer dans le tableau ci-dessous la valeur renvoyée pour chacun des couples
(x ; n) correspondant.
Entrée x 2 5 3
Entrée n 0 2 3
Sortie y 1 25 27
b. Quelle est l’expression de la valeur renvoyée par l’algorithme en fonction de x et de n ? Justifier la
réponse.
La valeur renvoyée est xn, car à chaque passage dans la boucle le résultat est multiplié par y ; et il y a
n passages car i prend successivement les valeurs n, n – 1, n – 2, … , 2, 1.
18
prérequis : calcul algébrique
■ Comprendre et analyser un algorithme préexistant ■ Boucle conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement
■ Mettre au point une solution algorithmique
L’algorithme ci-dessous, écrit en Python, renvoie une valeur y pour tout n entier naturel.
a. Expliquer pourquoi cet algorithme donne, sans effectuer un produit, le carré de l’entier n.
Le carré est obtenu car à chacun des n passages dans la boucle on ajoute n à y
(n au départ vaut 0).
b. Proposer un algorithme qui calcule le cube d’un entier n, toujours sans effectuer de produit.
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
19
prérequis : Fonction carré, longueur d’un segment dans un repère
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Adapter un algorithme aux contraintes du langage de programmation ■ Boucle itérative
Dans le repère orthonormal ci-dessous, la courbe tracée est celle de la fonction f définie sur l’intervalle
[0 ; 1] par f(x) = x2. y
1
I 𝒞𝒞f
0 1 x
La distance entre les points A et B, avec A(xA ; yA) et B(xB ; yB), est égale à ( x B − x A )2 + ( y B − y A )2 .
a. Entourer, parmi les valeurs proposées, la distance OI avec I ; .
1 1
2 4
5
• 0,25 • 0,5 • • 2
4
b. On donne l’algorithme suivant :
Entrer un entier n supérieur ou égal à 1
a prend la valeur 0
x1 prend la valeur 0
1
x2 prend la valeur x1 +
n
Pour i allant de 1 à n
y1 prend la valeur (x1)2
y2 prend la valeur (x2)2
a prend la valeur a + ( x2 − x1 )
2
+ ( y2 − y1 )
2
x1 prend la valeur x2
1
x2 prend la valeur x1 +
n
Fin pour
Afficher a
Pour une entrée de n qui vaut 2, compléter le tableau ci-dessous qui indique les valeurs des variables en
fin de boucle.
i y1 y2 x1 x2 a
5
1 0 0,25 0,5 1 ≈ 0,559
4
5 + 113
2 0,25 1 1 1,5 ≈ 1,46
4
24
F onctIons
c. Programmer cet algorithme, puis donner la valeur affichée pour a lorsque n = 10.
On trouve : a ≈ 1,478.
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
Une entreprise produit des appareils électroménagers. Le bénéfice réalisé par la fabrication et la vente
de x objets est égal à :
B(x) = −3x2 + 76x − 100 pour x appartenant à l’intervalle [5 ; 20].
a. Proposer un algorithme qui permet de trouver le nombre d’appareils à produire pour que le bénéfice
de l’entreprise soit maximal.
b prend la valeur 0
Pour i allant de 5 à 20
y prend la valeur B(i)
Si y > b alors
x prend la valeur i
b prend la valeur y
Fin si
Afficher x et b
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
21
prérequis : Image par une fonction
■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
■ Boucle itérative
50
La fonction f est définie sur ℝ\{– 50} par f ( x ) =
.
x − 50
a. Proposer un algorithme qui donne le nombre d’entiers dans [0 ; 100] dont l’image par f est un entier.
n prend la valeur 0
Pour i allant de 0 à 100
Si i ≠ 50 alors
50
y prend la valeur
i − 50
Si y entier alors
n prend la valeur n + 1
Fin si
Fin si
Fin pour
Afficher n
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
22
prérequis : Variations d’une fonction polynôme de degré 2
■ Comprendre et analyser un algorithme préexistant ■ Instruction conditionnelle
■ Modifier un algorithme
■ Mettre au point une solution algorithmique
Soit f la fonction définie sur ℝ par f (x) = ax2 + bx + c où a, b et c sont des nombres réels.
x 2 x 2
f f
b. L’algorithme suivant donne-t-il une sortie toujours fausse ? Toujours vraie ? Expliquer.
Entrer le nombre a
Si a = 0 alors
Afficher « f est une fonction affine »
Sinon
Afficher « f est décroissante puis croissante »
Fin si
L’algorithme donne une sortie vraie si a ⩾ 0 mais une sortie fausse si a < 0.
26
F onctIons
c. Modifier l’algorithme de la question précédente pour qu’il donne des informations sur les variations
de f dans les différents cas possibles selon les coefficients a, b ou c.
23
prérequis : position relative de courbes
■ Comprendre et analyser un algorithme préexistant ■ Instruction conditionnelle
■ Modifier un algorithme
■ Adapter un algorithme aux contraintes du langage de programmation
b. Modifier l’algorithme précédent pour qu’il donne pour l’ensemble des entiers n compris entre 0 et
2013, la valeur la plus grande de la différence f(n) − g(n).
d prend la valeur 0
Pour n allant de 0 à 2013
Si g(n) − f(n) > d alors
d prend la valeur g(n) − f(n)
n prend la valeur n + 1
Fin si
Fin pour
Afficher d et n
La valeur la plus grande de f (n) − g(n) est 2 026,08 et est atteinte pour n = 1 006 et pour n = 1 007.
24
prérequis : position relative de courbes
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Boucle conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation
5x + 5
50 y
Soit f la fonction définie sur l’intervalle [0 ; +3[ par f ( x ) = , 𝒞 sa courbe
2x + 1
10 𝒞𝒞
4
représentative dans un repère orthogonal du plan et D la droite d’équation
y = 2,5. 2 D
5x + 5
50
Un logiciel de calcul formel donne des informations sur la différence − 2,5 :
2x + 1
10
0 2 4 6 8 x
Programmer cet algorithme sur la calculatrice et constater que la valeur affichée est 0.
Équations et inéquations
25
prérequis : résolution d’équations
■ Modifier un algorithme ■ Affectation, variable
■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
On souhaite résoudre une équation du type ax2 = b où a et b sont des nombres réels donnés.
28
F onctIons
26
prérequis : résolution d’équations
■ Identifier les données d’entrée, de sortie, le traitement ■ Affectation, variable
■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
On veut pouvoir vérifier automatiquement si des valeurs données sont solutions d’une équation quel-
conque de la forme A(x) = B(x), où A(x) et B(x) sont des expressions algébriques.
3
1 Effectuer cette vérification avec A(x) = 2x2 – x – 13 et B( x ) = x − avec les valeurs suivantes :
x
a. a = 2.
3
Pour a = 2, A(2) = 2 × 22 – 2 – 13 = –7 et B(2) = 2 – = 0,5 ≠ –7.
2
2 n’est pas solution de l’équation A(x) = B(x).
b. a = 3.
3
Pour a = 3, A(3) = 2 × 32 – 3 – 13 = 2 et B(3) = 3 – = 2.
3
3 est solution de l’équation A(x) = B(x).
2 On veut créer un algorithme permettant de tester si une valeur est solution d’une équation quelconque
de la forme A(x) = B(x).
27
prérequis : résolution d’équations et d’inéquations
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Instruction conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement ■ Boucle conditionnelle
■ Valider la solution algorithmique
■ Adapter un algorithme aux contraintes du langage de programmation
À chaque écluse, il laisse 1 % de son chargement et 5 sacs de farine, il lui reste donc a × 0,99 – 5.
L’égalité « a=a*0.99– 5 » donne la nouvelle affectation de a.
2 Que représente i ?
Chaque boucle comporte une multiplication et deux soustractions, soit au total 63 multiplications et
126 soustractions.
30
activités algorithmiques - géométrIe
Vecteurs et repères
28
prérequis : coordonnées d’un vecteur, norme d’un vecteur
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme
Cynthia lui fait remarquer qu’avec une ligne supplémentaire, elle obtiendrait
aussi la norme du vecteur nAB.
29
prérequis : colinéarité de vecteurs, alignement de trois points
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Instruction conditionnelle
■ Valider la solution algorithmique
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
c. Les points A(3 ; −1), B(−1 ; 2) et C(−4 ; 5) sont-ils alignés ?
Les points A, B et C ne sont pas alignés.
30
prérequis : Distance dans un repère orthonormé
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Instruction conditionnelle
■ Valider la solution algorithmique
Pour tester si un triangle ABC est isocèle à partir de ses sommets repérés, on construit l’algorithme suivant :
1 Tester l’algorithme avec les points A(– 1 ; – 1), B(7 ; 3) et C(2 ; 3). Qu’obtient-on en sortie ?
Le test « Si a = b » est vrai, donc l’algorithme affiche « Le triangle ABC est isocèle en C ».
2 a. Que représentent les variables a, b et c ?
Les variables a, b et c représentent les carrés des longueurs BC, AC et AB.
b. Pourquoi le calcul de c n’est-il pas réalisé en même temps que celui de a et b ?
Le calcul de c n’est nécessaire que si a et b ne sont pas égaux.
3 a. Modifier l’algorithme afin qu’il affiche plutôt « Le triangle ABC est équilatéral » lorsque c’est le cas.
32
g éom étrIe
b. Tester l’algorithme avec les points A(2 ; 3), B(−2 ; 0) et C(2,5 ; −2). Qu’obtient-on en sortie ?
On obtient en sortie « Le triangle ABC n’est pas isocèle ».
31
prérequis : parallélogramme, angles
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Boucle itérative
■ Valider la solution algorithmique ■ Boucle conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation
Dans cet exercice, on utilise le logiciel GéoTortue (les fonctions et commandes de ce module sont expli-
quées en introduction de ce cahier p. 9).
3 Définir la procédure eolienne, qui construit une figure constituée d’une répétition de n parallélo-
grammes de dimensions 50 et 80, n étant variable. Une eolienne est un multitruc dont seul un parallé-
logramme sur deux est dessiné.
Équations de droites
32
prérequis : équations de droites
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Boucle itérative
33
prérequis : équations de droites (pente, coefficient directeur)
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Boucle itérative
■ Identifier les données d’entrée, de sortie, le traitement
■ Valider la solution algorithmique
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
34
g éom étrIe
34
prérequis : équations de droites, positions relatives de deux droites
■ Modifier un algorithme ■ Affectation, variable
■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
On souhaite trouver, s’il existe, le point d’intersection des deux droites d’équations y = ax + b et y = mx + p,
avec a, b, m et p des réels donnés.
1 En supposant que ces deux droites sont sécantes, donner la formule permettant de calculer x en fonction
de a, b, m et p.
Un couple (x ; y), vérifiant les équations y = ax + b et y = mx + p, est tel que ax + b = mx + p,
p−b
d’où (a – m)x = p – b. En conclusion, x = .
a−m
2 Tester la séquence ci-dessous, écrite en Python, pour les droites d’équations y = x + 2 et y = 3x + 4.
b. Tester ce programme avec les droites d’équations y = −5x + 4 et y = −5x − 3. Donner le résultat affiché.
Le résultat affiché en sortie est : « Les droites sont strictement parallèles ».
1 a. Calculer BB1.
Dans le triangle ABB1 , on a immédiatement BB1 = sin .
6
b. Exprimer B1B2 en fonction de BB1 puis, de façon générale, la longueur d’un segment du trajet en fonc-
tion de la longueur du segment précédent de la ligne brisée.
B1B2 = BB1 × cos . De façon générale Bk + 1Bk = BkBk – 1 × cos pour tout entier k ⩾ 2.
6 6
c. On souhaite écrire un algorithme qui calcule une valeur approchée du trajet. Compléter le bloc de la
boucle conditionnelle dans le programme écrit en Python ci-dessous.
i = i + 1
trajet=L+trajet*cos(pi/6)
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
36
g éom étrIe
36
prérequis : théorème de pythagore
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Instruction conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement
■ Mettre au point une solution algorithmique
■ Valider la solution algorithmique
Dans un triangle rectangle ABC, la donnée des longueurs de deux de ses côtés permet de calculer la
longueur du troisième côté.
1 Dans les deux cas ci-dessous, faire une figure et calculer la longueur BC.
a. On sait que les segments [AB] et [AC] sont les côtés de l’angle droit et on donne AB = 6 cm et AC = 4 cm.
b. On sait que l’hypoténuse est connue et on donne AB = 6 cm et AC = 4 cm.
a. C b. A
A B C B
BC = AB2 + AC 2 = 6 2 + 4 2 = 52 = 2 13 BC = AB2 − AC 2 = 6 2 − 4 2 = 20 = 2 5
a. Exécuter cet algorithme dans les deux cas vus précédemment, et remplir le tableau
ci-dessous.
H X Y Z
Cas n° 1 0 6 4 13
2√
Cas n° 2 1 6 4 5
2√
b. Que donne cet algorithme si, en entrée, on annonce que l’hypoténuse est connue et que AB = 4 cm
et AC = 6 cm ?
L’hypoténuse est alors AC, mais avec H = 1, l’algorithme calculera AB2 − AC 2 qui n’existe pas car AB < AC.
c. Réécrire l’algorithme en langage naturel pour qu’il soit fonctionnel dans toutes les situations.
Afficher « Hypoténuse connue : 0 ou 1 ? », H prend la valeur de la réponse
Afficher « AB », X prend la valeur de la réponse
Afficher « AC », Y prend la valeur de la réponse
Si H = 0 alors
Z prend la valeur X 2 + Y 2
Sinon
Si X > Y alors
Z prend la valeur X 2 − Y 2
Sinon
Z prend la valeur Y 2 − x 2
Fin si
Fin si
Afficher Z
Remarque : le cas où AB = AC fonctionnera aussi en retournant Z = 0, le cas d’un triangle où B et C
sont confondus.
37
prérequis : langage géotortue (voir p. 9)
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Boucle itérative
■ Valider la solution algorithmique
■ Adapter un algorithme aux contraintes du langage de programmation
Boris, Chloé et Donan, qui ont commis une erreur de programmation, obtiennent les figures suivantes :
a. Écrire, dans le même langage de programmation, les programmes erronés des trois élèves.
b. Ajouter des instructions à l’algorithme d’Alex pour qu’il revienne au point A une fois la figure réalisée.
On ajoute les instructions : > tg 45
> av 50*sqrt(2)
Euler a établi que tous les solides convexes* respectaient la formule suivante :
où A est le nombre d’arêtes,
S+F=A+2 S est le nombre de sommets,
F est le nombre de faces.
On souhaite programmer un algorithme qui calcule le nombre d’arêtes d’un solide convexe.
* On appelle solide convexe un solide tel que tout segment reliant deux points intérieurs au solide reste
entièrement à l’intérieur du solide.
38
g éom étrIe
3 Calculer à l’aide de l’algorithme le nombre d’arêtes des solides convexes suivants, puis vérifier ces résul-
tats sur les figures.
a. b. c.
La pyramide de Khéops est construite avec des pavés pesant 2,5 tonnes chacun. On estime que les zones
creuses de la pyramide représentent 20 % de l’ensemble. On veut déterminer la masse de cette pyramide.
La pyramide est à base carrée. On dénombre 212 pavés sur le côté du premier étage, 211 pavés sur le
côté du deuxième étage, et ainsi de suite, à chaque nouvel étage, un pavé de moins par côté qu’à l’étage
précédent.
N prend la valeur 212
S prend la valeur 0
Tant que N > 0
S prend la valeur S + N 2
N prend la valeur N – 1
Fin tant que
M prend la valeur 0,8 × 2,5 × S
Afficher M
REMARQUE En réalité, la pyramide de Khéops a une masse estimée à 5 000 000 de tonnes, car elle repose
sur une petite butte qui a permis d’économiser bon nombre de blocs de pierre !
40
prérequis : les volumes des solides usuels
■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Instruction conditionnelle
■ Identifier les données d’entrée, de sortie, le traitement
Voici un algorithme écrit en langage naturel permet- Afficher « Quel type de solide ? cône = 1,
tant de calculer les volumes des solides de révolution. sphère = 2, cylindre = 3 »
S prend la valeur de la réponse
Aymeric a programmé cet algorithme. Il propose à
Si S = 1 alors
Emma de tester son programme. Emma, qui veut Demander r et h
s’amuser, propose le nombre 4 en entrée. Elle annonce : 1
V prend la valeur × π × r 2 × h
« Ton programme ne fonctionne pas : il calcule un 3
volume même quand il ne connaît pas le solide ! ». Sinon
Si S = 2 alors
a. Expliquer ce qu’a fait le programme. Demander r
4
V prend la valeur × π × r 3
Si S = 4, le programme exécute la seconde 3
Sinon
instruction « Sinon » car S ≠ 1 et S ≠ 2. Demander r et h
V prend la valeur π × r 2 × h
Il calcule donc le volume d’un cylindre. Fin si
Fin si
Afficher V
b. Modifier le bloc d’instructions écrit en bleu dans l’algorithme afin que le programme affiche
« Mauvaise saisie, recommencez » en cas d’erreur de saisie.
Sinon
Si S = 3 alors
Demander r et h
V prend la valeur π × r2 × h
Sinon
Afficher « Mauvaise saisie, recommencez »
Fin si
Fin si
40
activités algorithmiques
statIstIques et probabIlItés
Statistiques
41
prérequis : probabilités élémentaires
■ Identifier les données d’entrée, de sortie, le traitement ■ Instruction conditionnelle
■ Mettre au point une solution algorithmique ■ Boucle itérative
■ Adapter un algorithme aux contraintes du langage de programmation
Au début de l’année 2013, des statistiques donnant l’audience de chaînes de télévision sont les suivantes :
Nous supposerons que ces chiffres restent stables dans les mois suivants.
On peut modéliser la simulation par un tirage d’une boule dans une urne contenant 1000 boules, dont 255
rouges, 170 vertes, 110 jaunes et 465 blanches par exemple.
b. Proposer un algorithme qui permet de simuler ce choix. Programmer cet algorithme sur une calcu-
latrice ou un logiciel.
Avec AlgoBox :
c. On choisit maintenant 1000 spectateurs. Proposer un algorithme qui simule ce choix et qui renvoie le
nombre de spectateurs qui ont choisi les chaînes 1, 2 et 3.
En Python :
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
Statistiques . 41
stat Ist Iq u es e t p r o b a b I l I t é s
42
prérequis : paramètres d’une série statistique
■ Comprendre et analyser un algorithme préexistant ■ Instruction conditionnelle
■ Modifier un algorithme
■ Adapter un algorithme aux contraintes du langage de programmation
Demander un nombre N
Créer une liste L à N éléments (notés dans la suite L(1),…, L(N))
Demander N nombres et les affecter aux N variables L(1), L(2),…, L(N)
Ordonner par ordre croissant les termes de la liste L
Si N est impair alors
N + 1
MM prend la valeur L
2
Sinon N N
L + L + 1
2 2
MM prend la valeur
2
Fin si
Afficher MM
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
43
prérequis : tirage sans remise
■ Identifier les données d’entrée, de sortie, le traitement ■ Instruction conditionnelle
■ Mettre au point une solution algorithmique ■ Boucle itérative
■ Adapter un algorithme aux contraintes du langage de programmation
En statistiques, on est souvent amenés à étudier un échantillon d’une population. Notons 1, 2, 3,…, n
(n est un entier naturel non nul) les individus de la population étudiée. Supposons que l’on veuille extraire
s éléments de cette population (0 < s < n). Il faut donc tirer au hasard et sans remise s entiers de l’en-
semble {1, 2,…, n}. Dans la pratique, on crée une liste L de taille n, on choisit un nombre i au hasard, que
l’on stocke dans la liste L et que l’on élimine des tirages suivants.
a. En notant rand une fonction qui renvoie un nombre aléatoire de [0 ; 1[, écrire une fonction qui renvoie
un nombre entier aléatoire entre 1 et n.
INT(n*rand())+1, où INT désigne la partie entière.
42
statIstIq u e s e t p robabIlItés
En Scilab :
REMARQUE
Voir algorithme
Le module lycée de Scilab contient la fonction tirage_entier(p,a,b)
corrigé sous AlgoBox
qui renvoie un vecteur de p entiers aléatoires compris entre a et b. sur le site Odyssée.
44
prérequis : tirage sans remise
■ Identifier les données d’entrée, de sortie, le traitement ■ Instruction conditionnelle
■ Mettre au point une solution algorithmique ■ Boucle itérative
■ Adapter un algorithme aux contraintes du langage de programmation
Abel et Berthe jouent au jeu suivant : on tire au hasard 6 nombres de l’ensemble {1, 2,…, 49}. Abel gagne
la partie si le tirage contient deux entiers consécutifs, Berthe gagne dans les autres cas.
Simuler 1000 parties consécutives. Le programme renverra le nombre de parties gagnées par Abel (on
pourra utiliser le programme de l’exercice précédent).
En Scilab :
REMARQUE
La fonction trier est une fonction du module lycée de Scilab qui trie
dans l’ordre croissant une liste de nombre. La fonction loto(a,b)
peut s’obtenir en transformant le script de l’exercice précédent en Voir algorithme
fonction qui renvoie la liste M. corrigé sous AlgoBox
sur le site Odyssée.
Statistiques . 43
stat Ist Iq u es e t p r o b a b I l I t é s
Probabilités
45
prérequis : calcul de fréquence
■ Comprendre et analyser un algorithme préexistant ■ Instruction conditionnelle
■ Modifier un algorithme ■ Boucle itérative
■ Adapter un algorithme aux contraintes du langage de programmation
Voici ci-dessous un algorithme programmé sur calculatrice permettant de lancer N fois un dé à 6 faces et
de calculer la fréquence d’apparition du 6.
Sur TI-83+ : Sur Casio Graph35+ :
44
statIstIq u e s e t p robabIlItés
46
prérequis : équations de droites
■ Comprendre et analyser un algorithme préexistant ■ Boucle itérative
■ Modifier un algorithme ■ Instruction conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation
j
O i
j j
O i O i
b. Expliquer pourquoi les points que l’on peut atteindre en p pas sont alignés.
Si en p pas l’on réalise x pas horizontalement et y pas verticalement, on a alors x + y = p.
D’où y = –x + p ; les points vérifiant cette égalité sont sur une droite.
3 Pour aller dans n’importe quelle direction sur le quadrillage, on modifie l’algorithme en choisissant un
entier au hasard entre 1 et 4, et en lui associant l’une des quatre directions.
a. Écrire cet algorithme en langage naturel.
Entrer un entier naturel pas
x et y prennent la valeur 0
Pour I allant de 1 à pas
A prend une valeur aléatoire entière entre 1 et 4
Si A = 1 alors
Tracer le segment reliant les points de coordonnées (x ; y) et (x + 1 ; y)
x prend la valeur x + 1
Fin si
Si A = 2 alors
Tracer le segment reliant les points de coordonnées (x ; y) et (x − 1 ; y)
x prend la valeur x − 1
Fin si
Si A = 3 alors
Tracer le segment reliant les points de coordonnées (x ; y) et (x ; y + 1)
y prend la valeur y + 1
Fin si
Si A = 4 alors
Tracer le segment reliant les points de coordonnées (x ; y) et (x ; y − 1)
y prend la valeur y − 1
Fin si
Fin pour
Probabilités 45
stat Ist Iq u es e t p r o b a b I l I t é s
b. Programmer cet algorithme avec AlgoBox puis exécuter-le pour 1000 pas.
47
prérequis : calculer une probabilité avec un arbre de probabilités
■ Comprendre et analyser un algorithme préexistant ■ Boucle itérative
■ Modifier un algorithme ■ Boucle conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation ■ Instruction conditionnelle
Le chevalier de Mérée (1607-1684) prétendait qu’il fallait lancer quatre fois le dé pour avoir plus de
chance d’obtenir un 6 que de ne pas en obtenir.
46
statIstIq u e s e t p robabIlItés
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.
3 Pour en avoir le cœur net, Thibaut construit un arbre de probabilité, en considérant qu’à chaque lancer
il n’y a que deux issues : obtenir 6 ou non.
a. Construire un arbre représentant quatre lancers successifs.
Probabilités 47
stat Ist Iq u es e t p r o b a b I l I t é s
48
prérequis : notion de probabilité et loi des grands nombres
■ Comprendre et analyser un algorithme préexistant ■ Boucle itérative
■ Instruction conditionnelle
Un professeur demande à ses élèves de lancer une pièce de monnaie 50 fois et de consigner la liste des
résultats « pile » (P) ou « face » (F). Voici la liste de David :
48