A voir également:
- Boucles en C
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Pc qui s'allume et s'éteint en boucle - Forum Virus
- Huawei s'allume et s'éteint en boucle - Forum Huawei
10 réponses
for c'est plus général que while :
while(c){ } <=> for(;c;)
La première instruction du for est l'initialisation, la seconde la condition d'arrêt (c) comme dans un while, et la troisième l'instruction à exécuter en fin de boucle.
Personnellement je n'utilise presque jamais while puisque comme tu le vois tu peux otut faire avec un for, mais parfois un while est plus "lisible".
Le for permet d'alléger consdérablement le code : les deux codes suivants sont equivalents
Remarque de mamie :
l'instruction "vide" valant 1, tu peux utiliser une condition d'arret vide ! Ainsi while(1) <=> while() <=> for(;;) (boucle infinie, que tu interrompt avec un break). Et ceci permet d'introduire la remarque droïde qui dit que sur le papier c'est équivalent, mais à la compilation le for(;;) est plus rapide... Comme quoi on n'est jamais au bout de ses surprises ^^
Bonne chance
while(c){ } <=> for(;c;)
La première instruction du for est l'initialisation, la seconde la condition d'arrêt (c) comme dans un while, et la troisième l'instruction à exécuter en fin de boucle.
Personnellement je n'utilise presque jamais while puisque comme tu le vois tu peux otut faire avec un for, mais parfois un while est plus "lisible".
Le for permet d'alléger consdérablement le code : les deux codes suivants sont equivalents
unsigned int i; i=0; while(i<5){ printf("i=%d\n",i); ++i; } //------------- unsigned int i; for(i=0;i<5;++i;){ printf("i=%d\n",i); }
Remarque de mamie :
l'instruction "vide" valant 1, tu peux utiliser une condition d'arret vide ! Ainsi while(1) <=> while() <=> for(;;) (boucle infinie, que tu interrompt avec un break). Et ceci permet d'introduire la remarque droïde qui dit que sur le papier c'est équivalent, mais à la compilation le for(;;) est plus rapide... Comme quoi on n'est jamais au bout de ses surprises ^^
Bonne chance
Salut, non pas du tout, tu peux mettre des if dans les while et les for
je peux aussi faire (mais vraiment illisible)
regarde bien le code précédent : je mis un ; après mon for, mais tu vois bien que c'est illisible.
pour ma part : j'utilise un for quand je connais le nombre d'itérations maximale et un while quand je ne le connais pas (par exemple, je parcours tous les éléments d'un tableau et je sors dès que l'élément vaut -1), mais tu vois que for et while sont vraiment liées.
J'espère que j'ai été clair...
for(i=0;i<5;++i) if(i==2) printf("toto\n"); else printf("tata\n"); i=0; while(i<5) { if(i==2) printf("toto\n"); else printf("tata\n"); ++i; }
je peux aussi faire (mais vraiment illisible)
for(i=0;i<5;if(i==2) printf("toto\n"); else printf("tata\n"); ++i;);
regarde bien le code précédent : je mis un ; après mon for, mais tu vois bien que c'est illisible.
pour ma part : j'utilise un for quand je connais le nombre d'itérations maximale et un while quand je ne le connais pas (par exemple, je parcours tous les éléments d'un tableau et je sors dès que l'élément vaut -1), mais tu vois que for et while sont vraiment liées.
J'espère que j'ai été clair...
while(c) <=> for(;c;)
Partant de la tout ce que peut faire un while tu peux toujours le faire avec un for. Sauf qu'en plus, for c'est plus rapide une fois compilé.
Bonne chance
Partant de la tout ce que peut faire un while tu peux toujours le faire avec un for. Sauf qu'en plus, for c'est plus rapide une fois compilé.
Bonne chance
voici un code que j'ai fait avec while , il marche parfaitement :
j'essaye de le recoder avec for , vous me direz si j'ai bon :
bon là j'ai pas vraiment gagné en terme de lisibilité , while et for sont égaux sur ce coup :)
char c = 'a'; while ( c <= 'z' ) { if ( c % 2 == 0 ) putchar(c); if ( c % 2 != 0 ) putchar ( c - 32 ); ++c; }
j'essaye de le recoder avec for , vous me direz si j'ai bon :
char c = 'a'; for ( c = 'a'; c <= 'z'; ++c) if ( c % 2 == 0 ) putchar(c); if ( c % 2 != 0 ) putchar ( c - 32 );
bon là j'ai pas vraiment gagné en terme de lisibilité , while et for sont égaux sur ce coup :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
alors autant faire pareil avec le while , et dans ce cas il n'y a aucun avantage , ni dans l'un , ni dans l'autre :
char c = 'a';
while ( c <= 'z' )
{
if ( c % 2 == 0 )
putchar(c);
else
putchar ( c - 32 );
++c;
}
char c = 'a';
while ( c <= 'z' )
{
if ( c % 2 == 0 )
putchar(c);
else
putchar ( c - 32 );
++c;
}
C'est une question de présentation ça ne va pas plus loin. En fait je ne sais pas si ca marche en C (mais ca marche en c++), tu devrais écrire :
Car la portée de la variable c serait l'horizon délimité par les { } de la boucle for. Chose que tu ne pourrais pas faire avec un while...
for (char c = 'a'; c <= 'z'; ++c){ if (c%2==0) putchar(c); else putchar(c-32); }
Car la portée de la variable c serait l'horizon délimité par les { } de la boucle for. Chose que tu ne pourrais pas faire avec un while...
oui mais non faut pas commencer à m'embrouiller avec le C++ svp , restons dans le C , et à ce que je sache en C on ne met pas d'accolades avec le for...
Salut Sarah, les accolades servent à faire plusieurs instructions. Si tu fais
for(blabla)
instruction 1;
instruction 2;
...
instruction n
SEULE la 1e instruction sera exécutée dans le for. Si tu fais
for(blabla)
{
instruction 1;
instruction 2;
...
instruction n
}
TOUTES les instructions seront exécutées dans le for.
Ce qui est vrai pour le for est vrai pour le while, le if, le else.
Remarque : l'instructin if... else... n'est qu'une seule instruction.
for(blabla)
if i>5
blabla1;
else blabla2;
ici il n'y a qu'une seule instruction.
for(blabla)
instruction 1;
instruction 2;
...
instruction n
SEULE la 1e instruction sera exécutée dans le for. Si tu fais
for(blabla)
{
instruction 1;
instruction 2;
...
instruction n
}
TOUTES les instructions seront exécutées dans le for.
Ce qui est vrai pour le for est vrai pour le while, le if, le else.
Remarque : l'instructin if... else... n'est qu'une seule instruction.
for(blabla)
if i>5
blabla1;
else blabla2;
ici il n'y a qu'une seule instruction.
Si, bien sûr que si. En C comme en C++ pas de problème. C'est juste la déclaration dans le for qui ne doit pas marcher en C.
For et while marche pareil en C et en C++
Ce sont deux "structures" equivalentes et on peut toujours utiliser l'une à la place de l'autre. Je ne suis pas certain que le for fasse gagner du temps à la compilation mais je n'affirmerai rien, j'en sais rien !
J'utilise le for qd j'ai besoin d'initialiser une variable au debut de la boucle
(Genre le compteur de la dite boucle)
a+
dje-dje
Ce sont deux "structures" equivalentes et on peut toujours utiliser l'une à la place de l'autre. Je ne suis pas certain que le for fasse gagner du temps à la compilation mais je n'affirmerai rien, j'en sais rien !
J'utilise le for qd j'ai besoin d'initialiser une variable au debut de la boucle
(Genre le compteur de la dite boucle)
a+
dje-dje
Il fallait lire :