TD Algorithmique Corriges

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 48

collection odyssée

Cahier d’Activités 2de


Algorithmique
Sous la direction de

é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

programme de mathématiques 2009

Édition réservée à l’enseignant.


Elle comporte des corrigés en rose qui ne figurent pas dans la version élève.
avant-propo s
« Exercez-vous pour l’amour du ciel
à exécuter de petites choses. »
Épictète (50-130)

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

© Hatier, Paris 2013 - ISBN : 978-2-218-96181-6 ISBN 978-2-218-96182-3


Toute représentation, traduction, adaptation ou reproduction, même partielle, par tous procédés, en tous pays, faite sans autorisation préalable est illicite
et ­exposerait le contrevenant à des poursuites judiciaires. Réf.‑: loi du 11 mars 1957, alinéas 2 et 3 de l­’article 41. Une représentation ou reproduction
sans autorisation de l’éditeur ou du Centre Français d’exploitation du droit de Copie (20, rue des Grands Augustins, 75006 Paris) constituerait une contrefaçon
sanctionnée par les articles 425 et suivants du Code Pénal.
Initiation à l’algorithmique
1 Qu’est-ce qu’un algorithme ?
Un algorithme est une liste finie de processus élémentaires, appelés instructions élémentaires, amenant à la
résolution d’un problème.

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-Germain- La Ile de la Cité


des-Prés Sei
Saint-Michel ne École Nationale
Saint-Germain-des-Prés de la Magistrature
Qu
Saint-Michel- a id Notre-Dame
Odéon Notre-Dame eM
Mabillon on de Paris
teb
ell
rue de Tournon

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

Jardin du Panthéon rue Clov


Luxembourg is
Guy

Pan
Luxembourg théo Lycée
n
-Lu

Henri IV
ssa
l

c
iche

rue Auguste Comte


t-M

Rue Tournefort
Ru
av. de l’Observatoire

Université Paris II Place


Rue Mouffeta
e
Sain

Panthéon Assas Monge


Lh
om
bd

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

a. Où souhaite se rendre Yasmine ?


Yasmine souhaite se rendre au Panthéon.
b. Une fois sa visite terminée, elle demande à nouveau son chemin à une fleuriste qui lui indique :
« Repartez dans la direction du jardin du Luxembourg et prenez la quatrième à droite. Continuez tout droit, fran-
chissez la Seine puis tournez à la première à droite, avancez et vous y êtes. »

Quelle est la nouvelle étape de Yasmine ?


Notre-Dame de Paris.
c. Indiquer de la même façon à Yasmine le chemin à suivre pour retourner à son point de départ.
Faire demi-tour et longer la Seine, prendre le deuxième pont à gauche, aller tout droit jusqu’au bout du
parc du Luxembourg, prendre à droite puis la deuxième à gauche.

. 3
InItIatIon à l’algorIthmIque

Voici quelques algorithmes déjà rencontrés au cours de votre scolarité.


• L’algorithme de la division euclidienne
C’est une suite finie d’instructions qui calculent le quotient et le reste de la division de deux entiers. On répète une
succession d’opérations tant que le quotient partiel est supérieur ou égal au diviseur.
• L’algorithme d’Euclide
On a deux nombres.
C’est une suite finie de divisions euclidiennes aboutissant au
calcul du PGCD de deux entiers.
On divise le plus grand
En effet, pour déterminer le PGCD de deux entiers, on applique par le plus petit.
l’algorithme ci-contre.
Non Le reste Oui
vaut-il
zéro ?

On divise le diviseur Le diviseur


par le reste. (ou le reste précédent)
est le PGCD cherché.
EXEMPLE
Calculons le PGCD de 946 et 444 :

946 444 444 58 58 38 38 20 20 18 18 2


58 2 38 7 20 1 18 1 2 1 0 9

Le PGCD de 946 et 444 est donc 2.

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 :

1. L’entrée des données


Dans cette étape figure la lecture des données qui seront traitées au cours de l’algorithme. Ces données peuvent
être saisies au clavier ou bien être lues dans un fichier annexe.
2. Le traitement des données
C’est le cœur du programme. Il est constitué d’une suite d’instructions, parmi lesquelles les différentes opéra-
tions sur les données, qui permettent de résoudre le problème.
3. La sortie des résultats
C’est le résultat obtenu qui peut être affiché à l’écran ou enregistré dans un fichier.

4
InItIatIon à l’algorIthmIque

3 L’affectation
Une des instructions fondamentales est l’affectation d’une valeur à une variable.

L’affectation consiste à attribuer 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

EXEMPLE 3 La suite de Syracuse


Considérons l’algorithme en langage naturel :
Entrée : Un entier naturel a
Traitement et Sortie : Si a est pair alors on affiche la valeur a÷2
Si a est impair alors on affiche la valeur 3a+1

Cet algorithme peut, par exemple, s’écrire à l’aide du logiciel AlgoBox ou encore en langages Python ou TI :
AlgoBox Python* TI

* En Python, « a%2 » désigne le reste de la division euclidienne de l’entier a par 2.


ATTENTION !
Il ne faut pas confondre l’égalité et l’affectation.
En Python, « = » est le symbole d’affectation, « = = » est celui de l’égalité. (▶ voir tableau à la fin du cahier).

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.

EXEMPLE 2 La « suite de Fibonacci »


La suite de Fibonacci est une suite de nombres, dont les deux premiers sont égaux à 1 et chaque terme suivant est
égal à la somme des deux termes qui le précèdent. Les premiers termes de cette suite sont :
1, 1, 2 (=1+1), 3 (=1+2), 5 (=2+3), 8 (=3+5), 13 (=5+8),...
Le programme ci-dessous affiche les premiers termes de cette suite.
On pourra l’exécuter pas à pas afin de comprendre le rôle de chaque variable.

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 ?

La dernière valeur de la variable x est 20.

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

for variable in séquence :


opérations à répéter

EXEMPLE
Calcul de la somme des entiers de 1 à 200 en langage Python :

REMARQUE L’instruction range(201) désigne la séquence des entiers 0, 1, 2, ..., 200.


Si a et b sont des entiers (avec a < b), range(a, b) désigne la séquence des entiers n vérifiant a ⩽ n < b.

APPLICATION 7
Écrire un algorithme qui affiche les lignes suivantes :

* ****
** Puis ***
*** **
**** *

REMARQUE Sous Python, l’instruction (3*’*’) affiche « *** ».

APPLICATION 8
Que réalise cet algorithme écrit en Python ?

Ce programme affiche les tables de multiplication des entiers de 2 à 9.


REMARQUE On peut toujours remplacer une boucle itérative par une boucle conditionnelle :
• Si on connaît le nombre de passages dans la boucle, il suffit de définir une variable compteur qui compte le
nombre de passages dans la boucle. Il faudra penser à initialiser correctement ce compteur et à l’incrémenter à
l’intérieur de la boucle.
• Si on ne connaît pas le nombre de passages dans la boucle, il faut déterminer la condition d’arrêt et s’assurer que
cette dernière sera atteinte.

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 :

def nomdelafonction (paramètres) :


.........................
bloc d’instructions
.........................

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.

En Python : Avec Scilab :

8 Utilisation de GéoTortue (langage logo)


▶ voir le site geotortue.free.fr

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 :

Instruction et syntaxe Action


av L Avance d’une longueur L
re L Recule d’une longueur L
tg a Tourne à gauche de a degrés
td a Tourne à droite de a degrés
lc Lève le crayon traceur
bc Abaisse le crayon
vg Vide graphique, efface tous les parcours
tlp x y Téléporte la tortue au point de coordonnées (x, y)
rep n [bloc] Répète n fois un bloc de commandes
si (conditon) alors [actions]
Instruction conditionnelle
sinon [actions]
tant_que (condition) alors [actions] Boucle conditionnelle

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

L’exécution de carre 100 dessinera un carré de côté 100.


On peut ainsi réaliser des dessins géométriques plus complexes :

Une marche aléatoire :

APPLICATION 11
Réaliser les figures suivantes :

Fig. 1 Fig. 2 Fig. 3

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

D’après brevet des collèges 2008


On donne le programme de calcul suivant :

Choisir un nombre
Multiplier ce nombre par 3
Ajouter le carré du nombre choisi
Multiplier par 2
Écrire le résultat

1 Calculer la valeur exacte du résultat dans les cas ci-dessous.


a. Le nombre choisi est – 5. 20
b. Le nombre choisi est 5 . 6 5 + 10
2 Écrire ci-dessous, dans la syntaxe de votre choix, le programme précédent qui prend en entrée un
nombre A et qui renvoie le nombre calculé.

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

3 Quels nombres peut-on choisir pour que le résultat obtenu soit 0 ?

Il suffit de résoudre l’équation 6x + 2x2 = 0, dont les solutions sont 0 et – 3.

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

2 Quelles sont les contraintes sur les entiers b et d ?


Les nombres b et d doivent être non nuls.
3 Modifier le programme précédent afin qu’il renvoie un message d’erreur lorsque ces contraintes ne sont
pas respectées.

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 :

Rang de l’itération Longueur du 1er côté Longueur du 2e côté


1 2 1
3 4
2
2 3
3 1,416 1,411
4 1,414 215 1,414 211
5 1,414 211 356 237 31 1, ,414 211 356 237 31

Que peut-on conjecturer ?


Les rectangles convergent vers le carré de côté 2.

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.

3 À l’aide de ce nouveau programme, déterminer une valeur approchée de 11 à 10−13 près.

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

Voici un algorithme qui définit une suite de nombres :

Prendre un entier naturel A


Tant que A ≠ 4, effectuer les instructions suivantes :
Si A se termine par le chiffre 4, barrer ce chiffre
Si A se termine par le chiffre 0, barrer ce chiffre
Sinon multiplier A par 2
Fin tant que
Afficher A

1 Effectuer cet algorithme pas à pas en prenant différentes valeurs initiales de A.

Pour N = 15, par exemple, l’algorithme renvoie la suite : 30 ; 3 ; 6 ; 12 ; 24 ; 2 ; 4.

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.

5   


prérequis : calcul algébrique

■ Comprendre et analyser un algorithme préexistant ■ Boucle conditionnelle


■ Mettre au point une solution algorithmique
■ Adapter un algorithme aux contraintes du langage de programmation

Voici un programme écrit à l’aide du logiciel Scilab :

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

Généralités sur les fonctions


6    
prérequis : calcul approché

■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable


■ Valider un programme simple

Un algorithme est saisi sur une calculatrice.

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

On donne deux algorithmes programmés en Xcas :


Algorithme n°1 : Algorithme n°2 :

Généralités .sur .les .fonctions 15


F o n c t Io n s

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

On souhaite calculer le prix d’un kilo de mangues après 10 augmentations successives.

1 a. Cas n°1 : ces augmentations successives sont de 5 %.


Compléter l’algorithme suivant pour qu’il permettre de répondre à la question posée.

Entrer un réel positif p


Pour i allant de 1 jusqu’à 10

p prend la valeur 1,05 × p

Fin pour
Afficher p

b. Cas n°2 : ces augmentations successives s’élèvent à un montant fixe de 0,30 €.


Écrire l’algorithme qui permet de répondre à la question posée.

Entrer un réel positif p


Pour i allant de 1 jusqu’à 10
p prend la valeur p + 0,3
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.

Prix du kilo de mangues


après 10 augmentations :
• dans le cas n°1 : environ 8,15 € ;
• dans le cas n°2 : 8 €.

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

On considère l’algorithme suivant :

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

Expliquer pourquoi cet algorithme affiche 5 en sortie.


D’après la représentation graphique, l’inégalité f (x + 1) > f (x) est vraie pour x valant 1, 2, 3 ou 4.
À l’entrée de la boucle, les valeurs successives de la variable x seront donc 1, 2, 3, 4.
À la dernière sortie de la boucle, la variable x vaudra donc 5.
b. Soit g la fonction définie sur l’intervalle [1 ; 5] dont la courbe représentative est donnée ci-dessous.
y
5
4
𝒞𝒞g
3
2
1

0 1 2 3 4 5 x

On considère l’algorithme suivant :

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

Qu’affichera ce deuxième algorithme pour la fonction g ?


L’algorithme affichera : « Le maximum de la fonction g est atteint en 3 ».

Généralités .sur .les .fonctions 17


F o n c t Io n s

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

Soit la fonction f définie sur [0 ; +3[ par f(x) = x(x + 8).


On veut trouver le plus petit entier naturel x tel que f (x) soit plus grand qu’un nombre A que l’on choisit.
Par exemple si A = 25, le nombre x qui convient est x = 3 car f(0) = 0, f(1) = 9 et f(2) = 20 sont inférieurs à
25, alors que f(3) = 33 est supérieur à 25.
y
𝒞𝒞f
40

30

20

10

0 1 2 3 4 5 6 7 x

On propose l’algorithme suivant :

Entrer un réel positif A


x prend la valeur 0
y prend la valeur 0
Tant que y ⩽ A
x prend la valeur x + 1
y prend la valeur x(x + 8)
Fin tant que
Afficher x, y

a. Compléter le tableau ci-dessous des valeurs successives de x et y en faisant fonctionner l’algorithme


pour A = 100.

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 ?

b − a (amplitude de x (centre de f(x) (image du Signe de l’image


Borne a Borne b
l’encadrement) l’intervalle) centre) du centre
2,5 3 0,5 2,75 ≈ 0,083 33 positif
2,5 2,75 0,25 2,625 ≈ −1,333 6 négatif
2,625 2,75 0,125 2,687 5 ≈ −0,024 3 négatif
2,687 5 2,75 0,062 5

Le calcul s’arrête lorsque l’amplitude vaut 0,062 5 et on aura a = 2,687 5 et b = 2,75.

Généralités .sur .les .fonctions 19


F o n c t Io n s

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’affiche d’un marchand de bonbons indique :

• 2 € les 100 g jusqu‛à un kilogramme ;


• 1,50 € les 100 g supplémentaires au-delà de 1 000 g ;
• 15 % de réduction pour toute commande d‛un montant supérieur à 30 €.

L’algorithme suivant était programmé dans la caisse enregistreuse pour indiquer le prix à payer par un
client.

Entrer un nombre positif m


m
n prend la valeur
100
Si n ⩽ 10 alors
p prend la valeur 2 × n
Fin si
Si n > 10 alors
p prend la valeur 2 × 10 + 1,5 × (n − 10)
Fin si
Si p > 30 alors
p prend la valeur 0,85 × p
Fin si
Afficher p

a. Remettre les nombres qui ont été effacés sur l’affiche.


b. Programmer l’algorithme pour compléter le tableau suivant :
Masse achetée
1 500 1 600 1 700 1 800 1 900
(en g)
Pris (en €) 27,50 29,00 25,92 27,20 28,46
c. Un client a payé 26 €. Quelle masse de bonbons a-t-il pu acheter ?
Il a pu acheter 1 400 g mais également 1 706 g.

13    


prérequis : Fonction carré

■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable


■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
■ Boucle itérative

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

x prend la valeur d’un nombre choisi de manière aléatoire dans [0 ; 1]


y prend la valeur d’un nombre choisi de manière aléatoire dans [0 ; 1]
Si x2 < y alors
Afficher « Le point M(x ; y) est au-dessous de 𝒞.»
Fin si

b. Dans le programme ci-contre, écrit en Scilab, l’algorithme de la question a a été


modifié.
Que représente la valeur affichée par cet algorithme ?
La valeur affichée est la proportion du nombre de points situés en dessous de la
courbe lorsque l’on a effectué 100 tirs de fléchette.

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

a. Dans le repère ci-dessous, tracer 𝒞 et D2.


y
D2
3

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

Afficher « Il y a un point d’intersection »

Sinon

Afficher « Il n’y a aucun point d’intersection »

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

Fonctions .de .référence 21


F o n c t Io n s

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

Un site de développement de photos affiche les tarifs suivants :


• de 1 à 25 tirages : 0,15 € par photo et 3 € de frais de port ;
• de 26 à 70 tirages : 0,10 € par photo et 4 € de frais de port ;
• au-delà de 70 tirages : 0,05 € par photo et 7 € de frais de port.

a. Compléter l’algorithme suivant pour qu’il donne le prix à payer quel que soit le nombre de photos
commandées.

Entrer un entier n supérieur ou égal à 1


Si n ⩽ 25 alors
p prend la valeur 3 + 0,15n

Fin si

Si n ⩾ 26 et n ⩽ 70 alors

p prend la valeur 4 + 0,1n

Fin si

Si n ⩾ 71 alors

p prend la valeur 7 + 0,05n

Fin si
Afficher p

b. Programmer cet algorithme à la calculatrice ou dans un langage de programmation, et recopier


ci-dessous cet algorithme.

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 :

Entrer un nombre positif C


Entrer un nombre entier positif N
CF prend la valeur C
Pour I allant de 1 à N
CF prend la valeur 0,95 × CF arrondie à deux décimales
Afficher le couple (I ; CF)
Fin pour

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

Fonctions .de .référence 23


F o n c t Io n s

b. Proposer un algorithme qui calcule le cube d’un entier n, toujours sans effectuer de produit.

Il suffit cette fois-ci d’ajouter n fois la valeur déjà obtenue en y


(n2 + n2 +…+ n2 = n3 lorsqu’il y a n termes à additionner).

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.

Fonctions du second degré


et homographiques
20  
prérequis : maximum d’une liste
 
■ Mettre au point une solution algorithmique ■ Instruction conditionnelle
■ Boucle itérative

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 

b. Programmer cet algorithme.

Le bénéfice est maximal pour x = 13 et vaut 381.

Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.

Fonctions .du .second .degré .et .homographiques 25


F o n c t Io n s

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

b. Programmer cet algorithme.

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.

a. Compléter les tableaux de variations suivants :


• a = 1, b = −4 et c = 3 • a = −1, b = 4 et c = 3

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.

Entrer les nombres réels a et b


Si a = 0 alors
Si b > 0 alors
Afficher « f est affine croissante »
Sinon
Afficher « f est affine décroissante »
Fin si
Sinon
Si a > 0 alors
Afficher « f est décroissante puis croissante »
Sinon
Afficher « f est croissante puis décroissante »
Fin si
Fin si

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

Deux courbes 𝒞f et 𝒞g sont tracées dans le repère ci-contre. Elles corres- y


𝒞𝒞f
pondent aux deux fonctions f et g définies sur ℝ par f(x) = 1,001x2 − 3,026x + 1 400
et g(x) = 0,999x2 + x + 1. 𝒞𝒞g
300
a. Programmer l’algorithme suivant et expliquer ce que signifie le nombre affiché.
200
x prend la valeur 0
100
Tant que f (x) < g(x)
x prend la valeur x + 1
Fin tant que – 10 0 10 20 30 x
Afficher x

Le nombre affiché, 2013, est le plus petit


entier n supérieur à 0 tel que
f (n − 1) < g(n − 1).
f (2012) < g(2012), f (2013) = g(2013) et
f (2014) > g(2014).
Voir algorithme
corrigé sous AlgoBox
sur le site Odyssée.

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.

Fonctions .du .second .degré .et .homographiques 27


F o n c t Io n s

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

a. On donne l’algorithme suivant :


x prend la valeur 0
d prend la valeur 0
Tant que d > 0,001
5x + 5 0
d prend la valeur − 2, 5
2x + 1 0
x prend la valeur x + 1
Fin tant que
Afficher x

Programmer cet algorithme sur la calculatrice et constater que la valeur affichée est 0.

b. Indiquer comment modifier l’algorithme pour qu’il affiche 12 496.


Il faut prendre comme valeur initiale pour d un nombre supérieur à 0,001 pour que la boucle condi-
tionnelle soit parcourue une première fois. Pour d  =  1, le programme à la calculatrice donne comme
affichage 12 496, mais le temps de calcul est très long.

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

1 Compléter la 3e et la 5e ligne de l’algorithme ci-après écrit en langage naturel.

28
F onctIons

Entrer les réels a et b


Si ab < 0 alors

Afficher « L’équation n’admet pas de solution réelle »


Sinon
b b
Afficher « L’équation admet deux solutions : x = ou x = − »
a a
Fin si

2 a. Tester ce programme avec les valeurs a = 0 et b = 3. Que constate-t-on ? Expliquer.


Le programme renvoie une erreur mathématique car il mène à une division par 0.
b. Modifier le programme de manière à pouvoir traiter les situations où le coefficient a est nul.

De nombreuses solutions sont possibles. En voici l’une d’entre elles :


Entrer les réels a et b
Si a ≠ 0 alors
Si ab < 0 alors
Afficher « L’équation n’admet pas de solution réelle »
Sinon
b b
Afficher « L’équation admet deux solutions : x = ou x = − »
a a
Fin si
Sinon
Si b = 0
Afficher « Tout réel x est solution »
Sinon
Afficher « L’équation n’admet pas de solution »
Fin si
Fin si

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

a. Quelles sont les trois entrées nécessaires ?


A(x), B(x) et x.
b. Quels sont les traitements possibles parmi :
x Effectuer des calculs numériques. Effectuer une boucle pour réitérer une action.
x Effectuer un test. x Mettre en œuvre une instruction conditionnelle.

équations .et .inéquations 29


c. Quelles sont les sorties possibles ?
« x est solution de l’équation A(x) = B(x). »
« x n’est pas solution de l’équation A(x) = B(x). »

d. Écrire cet algorithme en langage naturel.

Entrer le réel positif x, les expressions A et B


Calculer A(x) et B(x)
Si A(x) = B(x) alors
Afficher « x est solution »
Sinon
Afficher « x n’est pas solution »
Fin si

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

Au début du xviiie siècle, un marchand veut remonter de Sète jusqu’à


Toulouse pour vendre sa farine. Pour cela, il emprunte le canal du
Midi qui relie la mer Méditerranée et la Garonne. Ce canal est parsemé
de 63 écluses. À chacune d’elles, le marchand doit laisser 1 % de son
chargement en péage royal, puis échanger 5 sacs de farine contre de la
nourriture.
L’objectif est de déterminer la quantité de farine qu’il lui reste à vendre
à son arrivée à Toulouse.

L’algorithme ci-contre, écrit en Python, calcule le nombre de sacs


restants à Toulouse en fonction du nombre a de sacs que le marchand
avait au départ de Sète. On a ensuite effectué quelques tests pour différentes valeurs de a.

1 Expliquer la ligne « a=a*0.99– 5 ».

À 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 ?

i représente le nombre d’écluses restant à franchir.

3 Pour a = 10 000, compléter le tableau des premières étapes de l’algorithme.

Départ 1re écluse 2e écluse 3e écluse 4e écluse 5e écluse

a 10 000 9 895 9 791,05 9 688,14 9 586,26 9 485,4


i 63 62 61 60 59 58

4 Estimer le nombre d’opérations (soustractions, multiplications) réalisées lorsque s’exécute la fonction


nbsacs.

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

Vanessa a programmé sur sa calculatrice le calcul des coordonnées (x ; y) d’un


vecteur nAB à partir de deux points repérés A(m ; n) et B(p ; q).

Cynthia lui fait remarquer qu’avec une ligne supplémentaire, elle obtiendrait
aussi la norme du vecteur nAB.

a. Modifier le programme de Vanessa comme le suggère Cynthia.


On peut ajouter une ligne de la forme : SQRT(X 2 + Y 2) → Z, et ajouter Z dans la liste des résultats à afficher
en sortie.
b. Calculer les coordonnées et la norme du vecteur nAB pour A(4 ; – 8) et B(– 1 ; 2).
On trouve : nAB(– 5 ; 10) et ||nAB|| = 5 5 .

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

Voici ci-contre un algorithme programmé en Python qui


teste la colinéarité de deux vecteurs.
Malheureusement, une erreur s’est glissée dans le
programme.

a. Retrouver et corriger l’erreur.


L’erreur vient du test de colinéarité qui devrait être :
« if m*q − n*p == 0 ».

b. Adapter ce programme pour tester l’alignement de trois


points.

Il faut trois points A, B et C et remplacer le calcul des


coordonnées du vecteur tCD par celui des coordonnées
du vecteur rAC par exemple. Penser bien sûr à changer le
texte dans la conclusion.

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.

Vecteurs .et .repères 31


g éo m ét rIe

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 :

Entrer xa et ya les coordonnées de A


Entrer xb et yb les coordonnées de B
Entrer xc et yc les coordonnées de C
a prend la valeur (xb – xc)2 + (yb – yc)2
b prend la valeur (xa – xc)2 + (ya – yc)2
Si a = b alors
Afficher « Le triangle ABC est isocèle en C »
Sinon
c prend la valeur (xa – xb)2 + (ya – yb)2
Si a = c alors
Afficher « Le triangle ABC est isocèle en B »
Sinon
Si b = c alors
Afficher « Le triangle ABC est isocèle en A »
Sinon
Afficher « Le triangle ABC n’est pas isocèle »
Fin si
Fin si
Fin si

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.

Entrer xa et ya les coordonnées de A


Entrer xb et yb les coordonnées de B
Entrer xc et yc les coordonnées de C
a prend la valeur (xb – xc)2 + (yb – yc)2
b prend la valeur (xa – xc)2 + (ya – yc)2
c prend la valeur (xa – xb)2 + (ya – yb)2
Si a = b alors
Si a = c alors
Afficher « Le triangle ABC est équilatéral »
Sinon
Afficher « Le triangle ABC est isocèle en C »
Fin si
Sinon
Si b = c alors
Afficher « Le triangle ABC est isocèle en A »
Sinon
Si a = c alors
Afficher « Le triangle ABC est isocèle en B »
Sinon
Afficher « Le triangle ABC n’est pas isocèle »
Fin si
Fin si
Fin si

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

1 La procédure truc est définie par les instructions ci-dessous.

a. Construire truc 60 50 80. b. Justifier la nature de l’objet réalisé par la procédure


truc.
On peut démontrer par exemple que les côtés opposés ont
la même longueur et que les angles opposés ont la même
mesure.

2 La procédure multitruc est définie par les instructions ci-dessous.

a. Si n = 4, quelle est la nature des figures qui composent b. Construire multitruc 6.


multitruc 4 ?
Il s’agit de 4 rectangles semblables.

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

Vecteurs .et .repères 33


g éo m ét rIe

Équations de droites
32  
prérequis : équations de droites

■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Boucle itérative

Que réalise la fonction mystere définie dans le programme en


Python ci-contre ?
La fonction mystere permet d’afficher les coordonnées de points
de la droite d’équation y = ax + b pour des valeurs entières
successives de x.

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

Jessica a programmé en Python un algorithme qui permet de déterminer


l’équation d’une droite passant par deux points donnés.

1 La fenêtre ci-contre montre ce programme ainsi que l’essai qu’elle a effectué.

a. Avec quels points A et B a-t-elle testé son programme ?


Avec le point A(2 ; 5) et le point B(4 ; 9).
b. Vérifier le résultat proposé par le programme.
y − yA 9 − 5
On calcule la pente de la droite (AB) : a = B = =2.
xB − x A 4 − 2
La droite (AB) a donc une équation de la forme y = 2x + b.
Le point A appartient à la droite (AB), donc yA = 2xA + b, soit 5 = 2 × 2 + b, d’où b = 1.
L’équation de la droite (AB) est y = 2x + 1.
2 Jessica prête son programme à Azim qui cherche une équation de droite. Il saisit droite(4,5,4,7) mais le
programme lui retourne une erreur. Expliquer ce phénomène.
Ici xB – xA = 4 – 4 = 0, donc le calcul du coefficient directeur est impossible (division par 0).
Ceci est dû au fait que les points A et B ont la même abscisse pour une ordonnée différente, et donc la droite
n’admet pas de pente.
3 Modifier le programme de Jessica afin qu’il tienne compte de la situation rencontrée par Azim.

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.

Donner le résultat affiché en sortie.


Le programme affiche « il y a un couple solution : (–1 ; 1) ».
3 Le programme précédent n’envisage que le cas où il existe un unique point d’intersection.
a. À quelle condition les deux droites sont-elles parallèles ?
Les deux droites sont parallèles si et seulement si a = m.
b. À quelle condition les deux droites sont-elles confondues ?
Les deux droites sont confondues si et seulement si a = m et b = p.
c. Écrire en langage naturel l’algorithme permettant de traiter les trois cas envisageables.
Entrer les nombres a, b, m et p
Si a = m alors
Si b = p alors
Afficher « Les droites sont confondues »
Sinon
Afficher « Les droites sont strictement parallèles »
Fin si
Sinon
p − b
x prend la valeur
a − m
y prend la valeur ax + b
Afficher « Les droites sont sécantes au point de coordonnées (x ; y) »
Fin si

4 a. Programmer en Python l’algorithme de la question 3.c.

Voir algorithme corrigé sous AlgoBox sur le site Odyssée.

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

équations .de .droites 35


g éo m ét rIe

Trigonométrie et triangle rectangle


35  
prérequis : trigonométrie dans le triangle rectangle

■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable
■ Modifier un algorithme ■ Boucle conditionnelle
■ Valider la solution algorithmique

On étudie la trajectoire d’un mobile partant du point B


selon le chemin indiqué sur la figure ci-contre.

Les angles en les points B1, B2, B3, … , B8 sont droits.

Le but de l’exercice est d’estimer la longueur du trajet


BB1 + B1B2 +…+ Bn – 1Bn pour différentes valeurs de l’en-
tier naturel n, nombre de segments de la ligne brisée.
On prend AB comme longueur unité.

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)

d. Faire tourner ce programme pour n = 10, n = 100, n = 10000. Que constate-t-on ?


Pour n = 10 : trajet ≈ 2,965 ; pour n = 100 : trajet ≈ 3,732 ; pour n = 10000 : trajet ≈ 3,732058.
On constate que la longueur du trajet «  tend » vers une valeur finie, dont une valeur approchée est
3,732058.
2 Cas général : écrire un programme qui calcule une valeur approchée du trajet identique au précédent
 1 et la longueur AB sont entrées par l’utilisateur.
dans le cas où une mesure de l’angle BAB

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

2 Étude d’un algorithme

Pour automatiser cette tâche, on propose l’algorithme ci-contre.

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 13
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.

Trigonométrie .et .triangle .rectangle 37


g éo m ét rIe

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

On souhaite dessiner la figure ci-contre à l’aide d’un algorithme, programmé avec


GéoTortue. Le point de départ sera A.
Alex propose l’algorithme ci-dessous, écrit avec GéoTortue.

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.

Boris : Chloé : Donan :

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)

Géométrie dans l’espace


38  
prérequis : solides de l’espace

■ Identifier les données d’entrée, de sortie, le traitement ■ Affectation, variable
■ Mettre au point une solution algorithmique
■ Valider la solution algorithmique

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.

1 a. Quelles sont les données nécessaires à fournir en entrée ? S et F.


b. Quel calcul doit effectuer l’algorithme ? A = S + F – 2

38
g éom étrIe

2 Écrire l’algorithme en langage naturel.

Entrer deux entiers naturels S et F


A prend la valeur S + F – 2
Afficher A

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.

a. 6 sommets et 8 faces. A = S + F – 2 = 6 + 8 – 2 = 12 arêtes.


b. 8 sommets et 6 faces. A = S + F – 2 = 8 + 6 – 2 = 12 arêtes.
c. 8 sommets et 10 faces. A = S + F – 2 = 8 + 10 – 2 = 16 arêtes.

4 Le ballon de football n’est pas rond : il est composé de 12 pentagones et 20 hexagones


réguliers. Il possède 60 sommets. Pour coudre à la main ce ballon, un ouvrier a besoin
d’une minute par couture (c’est-à-dire par côté).

Combien de temps est nécessaire pour coudre ce ballon ?


S = 60 et F = 12 + 20 = 32, donc A = S + F – 2 = 60 + 32 – 2 = 90.
Il y a 90 arêtes donc il faut 90 minutes pour coudre ce ballon à la main.

39   


prérequis : pourcentages

■ Comprendre et analyser un algorithme préexistant ■ Affectation, variable


■ Identifier les données d’entrée, de sortie, le traitement ■ Boucle conditionnelle
■ Adapter un algorithme aux contraintes du langage de programmation

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.

1 Voici un algorithme de calcul de la masse de la pyramide en tonnes.

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

a. Compléter le tableau suivant des valeurs successives de N et S dans l’algorithme :

S 0 44 944 89 465 133 565 177 246 220 510


N 212 211 210 209 208 207

Géométrie .dans .l’espace 39


g éo m ét rIe

b. Que représente la valeur de S lorsque l’algorithme sort de la boucle ?


S représente le nombre total de pavés de la pyramide pleine.
c. Expliquer le calcul « M = 0,8 × 2,5 × S ». Que représente la valeur de M ?
On multiplie S par 2,5 pour obtenir la masse de la pyramide car chaque pavé pèse 2,5 tonnes.
On multiplie le résultat par 0,8 car 20 % de la pyramide est creuse. Diminuer de 20 % revient à multiplier par
1 – 20 % = 1 – 0,2 = 0,8. M représente la masse totale de la pyramide.
2 Programmer cet algorithme sur calculatrice et déterminer la masse de la pyramide de Khéops.

Sur TI-83 + : Le programme donne une masse de 6 397 100 tonnes.

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 :

Chaîne 1 Chaîne 2 Chaîne 3 Autres chaînes


25,5 % 17 % 11 % 46,5 %

Nous supposerons que ces chiffres restent stables dans les mois suivants.

a. On souhaite simuler le choix au hasard d’une personne parmi 1 000 téléspectateurs.


Expliquer comment ceci est réalisable à l’aide d’une urne qui contient des boules de couleurs différentes.

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

On considère l’algorithme suivant :

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

a. Que renvoie cet algorithme lorsqu’on l’applique aux nombres suivants :


• 4 pour la variable N ;
• 16 ; 12 ; 19 ; 13 pour les éléments de la liste L.
L’algorithme renvoie : L(1) = 12 ; L(2) = 13 ; L(3) = 16 ; L(4) = 19 ; la médiane MM vaut 14,5.
b. Compléter et programmer l’algorithme proposé pour qu’il affiche le premier quartile d’une liste de
nombres.

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

b. Simuler un jeu de loto (choix de 6 entiers compris entre 1 et 49).


COU P DE PO UCE
On pourra par exemple affecter à L(i) la valeur –1 pour exprimer que l’entier L(i) a été extrait.
On pourra ainsi effectuer un test conditionnel sur le signe de L(i).

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+ :

1 a. Écrire l’algorithme correspondant en langage naturel.

Entrer un entier naturel N


S prend la valeur 0
Pour i allant de 1 à N
A prend une valeur aléatoire entière entre 1 et 6
Si A = 6 alors
S prend la valeur S + 1
Fin si
Fin pour
S
Afficher
N

b. Expliquer le rôle des variables N, S et A.


N est le nombre de lancers. S comptabilise le nombre de « 6 » réalisés. A prend à chaque lancer de dé la
valeur obtenue par le dé.
c. Que représente la valeur affichée en sortie ?
La fréquence d’apparition du 6 sur N lancers.
1
2 La probabilité d’obtenir un 6 est de . On souhaite mesurer l’écart observé lors de la simulation avec
6
cette valeur.
a. Ajouter à l’algorithme la ligne permettant d’afficher cet écart.
S 1
Afficher −
N 6
b. Programmer cet algorithme.

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

L’algorithme ci-contre, écrit sous AlgoBox, propose une marche


aléatoire sur un quadrillage muni d’un repère orthonormé (O ; ai ; aj )
d’unité 1 cm en partant de O.
On appelle « pas » un segment de longueur 1 suivant l’un des axes
du quadrillage. Le résultat de son exécution est donné ci-dessous.

j
O i

1 a. Quelle est la valeur de pas proposée en entrée ?


pas = 10
b. Quelle est la dernière valeur obtenue par la variable A ? Expliquer.
La dernière valeur obtenue pour A est 1 car le dernier segment est horizontal.
2 a. Dans les repères suivants, représenter tous les points que l’on peut atteindre en 3 pas, puis en 7 pas.
• En 3 pas : • En 7 pas :

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.

1 Pour réaliser l’expérience, Thibaut écrit trois algorithmes et les programme.


Algorithme nº 1 Algorithme nº 2 Algorithme nº 3
K = 0 i = 0 A = 0
Pour i allant de 1 à 4 Tant que i est inférieur à 4 i = 0
A est un entier aléatoire A est un entier aléatoire Tant que A est différent de 6
entre 1 et 6 entre 1 et 6 A est un entier aléatoire
Si A = 6 Si A = 6 entre 1 et 6
K prend la valeur K + 1 i prend la valeur 5 i prend la valeur i + 1
Fin si Afficher « Gagné ! » Fin tant que
Fin pour Sinon Si i est inférieur ou égal à 4
Si K = 0 i prend la valeur i + 1 Afficher « Gagné ! »
Afficher « Perdu ! » Fin si Sinon
Sinon Fin tant que Afficher « Perdu ! »
Afficher « Gagné ! » Si i = 4 Fin si
Fin si Afficher « Perdu ! »
Fin si

a. Expliquer le principe de chacun de ces algorithmes et de leurs variables.


• Algorithme n° 1 : lance 4 fois, compte les 6 et affiche « gagné » ou « perdu » selon le nombre de 6 obtenus.
• Algorithme n° 2 : lance au plus 4 fois, s’arrête dès que le dé vaut 6, affiche « gagné » dès que le 6 sort ou
« perdu » si les 4 lancers sont effectués sans succès.
• Algorithme n° 3 : lance tant que le 6 n’est pas sorti, affiche « gagné » ou « perdu » selon le nombre de
lancers effectués.
b. Thibaut a ajouté des compteurs pour déterminer le nombre de fois que la boucle de chaque algo-
rithme s’exécute. En expérimentant chacun d’eux, il obtient comme nombre de boucles 3, 4 et 6.
À quel algorithme correspond chacun de ces résultats ?
• L’algorithme n° 1 réalise toujours 4 boucles.
• L’algorithme n° 2 réalise au plus 4 boucles, donc ici il en a réalisé 3.
• L’algorithme n° 3 a donc réalisé 6 boucles.

46
statIstIq u e s e t p robabIlItés

c. Lequel des trois algorithmes semble être le plus économe ?


L’algorithme n° 2, car il inclut les tests d’arrêts des deux autres algorithmes.
2 Thibaut exécute l’un de ses programmes de nombreuses fois mais ses résultats ne lui permettent pas de
prendre parti sur l’affirmation du chevalier de Mérée. Il décide de modifier son programme pour réaliser
N fois l’expérience et que ce dernier lui retourne la fréquence de parties gagnées.
a. Écrire cet algorithme en langage naturel.
Avec l’algorithme 2 :
Entrer un entier naturel N
G prend la valeur 0 //compteur de parties gagnées//
Pour k allant de 1 à N
i = 0
Tant que i est inférieur à 4
A prend une valeur aléatoire entière entre 1 et 6
Si A = 6
i prend la valeur 5
G prend la valeur G + 1
Sinon
i prend la valeur i + 1
Fin si
Fin tant que
Fin pour
G
Afficher
N

b. Programmer cet algorithme et l’exécuter pour de grandes valeurs de N. Peut-on conclure ?

Il faut de grandes valeurs pour assurer


une fréquence supérieure à 0,5.
Pour N = 100 000, la fréquence se
stabilise autour de 0,515.

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.

En notant S l’issue « obtenir un 6 » : 1/6 S


1/6 S
5/6 S
S
1/6 S
5/6 S
S
S
S
S
1/6 5/6 S
S
S
S
S
S
S
S S
5/6 1/6 S
S
S S
S
1/6 S
5/6 S
S
1/6 S
5/6 S
5/6 S

Probabilités 47
stat Ist Iq u es e t p r o b a b I l I t é s

b. Une seule issue est perdante. Déterminer la probabilité de perdre.


5 5 5 5 625
La probabilité de perdre est × × × = .
6 6 6 6 1296
c. En déduire la probabilité de gagner.
625 671
La probabilité de gagner est 1 − = .
1296 1296
d. Peut-on expliquer pourquoi il a fallu choisir N très grand à la question 2b pour que l’expérience soit
probante ?
671
≈ 0,518 . Il a fallu un grand nombre de lancers car la probabilité de gagner est proche de 0,5.
1296

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 :

PFPPFPFFFP PFPFFPPFPP FFPPFFPPFF PFPFFFPPFP PFFFPPFPFF

1 Calculer la fréquence d’apparition du « pile ». Ce résultat semble-t-il cohérent avec l’équiprobabilité


théorique de cette expérience ?
23
La fréquence d’apparition du pile est = 46 % . Ce résultat paraît conforme car il est assez proche de
50
l’équiprobabilité théorique (50 %) pour un échantillon de seulement 50 expériences.
2 Le professeur n’est pas satisfait, il affirme que David a probablement triché et
n’a pas lancé la pièce. David ne comprend pas comment le professeur a pu s’en
rendre compte. Pour le convaincre, il propose à David de programmer l’algorithme
ci-contre sur sa calculatrice.

a. Comment le programme propose-t-il de simuler un « pile » ou « face » ?


L’algorithme choisit un nombre au hasard entre 0 et 1, il suffit alors de choisir
lequel représente « pile » par exemple.
b. En supposant que les quatre premières simulations donnent dans A les valeurs
1-1-1-0, quelles seront les valeurs de B et C lorsque le programme recalculera une
nouvelle valeur de A ?
À chaque fois que A prend la valeur 1, B augmente de 1. B contiendra la valeur 3 après les 3 premiers lancers.
Au quatrième lancer, A prend alors la valeur 0. Comme B est plus grand que C (qui vaut 0), C prend la valeur
3 et B prend la valeur 0.
c. Quel est le rôle des variables B et C dans l’algorithme ?
B compte le nombre de 1 consécutifs générés dans A. Il se réinitialise à 0 lorsqu’une série est interrompue.
C stocke la plus grande valeur de B rencontrée, c’est à dire la longueur de la plus grande série de 1 réalisée.
3 En faisant tourner le programme, voici ce que David obtient sur sa calculatrice.

a. En regardant sa série de lancers, comprend-on la remarque du professeur ?


Dans la série de David, la plus grande série de « pile » est de longueur 2 et
la plus grande série de « face » est de longueur 3. Ce résultat ne semble pas
fréquent, d’où la remarque du professeur.
b. David a-t-il pu obtenir ses résultats sans tricher ?
Bien que peu probable, David aurait pu obtenir ces résultats sans tricher, par hasard.

48

Vous aimerez peut-être aussi