La décroissance radioactive
Exercice de TD · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 4 — Les boucles · La boucle non bornée : while
Énoncé
Un échantillon contient noyaux radioactifs. À chaque période, la moitié des noyaux restants se désintègre (on arrondira à l'entier inférieur avec //).
- Écrire un programme qui affiche le nombre de périodes au bout desquelles il reste moins de noyaux.
- Afficher l'évolution période par période.
- Que se passerait-il si l'on remplaçait
//par/? Et si le seuil était au lieu de ?
Corrigé
1. et 2.
noyaux = 2000
periodes = 0
while noyaux >= 10:
noyaux = noyaux // 2
periodes = periodes + 1
print("période", periodes, ":", noyaux)
print("Il reste", noyaux, "noyaux après", periodes, "périodes")
période 1 : 1000
période 2 : 500
période 3 : 250
période 4 : 125
période 5 : 62
période 6 : 31
période 7 : 15
période 8 : 7
Il reste 7 noyaux après 8 périodes
3. Avec /, les valeurs deviennent des flottants et ne sont plus des comptages de noyaux : noyau n'a pas de sens physique. La boucle finirait quand même, mais le modèle serait faux.
Avec un seuil de , en revanche, le comportement dépend de l'opérateur, et c'est le point important :
- avec
//, la division entière atteint puis : la boucle s'arrête ; - avec
/, on obtient , puis , etc. — une suite qui ne vaut jamais zéro. La boucle tournerait des centaines de tours avant que le flottant ne finisse par s'annuler par sous-dépassement, et sur d'autres critères elle ne s'arrêterait jamais.
Une boucle while dont la condition porte sur des flottants est toujours à regarder de près.
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.