Bonjour,
J'aurai aimer connaitre la différence entre l'utilisation de for( ; ; ) par rapport a while(true) (ou while(1) selon les langages)
Un grand merci
Martin MAGAKIAN
Bonjour,
J'aurai aimer connaitre la différence entre l'utilisation de for( ; ; ) par rapport a while(true) (ou while(1) selon les langages)
Un grand merci
Martin MAGAKIAN
Dans mes programmes, si j'ai besoin d'une boucle "principale", j'utiliserai :
Maintenant, si c'est pour un décompte (5,4,3,2,1,0->BOUM)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int ma_var = 1; do { /* code */ } while(ma_var)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int i = 5; for (i;i>=0;i--) { /* code */ }
ça n'est pas la question que pose le PO...
En fait les 2 formes sont identiques.
Et aucune n'et plus "mieux" que l'autre...![]()
For est une boucle dont les contours sont déterminés à l'avance. While dépend de conditions internes.
Evidemment, ont peut tout faire avec chacune, mais quand tu connais par avance l'ensemble de ce que tu vas traiter(par exemple un tableau dont tu as la taille) For sera plus lisible. Si au contraire la sortie n'est pas anticipable(tu scannes un tableau jusqu'à la première ligne vide), alors While est bien plus efficace.
mais après, c'est aussi une question d'habitude. Mon père ne mets que des For, quitte à tourner parfois dans le vide, parcequ'il considère que c'est plus lisible. Moi je préfère While, parceque j'ai une meilleure maitrise de mes conditions de sortie.....
ne raconte pas n'importe quoi stp....
Les 2 exemples que le PO donne sont pour des boucles INFINIES.
Et dans ce cas, voir mon post plus haut....
OK merci des réponses :-)
Donc d'après toi "souviron34" au niveau du compilateur c'est la même chose et aucun n'est plus "optimisé" ?
non je ne crois pas..
Le compilateur est assez "intelligent" pour voir qu'il a affaire à une boucle infinie, et par conséquent la code comme il l'entend (qui sera sans doute lamême dans les 2 cas..). Je n'ai pas le temps de sortir le résultat en ASM, mais je suis quais-sûr qu'on verrait le même code avec les 2 manières..
Bonjour,
Les deux exemples sont effectivement identiques, dans les deux cas il s'agit d'une boucle infini, mais si je devais en choisir un, personnellement j'opterai pour while(1) mais c'est uniquement parce que je trouve que ca passe mieux a l'oeil.
Comme l'a dis souviron34 les deux fonctionnent, aprés chacun a sa préférence.
diva_69,
Les développeurs inexpérimentés (on est tous passé par là...) se soucient trop d'optimisation. Si tu fais un traitement dans ta boucle, alors le temps passé à simplement exécuter le code qui gère la boucle sera négligeable. Et si tu ne fais pas de traitement, alors pas la peine de le rendre rapide!
Pour le début, laisse le compilateur décider à ce niveau de détails ce qui est optimal, et concentre-toi sur les choix d'algorithmes, de structures, etc.
Bon courage,
Carl
Je n'aime pas ce genre de déclaration et je la déconseillerais.
Je n'aime pas du tout while(1) parce que c'est synonyme de plantages et d'application logicielle qui n'est pas intégre...
Je sais qu'évidemment dans un while(1) on met une séquence d'échappement, un break mais je ne suis pas trop fana de cela
petit exemple: va faire un chenillard sur une petite carte a pickit sans faire de boucle infini....
encore une fois nous sommes dans forum général et non pas spécifique a un language... quand j'ai commencé la prog sur pic (en assembleur au début puis en BASCOM, tous nos prog étais inclus dans une boucle infini.
Contrairement à mes estimés collègues, je ne vois pas bien en quoi une boucle infinie est révoltante... Il y a un tas de programme qui sont faits pour tourner éternellement sauf condition de sortie exceptionnelle, comme les serveurs, les services de l'OS, etc.
Ensuite comme l'a dit Souviron les deux formes sont équivalentes, for(;;) attire peut-être un peu plus l'œil, rendant évident le fait qu'il s'agit d'une boucle infinie, raison pour laquelle je l'utilise de préférence (mais c'est très subjectif).
--
Jedaï
Je veux bien mais c'est prendre certaines extrêmités; un chenillard c'est un chenillard et c'est sa seule fonction je regrette.
Un programme informatique c'est sensé effectuer plusieurs actions différentes, sauvegarder lire des données...bref il faut que l'utilisateur puisse interagir avec.
Imagines-tu dans un logiciel de compta ou bancaire mettre une boucle infinie ?
Partager