Initiation

Algorithme et boucle while

Signaler

Énoncé

On s’intéresse à l’évolution du nombre de visiteurs quotidiens d’un site naturel protégé.

Au départ, le site accueille 120120 visiteurs par jour.
Chaque jour :

  • le nombre de visiteurs augmente de 1515% par rapport à la veille,

  • puis 1818 visiteurs quittent le site plus tôt que prévu.

On note vv le nombre de visiteurs un jour donné.

  1. Expliquer, avec des mots, comment évolue le nombre de visiteurs d’un jour au suivant.

  2. On souhaite savoir au bout de combien de jours le nombre de visiteurs dépassera 300300.

a. Sans faire de calcul précis, expliquer pourquoi le nombre de visiteurs finira par dépasser 300300.

b. On propose l’algorithme suivant, inspiré de ce que l’on faisait auparavant avec Scratch.

Recopier et compléter cet algorithme pour qu’il affiche le nombre de jours nécessaires pour que le nombre de visiteurs dépasse 300300.

picture-in-textOn précisera clairement :

  • la condition de la boucle while,

  • la mise à jour de la variable jour,

  • la formule permettant de calculer le nouveau nombre de visiteurs.

Révéler le corrigé

1) « Expliquer, avec des mots, comment évolue le nombre de visiteurs d’un jour au suivant »

D’un jour au suivant, on fait deux actions dans l’ordre :

On augmente d’abord le nombre de visiteurs de 1515%.
Puis on enlève 1818 visiteurs.

Cela veut dire : « on multiplie par 1,151,15, puis on retire 1818 ».

On peut l’écrire en une seule expression :
vnouveau=1,15v18v_{\text{nouveau}}=1,15v-18.

👉 Conseil : une augmentation de 1515%, ce n’est pas « +15 », c’est « ×1,15\times 1,15 ».


2a) « Sans faire de calcul précis, expliquer pourquoi le nombre de visiteurs finira par dépasser 300300 »

Au départ, v=120v=120.

Chaque jour, on multiplie par 1,151,15, ce qui fait une augmentation importante.
Même si on enlève ensuite 1818, l’effet de la multiplication par 1,151,15 va finir par l’emporter, car plus vv devient grand, plus 1515% de vv devient grand.

Donc le nombre de visiteurs va globalement augmenter et finira par dépasser 300300.

👉 Conseil : ici, on ne demande pas « au bout de combien de jours », seulement une justification logique : « ça augmente de plus en plus ».


2b) Compléter l’algorithme avec une boucle while

On veut trouver le premier jour où vv dépasse 300300.

On part avec :

  • jour = 0 (jour de départ),

  • v = 120 (valeur de départ).

On doit répéter le calcul « jour suivant » tant qu’on n’a pas encore dépassé 300300.

Étape 1 : choisir la condition de la boucle

On veut continuer tant que vv n’a pas dépassé 300300, c’est-à-dire tant que v300v \le 300.

La condition est donc :
while v <= 300:

👉 Conseil : si l’objectif est « dépasser 300300 », alors on boucle tant qu’on est encore à 300300 ou en dessous, donc <= et pas <.

Étape 2 : mettre à jour le compteur de jours

À chaque tour de boucle, on passe au jour suivant, donc on ajoute 11 à jour :

jour = jour + 1

👉 Conseil : dans Scratch, c’était souvent « ajouter 1 à jour ». En Python, c’est la même idée.

Étape 3 : calculer la nouvelle valeur de vv

Chaque jour :

  • on augmente de 1515% : on fait 1,15v1,15v,

  • puis on enlève 1818.

Donc :

v = 1.15*v - 18

👉 Conseil : attention à l’ordre : on fait d’abord la hausse, puis on retire 18.
👉 Conseil : en Python, on écrit 1,151,15 avec un point : 1.15 (pas une virgule).

picture-in-textExplication très claire du rôle de la boucle while

La boucle while veut dire : « répéter tant que la condition est vraie ».

Ici, la condition est v <= 300, donc :

  • tant que vv n’a pas encore dépassé 300300, on refait un jour de plus,

  • on met à jour jour,

  • on calcule le nouveau nombre de visiteurs,

  • puis on reteste la condition.

Quand vv devient enfin strictement supérieur à 300300, la condition v <= 300 devient fausse, donc la boucle s’arrête, et on renvoie jour.

👉 Conseil : pour te représenter la boucle comme dans Scratch, imagine un bloc « répéter jusqu’à ce que v>300v>300 ». En Python, c’est pareil, mais écrit sous forme while v <= 300:.