Adloun

Un algorithme de seuil

Exercice supplémentaire · niveau 2 · enseignement scientifique (première), chapitre 19 — Variation exponentielle

Énoncé

On veut savoir au bout de combien d'années une forêt de 12 000 hectares, qui perd 3 % de sa surface par an, passera sous 8 000 hectares.


def annees(surface, taux, cible):
    n = 0
    while surface > cible:
        surface = surface * (1 + taux)
        n = n + 1
    return n, round(surface, 1)

print(annees(12000, -0.03, 8000))

Corrigé

1. : la surface est multipliée chaque année par 0,97. Le programme ne fait aucune hypothèse sur le signe du taux ; c'est le test while surface > cible qui suppose une décroissance.

2. Il faut 14 ans pour que la surface passe sous 8 000 hectares ; elle vaut alors environ 7 839 hectares.

3. hectares, encore au-dessus du seuil. hectares, en dessous. ✓ (Le léger écart avec la sortie du programme vient des arrondis successifs.)

4. La condition surface > cible est fausse dès le départ, puisque 12 000 est inférieur à 15 000… non : est faux, donc la boucle ne s'exécute pas et le programme renvoie (0, 12000) immédiatement. En revanche, avec une cible de 15 000 et un taux positif, la boucle tournerait sans fin. Une boucle « tant que » demande toujours qu'on vérifie sa condition d'arrêt.

5. Il suffit d'ajouter une ligne d'affichage dans la boucle :


    while surface > cible:
        surface = surface * (1 + taux)
        n = n + 1
        print("annee", n, ":", round(surface, 1))

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.