programmez-en-d/do_while.whata

80 lines
2.3 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[set
title = "Boucle [c do]-[c while]"
partAs = chapitre
translator = "Raphaël Jakse"
proofreader = "Stéphane Goujet"
]
Dans le [[part:for | chapitre sur la boucle [c for]]], nous avons vu les étapes d'exécution d'une boucle [c while]~ :
[pcode <<<
préparation
vérification de la condition
ce qu'il y a à faire
itération
vérification de la condition
ce qu'il y a à faire
itération
...
>>>]
La boucle [c do-while] est très similaire à la boucle [c while]. La différence est que la vérification de la condition est vérifiée à la [* fin] de chaque itération de la boucle [c do-while], et donc que le corps de la boucle est exécuté au moins une fois~ :
[pcode <<<
préparation
ce qu'il y a à faire
itération
vérification de la condition ← à la fin de l'itération
ce qu'il y a à faire
itération
vérification de la condition ← à la fin de l'itération
...
>>>]
Par exemple, [c 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~ :
[code=d <<<
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 [c uniform()] qui est utilisée dans le programme fait partie du module [c 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, [c uniform()] ne retournera jamais 101.
[ = 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.
[[part:corrections/do_while || … La solution]]
]