96 votes

"faire... pendant" ou "pendant" ?

Duplicatas possibles :
While vs. Do While
Quand dois-je utiliser les boucles do-while au lieu des boucles while ?

Je programme depuis un certain temps maintenant (2 ans de travail + 4,5 ans de diplôme + 1 an de pré-collège), et je n'ai jamais utilisé de boucle do-while avant d'y être forcé dans le cours d'introduction à la programmation. J'ai de plus en plus l'impression que je fais mal la programmation si je ne me heurte jamais à quelque chose d'aussi fondamental.

Se pourrait-il que je n'aie pas rencontré les bonnes circonstances ?

Quels sont les exemples où il serait nécessaire d'utiliser un do-while au lieu d'un while ?

(Ma scolarité s'est déroulée presque entièrement en C/C++ et mon travail est en C#, donc s'il existe un autre langage où cela a absolument du sens parce que les do-whiles fonctionnent différemment, alors ces questions ne s'appliquent pas vraiment).

Pour clarifier...je connais la différence entre un while et un do-while . While vérifie la condition de sortie et exécute ensuite les tâches. do-while effectue des tâches et vérifie ensuite les conditions de sortie.

48 votes

Pour ce que ça vaut, après une décennie de programmation dans ma carrière, j'ai utilisé une boucle do-while une ou deux fois.

0 votes

@Matt - Cela me fait me sentir mieux. Au moins, cela signifie que je ne suis pas seul.

2 votes

Je suis d'accord avec Matt et j'ajouterai une autre décennie à cela. Je n'utilise jamais la boucle do-while non plus.

0voto

Dan Tao Points 60518

Le scénario le plus courant que je rencontre lorsque j'utilise une do / while La boucle se trouve dans un petit programme de console qui s'exécute en fonction d'une entrée et se répète autant de fois que l'utilisateur le souhaite. Il est évident que cela n'a pas de sens qu'un programme de console ne s'exécute pas une seule fois ; mais au-delà de la première fois, c'est à l'utilisateur de décider -- d'où l'expression "boucle". do / while au lieu de simplement while .

Cela permet à l'utilisateur d'essayer plusieurs entrées différentes s'il le souhaite.

do
{
   int input = GetInt("Enter any integer");
   // Do something with input.
}
while (GetBool("Go again?"));

Je soupçonne que les développeurs de logiciels utilisent do / while de moins en moins ces jours-ci, maintenant que pratiquement tous les programmes sous le soleil ont une interface graphique d'une sorte ou d'une autre. Cela a plus de sens avec les applications de console, car il est nécessaire de rafraîchir continuellement la sortie pour fournir des instructions ou inviter l'utilisateur à fournir de nouvelles informations. Avec une interface graphique, en revanche, le texte qui fournit ces informations à l'utilisateur peut simplement se trouver sur un formulaire et ne doit jamais être répété de manière programmatique.

0voto

flies Points 802

J'utilise des boucles do-while tout le temps lorsque je lis des fichiers. Je travaille avec de nombreux fichiers texte qui contiennent des commentaires dans l'en-tête :

# some comments
# some more comments
column1 column2
  1.234   5.678
  9.012   3.456
    ...     ...

Je vais utiliser une boucle do-while pour lire jusqu'à la ligne "column1 column2" afin de rechercher la colonne qui m'intéresse. Voici le pseudo-code :

do {
    line = read_line();
} while ( line[0] == '#');
/* parse line */

Puis je ferai une boucle while pour lire le reste du fichier.

0voto

GreenMatt Points 6301

En tant que programmeur vieillot, bon nombre de mes projets de programmation à l'école utilisaient des interactions commandées par des menus textuels. Presque tous utilisaient quelque chose comme la logique suivante pour la procédure principale :

do
    display options
    get choice
    perform action appropriate to choice
while choice is something other than exit

Depuis l'école, j'ai constaté que j'utilise plus fréquemment la boucle while.

0voto

quinmars Points 4241

Je l'ai utilisé dans une fonction qui renvoie la position du caractère suivant dans une chaîne utf-8 :

char *next_utf8_character(const char *txt)
{
    if (!txt || *txt == '\0')
        return txt;

    do {
        txt++;
    } while (((signed char) *txt) < 0 && (((unsigned char) *txt) & 0xc0) == 0xc0)

    return (char *)txt;
}

Notez que cette fonction est écrite par l'esprit et non testée. Le fait est que vous devez faire la première étape de toute façon et que vous devez la faire avant de pouvoir évaluer la condition.

0voto

Lotus Notes Points 3287

Tout type d'entrée en console fonctionne bien avec do-while, car vous êtes invité la première fois et vous êtes invité à nouveau lorsque la validation de l'entrée échoue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X