Structure while
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectifs
Comprendre la structure de la boucle
while
;Savoir utiliser et interrompre une boucle
while
.
Mise en situation
Toutes les situations ne se prêtent pas à une boucle avec un compteur à incrémenter. Prenons par exemple un programme qui demande à l'utilisateur d'entrer son âge. Si l'âge entré n'est pas un nombre valide, le programme redemande de renseigner son âge. Nous avons donc ici un mécanisme de boucle qui va devoir s'exécuter un nombre de fois inconnu à l'avance. Ici la condition de notre boucle sera de vérifier la validité de la valeur entrée par l'utilisateur, par exemple en testant le type de la variable.
Syntaxe : Boucle while
La boucle while
, ou « tant que »
, permet de réaliser des itérations en fonction de conditions booléennes (vrai ou faux). Algorithmiquement, la boucle while
peut se traduire par : « Tant que condition vraie, faire ... »
.
La structure de cette boucle est très simple et comporte une condition et un bloc d'instructions.
while (condition) {
// instructions
}
Exemple : Menu des recommandations
On affiche un menu avec des options. Seule l'option « 0 »
permet de sortir du menu grâce à la condition du while
.
"""Python."""
choice = ''
# Continue tant que 0 n'est pas sélectionné
while choice != '0':
print('0. Sortir')
print('1. Afficher le film recommandé')
print('2. Afficher l\'album recommandé')
# Attend la réponse
choice = input('Choix > ')
if choice == '1': # film
print('Titanic (1997) - James Cameron\n')
elif choice == '2': # album
print('Thriller (1982) - Michael Jackson\n')
/** JavaScript */
let choice = ''
// continue tant que 0 n'est pas sélectionné
while (choice !== '0') {
console.log('0. Sortir')
console.log('1. Afficher le film recommandé')
console.log('2. Afficher l\'album recommandé')
// attend la réponse
choice = prompt('Choix')
if (choice === '1') { // film
console.log('Titanic (1997) - James Cameron\n')
} else if (choice === '2') { // album
console.log('Thriller (1982) - Michael Jackson\n')
}
}
Exemple : Roulette
Une mise de départ est fixée à 10 €. À chaque tour, la roulette sort un nombre : s'il est pair, on empoche l'argent (moins la mise), sinon la mise double et on continue.
"""Python."""
import random
attempts = 0
gain = 0
bet = 10
loss = 0
winner = False
print('Tu gagnes si la roulette sort un nombre pair. La mise de départ est à 10 euros.')
# continue jusqu'à perdre
while not winner:
# argent mis en jeu
loss = loss + bet
attempts = attempts + 1
# nombre aléatoire entre 0 et 30
number = random.randint(0, 30)
print('Tentative...........', number)
if number%2 == 1: # nombre impair
print('Dommage, ta mise double. Retente ta chance')
bet = bet * 2
else: # nombre pair
print('C\'est gagné')
gain = bet * 2
winner = True
input('(Entrée)')
print('Gain de', (gain - loss), ' euros après ', attempts, ' tentative(s)')
/** JavaScript */
let attempts = 0
let gain = 0
let bet = 10
let loss = 0
let winner = false
console.log('Tu gagnes si la roulette sort un nombre pair. La mise de départ est à 10 euros.')
// continue jusqu'à perdre
while (!winner) {
// argent mis en jeu
loss = loss + bet
attempts = attempts + 1
// nombre aléatoire entre 0 et 30
const number = Math.floor(Math.random() * 31)
console.log('Tentative...........', number)
if (number % 2 === 1) { // nombre impair
console.log('Dommage, ta mise double. Retente ta chance')
bet = bet * 2
} else { // nombre pair
console.log('C\'est gagné')
gain = bet * 2
winner = true
}
prompt('(Entrée)')
}
console.log('Gain de ' + (gain - loss) + ' euros après ' + attempts + ' tentative(s)')
Complément : Boucle do...while
En JavaScript, il existe une structure proche de la boucle while
: la boucle do while
. Cette fois ci, le bloc d'instruction est exécuté d'abord, la condition est testée ensuite. Si la condition est remplie, on continue. Il y a donc donc toujours au moins une itération.
Algorithmiquement, la boucle do while
peut se traduire par : « Faire... Tant que condition vraie »
.
do {
// instructions
} while (condition)
/** JavaScript: itère une seule fois */
let i = 0
do {
console.log(i)
} while (i < -2)
Complément : Compteur avec while
La boucle while
peut reproduire le comportement d'un compteur (mais en général, dans ce cas, on préfère une boucle for
).
/** JavaScript: itère 5 fois */
let i = 0
while (i < 5) {
console.log(i++)
}
"""Python: itère 5 fois."""
i = 0
while i < 5:
print(i)
i+=1
À retenir
La boucle
while
permet des itérations avec des conditions quelconques.Elle est principalement utilisée quand on ne connaît pas le nombre d'itérations à faire avant le début de la boucle.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.