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
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
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
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).
À 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.