Aller au contenu

Exercices corrigés — Algorithmique et Python (Première)

Quatre niveaux de difficulté, du plus simple au plus exigeant. Chaque exercice a sa correction détaillée, étape par étape.

2 exercices de niveau « Maîtrise ». Voir les 8 exercices.

Exercice 5 Maîtrise

Un capital de 1 000 € perd 10 % de sa valeur chaque année. On exécute le script suivant.

n = 0
u = 1000
while u > 500:
    u = 0.9*u
    n = n + 1
print(n, u)

a) Que représente u après k passages dans la boucle ? b) Qu'affiche le script ? c) Pourquoi la boucle s'arrête-t-elle à coup sûr ?

Voir la correction
Correction détaillée

a) Perdre 10 %, c'est multiplier par 0,9 : après k passages, u vaut 1 000 × 0,9k, la valeur du capital après k années, et n vaut k.
b) La boucle continue tant que le capital dépasse 500 €. Valeurs successives (arrondies) : 900 ; 810 ; 729 ; 656,1 ; 590,5 ; 531,4 ; 478,3. Après le sixième passage, u ≈ 531,4 > 500, on continue ; après le septième, u ≈ 478,3 ≤ 500, la condition devient fausse et la boucle s'arrête.
Le script affiche 7 478.296... : le capital passe sous la moitié de sa valeur initiale au bout de 7 ans.
c) À chaque passage, u est multiplié par 0,9 < 1 : les valeurs 1 000 × 0,9n deviennent aussi petites que l'on veut, donc elles finissent par passer sous 500. Une boucle while n'est correcte que si une telle garantie existe ; avec u = 1.1*u, le capital augmenterait et la boucle ne s'arrêterait jamais.

Exercice 6 Maîtrise

On utilise la fonction dichotomie(f, a, b, precision) du cours avec f(x) = x2 − 2, a = 1, b = 2 et precision = 0.25. Détailler chaque passage dans la boucle et donner la valeur renvoyée. Que représente-t-elle ?

Voir la correction
Correction détaillée

au départ, f(1) = −1 < 0 et f(2) = 2 > 0 : f change de signe sur [1 ; 2], et f est continue et strictement croissante sur cet intervalle, donc l'équation f(x) = 0 y a une unique solution, 2.
Passage 1 : b - a = 1 > 0,25 ; m = 1,5 ; f(1,5) = 2,25 − 2 = 0,25. Le produit f(1) × f(1,5) = −0,25 est négatif : la racine est dans [1 ; 1,5], on pose b = 1.5.
Passage 2 : b - a = 0,5 > 0,25 ; m = 1,25 ; f(1,25) = 1,5625 − 2 = −0,4375. Le produit f(1) × f(1,25) est positif : la racine est dans [1,25 ; 1,5], on pose a = 1.25.
Ensuite b - a = 0,25, qui n'est pas strictement supérieur à 0,25 : la boucle s'arrête. La fonction renvoie (a + b) / 2 = 1,25 + 1,52 = 1,375. C'est une valeur approchée de 2 ≈ 1,4142 à 0,125 près (la moitié de la longueur du dernier intervalle). Avec precision = 0.001, il faudrait 10 passages, car 1210 < 0,001.