Boucles non bornées

icône de pdf
Signaler

Dans certains cas, les boucles bornées ne sont pas les plus appropriées. On peut alors utiliser une boucle non bornée ou boucle while.

I Utilisation d’une boucle non bornée

Dans un algorithme, il est souvent nécessaire de répéter plusieurs fois la même opération. Dans certains cas, la boucle for ne convient pas car on ne sait pas combien de tours de boucle on doit faire. La boucle while permet de répéter un traitement tant qu’une certaine condition est vérifiée.

Syntaxe Python

PB_Bac_05230_numerique1_TT_p045-082_C02_Groupe_Schema_20

Sémantique : l’expression est évaluée :

– si elle est vraie, les instructions du corps de la boucle sont exécutées. On retourne au point précédent ;

– si elle est fausse, on sort de la boucle et on poursuit le programme.

Attention aux boucles infinies !

La construction d’une boucle comporte généralement trois éléments :

– une initialisation avant de commencer la boucle ;

– un test qui permet de savoir si on continue la boucle ou si on s’arrête ;

– une instruction qui change une variable du test à chaque tour de boucle.

Remarque : Un invariant de boucle est une propriété sur l’environnement qui est vraie à chaque fois que l’on passe sur l’instruction while.

II Exemples

1 Placement d’un capital

05230_chap02_03

Hugo souhaite placer une certaine somme d’argent sur un compte rémunéré. Le capital ainsi placé augmente chaque année de 5 % (c’est-à-dire qu’il est multiplié par 1,05). On veut écrire une fonction qui détermine le nombre d’années nécessaires pour que le capital disponible dépasse 500 €.

Par exemple, avec un capital de départ de 120 €, il faut 30 ans pour que le capital disponible dépasse 500 €.

Traduction en Python

PB_Bac_05230_numerique1_TT_p045-082_C02_Groupe_Schema_18

Cette boucle while comporte bien les trois éléments nécessaires : initialisation, test, modification d’une variable du test.

2 Devinette

On utilise également la boucle while lors des interactions avec un utilisateur. Par exemple, on veut écrire une fonction qui demande à un utilisateur de deviner un nombre (et qui ne renvoie rien).

PB_Bac_05230_numerique1_TT_p045-082_C02_Groupe_Schema_19

Repère
À noter

Les fonctions qui prennent leurs informations à partir de l’entrée standard (input) et non des paramètres sont plus difficiles à tester. On les utilise donc le moins possible.