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.

2voto

delnan Points 52260

Les réponses données jusqu'à présent résument l'utilisation générale de do-while. Mais l'OP a demandé un exemple, alors en voici un : Obtenir l'entrée de l'utilisateur. Mais l'entrée de l'utilisateur peut être invalide - donc vous demandez une entrée, la validez, continuez si elle est valide, sinon répétez.

Avec do-while, vous obtenez l'entrée alors que l'entrée n'est pas valide. Avec une boucle while normale, vous obtenez l'entrée une fois, mais si elle est invalide, vous l'obtenez encore et encore jusqu'à ce qu'elle soit valide. Il n'est pas difficile de voir que la première est plus courte, plus élégante et plus simple à maintenir si le corps de la boucle devient plus complexe.

2voto

Gordon Tucker Points 2436

Je l'ai utilisé pour un lecteur qui lit la même structure plusieurs fois.

using(IDataReader reader = connection.ExecuteReader())
{
    do
    {
        while(reader.Read())
        {
            //Read record
        }
    } while(reader.NextResult());
}

2voto

Robert Dziubek Points 1

J'aime comprendre ces deux éléments comme suit :
while -> "répéter jusqu'à",
do ... while -> "répéter si".

1voto

danyim Points 818

J'ai utilisé un do while lorsque je lis une valeur sentinelle au début d'un fichier, mais à part cela, je ne pense pas qu'il soit anormal que cette structure ne soit pas trop couramment utilisée do-while sont vraiment situationnels.

-- file --
5
Joe
Bob
Jake
Sarah
Sue

-- code --
int MAX;
int count = 0;
do {
MAX = a.readLine();
k[count] = a.readLine();
count++;
} while(count <= MAX)

1voto

Narek Points 7815

Je programme depuis environ 12 ans et il y a seulement 3 mois, j'ai rencontré une situation où il était vraiment pratique d'utiliser le do-while car une itération était toujours nécessaire avant de vérifier une condition. Je suppose donc que vous avez du pain sur la planche :).

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