IV. Les boucles non-bornées¶
Cours¶
Dans certains problèmes, on peut vouloir répéter plusieurs fois de suite les mêmes opérations. On peut utiliser pour cela des boucles non-bornées pour répéter des instructions un nombre indéterminé de fois.
A. Exemple¶
Prenons l'exemple de la conversion d'un nombre n
de la base 10 à la base 2. On fait des divisions euclidiennes successives par 2 pour obtenir n
écrit en binaire.
Code
1 n = 4
2 r = n%2 # on calcule le reste de n dans la division euclidienne par 2
3 n = n//2 # on remplace n par son quotient dans la division par 2
4 r = n%2 # on calcule le nouveau reste
5 n = n//2 # on remplace n à nouveau
6 r = n%2
7 n = n//2
Compléter la table de trace correspondant à l'exécution de ce code :
Ligne | n |
r |
---|---|---|
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
7 |
Solution
Ligne | n |
r |
---|---|---|
1 | 4 | / |
2 | 4 | 0 |
3 | 2 | 0 |
4 | 2 | 0 |
5 | 1 | 0 |
6 | 1 | 1 |
7 | 0 | 1 |
On répète les mêmes opérations, jusqu'à ce que n
vale 0
. Au lieu de réécrire les mêmes instructions, on peut utiliser une boucle tant que.
En Python, on peut l'écrire de la manière suivante (code à compléter):
Code
n = 4
while ................
Solution
n = 4
while n!=0:
r = n%2
n = n//2
print(r)
B. Cas général¶
Définition
Une boucle non-bornée répète une instruction un nombre indéterminé de fois. Elle s'exécute tant que sa condition vaut True
.
Algorithme et traduction Python (à compléter)
tant que condition
instructions
La condition est une expression booléenne et les instructions une suite d'opérations.
Quand est-ce que la boucle s'arrête ?
Elle s'arrête lorsque la condition devient fausse - c'est-à-dire qu'elle vaut False
.
La syntaxe Python est similaire à celle utilisée pour les instructions conditionnelles :
- la condition est suivie de :
,
- Comment sont placées les instructions par rapport au while
? Elles sont placées à une indentation sur la droite.
Attention !
Le cauchemar du programmeur est d'écrire un code dans lequel il y a une boucle infinie : une boucle de laquelle on ne sort pas. Il faut donc toujours vérifier qu'à un moment dans l'exécution du programme, la condition sera fausse. Classiquement, on fait décroître ou croître une variable.
TD¶
Exercice 1¶
Code
compt = 1
while compt < 10:
compt = compt*2
print(compt)
- Remplir la table de trace suivante, avec le nombre d'itération de boucle adéquat :
Itération | Condition | compt |
---|---|---|
initialisation | ||
1 | ||
2 |
- En déduire la valeur affichée à la fin de l'exécution du programme.
Exercice 2¶
Ecrire un programme remplissant les conditions suivantes :
- initialisant une variable n
à la valeur 0
,
- augmentant (incrémentant) la valeur de n
de 1
à chaque passage dans une boucle while
,
- la valeur de n
à la fin de l'exécution de la boucle doit être de 5
.
Exercice 3 : Identification¶
L'accès à une page Web reste verrouillé tant que l'on n'entre pas le bon mot de passe. On donne le code suivant (incomplet), qui gère cet accès :
Code
mdp = "hj51dpM@"
rep = ""
while .................:
rep = input("Entrer le mot de passe pour accéder à la page.")
print("Accès autorisé")
La fonction input
affiche un message et demande à l'utilisateur d'entrer une valeur, qui est récupérée dans une variable, ici rep
.
- Identifier les différentes variables du code et indiquer leur utilité.
- Compléter le code avec la condition qui convient.