Comment marche do while et for en c++

Fermé
LCD. - 3 août 2011 à 02:45
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 août 2011 à 08:20
Bonjour,
Je suis en train d'apprendre le c++ et je suis rendu au boucle. Il en existe 3 la while la do while et la for. La while et la for j'ai compris, mais pour la do while pas du tout. Je comprend pas à quoi elle sert, pour moi c'est pareil que la while. J'apprend sur le site du zero(au cas ou on me demande d'aller voir.)

Merci d'avance.



A voir également:

5 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
3 août 2011 à 09:13
La différence entre while et do_while, c'est que while commence par faire un test alors que do_while commence par exécuter le bloc.
Exemple d'une fonction modulo avec les deux blocs :
int modulo_while(int n,int mod)
{
     while(n>=mod)
            n-=mod;
      return n;
}
int modulo_dowhile(int n,int mod)
{
      do{
            n-=mod;
      }while(n>=mod)
      return n;
}

si tu lui demande modulo (3,10) la première fonction retournera 3 la deuxième -7.
0
Merci de t'es explications, mais malheureusement je n'ai toujours pas compris. Pourtant sa semble simple, mais je dois me compliquer tout seul :(.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
3 août 2011 à 14:12
Le do while impose que les instructions soient effectuées au moins une fois avant que l'on teste la condition d'arrêt.

Soient instr() une fonction qui effectue une série d'instructions, et cond() une fonction qui vérifie les conditions d'arrêt, ces deux codes sont équivalents :

//----------- 1 -----------

instr();

while (cond())
{
    instr();
}

//----------- 2 -----------

do
{
    instr();
}
while (cond());
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
3 août 2011 à 15:08
autre façon de voir, while se traduit par:
tant que la condition est vrai alors...
et do while se traduit par :
fait ... tant que la condition est vrai (ou jusqu'à ce que la condition soit fausse)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
louisgautier Messages postés 1632 Date d'inscription lundi 27 septembre 2010 Statut Membre Dernière intervention 13 janvier 2017 69
3 août 2011 à 17:04
(je parle en tant que LCD.)
Le truc c'est que quand je fait "combien d'enfants avez vous" il me fait sa pour do_while :
#include <iostream>

using namespace std;

int main()
{
int nbEnfants (0);
do
{
cout << " Combien d'enfants avez vous ? " << endl;
cin >> nbEnfants;
} while (nbEnfants <20);

return 0;
}


et ca pour while :
#include <iostream>

using namespace std;

int main()
{
int nbEnfants (0);
while (nbEnfants <20)
{
cout << " Combien d'enfants avez vous ? " << endl;
cin >> nbEnfants;
}

return 0;
}


Dans les 2 cas le résultat est le même.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
Modifié par KX le 3/08/2011 à 17:11
Et bien, si il faut avoir au moins 20 enfants pour continuer, je plains la mère ^^

Ici ça revient au même car la premier test est faux dans le while, modifies tes initialisations pour voir la différence :

int nbEnfants=50; // lol 

Avec le do while, on aura au moins un passage dans la boucle, alors que dans le while la condition est déjà satisfaite par l'initialisation donc on ne rentre même pas dans la boucle.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
4 août 2011 à 08:20
Je dirai même plus, avec le do_while l'initialisation de nbEnfants est inutile, ce qui peut donner un avantage algorithmique si tu ne sais pas comment mettre la valeur au début.
La différence entre les deux types de boucle ne se fait sentir QUE si la condition est vérifié AVANT de faire le bloc. Je t'accorde que la différence n'est pas bien grande;
0