31. Boucle do-while ▲
Dans le chapitre sur la boucle forapitre sur la boucle forpitre sur la boucle forBoucles for, nous avons vu les étapes d'exécution d'une boucle while :
préparation
vérification de la con
dition
ce qu'il y a à faire
itération
vérification de la con
dition
ce qu'il y a à faire
itération
...
La boucle do-while est très similaire à la boucle while. La différence est que la vérification de la condition est opérée à la fin de chaque itération de la boucle do-while, et donc que le corps de la boucle est exécuté au moins une fois :
préparation
ce qu'il y a à faire
itération
vérification de la con
dition ← à la fin de l'itération
ce qu'il y a à faire
itération
vérification de la con
dition ← à la fin de l'itération
...
Par exemple, do-while peut-être plus naturel dans le programme suivant où l'utilisateur devine un nombre, puisque l'utilisateur doit faire au minimum une tentative pour deviner le nombre :
import
std.stdio;
import
std.random;
void
main
(
)
{
int
nombre =
uniform
(
1
, 101
);
writeln
(
"Je pense à un nombre entre 1 et 100."
);
int
tentative;
do
{
write
(
"Essayez de deviner ce nombre. "
);
readf
(
" %s"
, &
tentative);
if
(
nombre <
tentative) {
write
(
"Mon nombre est plus petit que cela. "
);
}
else
if
(
nombre >
tentative) {
write
(
"Mon nombre est plus grand que cela. "
);
}
}
while
(
tentative !=
nombre);
writeln
(
"Correct !"
);
}
La fonction uniform() qui est utilisée dans le programme fait partie du module std.random. Elle retourne un nombre dans l'intervalle spécifié. Le deuxième nombre donné en argument est hors de cet intervalle. Cela veut dire que dans ce programme, uniform() ne retournera jamais 101.
31-1. Exercice▲
Écrivez un programme qui joue au même jeu, mais qui devine le nombre que l'utilisateur donne. Si le programme est bien écrit, il devrait deviner le nombre de l'utilisateur en 7 essais au plus.