Résolu Sortir d'une boucle ou d'une condition avant la fin

Solutions (14)
Tags :
  • Sauter
  • Php
  • Programme
  • Programmation
|
Bonjour !
Tout est dans le titre :bounce:  Je voudrais savoir comment sortir d'une boucle ou d'une condition avant la fin de celles-ci sans quitter le programme. Merci d'avance de vos réponses !
Contenus similaires
Meilleure solution
partage
|
Bonjour,

Pour beaucoup de langage, sortir d'une boucle ce fait avec l'instruction break, poursuivre la boucle (sauter une étape) ce fait avec continue.

Sinon, pour sortir d'une condition (un 'if') suffit de fermer l'accolade (en C/C++, PHP, etc.). Enfin, de sortir du bloc d'instruction quoi :o 

Malheureusement (pour toi), on ne peut te donner plus d'informations vue que tu n'as pas précisé quelle langage tu utilises.

Bonne journée
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par Alcooline.
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
yoye34 a dit :
Ca je m'en doutais... mais je pose la question pour un autre sujet, plutôt que de créer un topic exprès qui doit certainement déjà exister mais que je n'ai pas su trouver...
On sait jamais, je préfère l'indiquer ;) 

Dans mon sujet, j'ai résolu le problème tout seul mais je ne peux pas appliquer "Elire meilleure réponse" à une de mes réponses... Y a-t-il un contournement possible à cela ?[/quotemsg] Sinon tu peux éditer le 1er message en cliquant sur le bouton d'édition blanc. Tu pourras alors éditer le titre du message et ajouter un [Résolu]
  • Commenter cette réponse |
Score
0
òh
òi
|
Citation :
Ce sujet n'est pas le tien, donc tu ne pourras pas le mettre en tant que résolu.


Ca je m'en doutais... mais je pose la question pour un autre sujet, plutôt que de créer un topic exprès qui doit certainement déjà exister mais que je n'ai pas su trouver...

Citation :
Sinon il y a un bonton "Elire meilleure réponse" sous chaque réponse qui permet de passer le sujet en tant que résolu.


Dans mon sujet, j'ai résolu le problème tout seul mais je ne peux pas appliquer "Elire meilleure réponse" à une de mes réponses... Y a-t-il un contournement possible à cela ?
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Ce sujet n'est pas le tien, donc tu ne pourras pas le mettre en tant que résolu.
Sinon il y a un bonton "Elire meilleure réponse" sous chaque réponse qui permet de passer le sujet en tant que résolu.
  • Commenter cette réponse |
Score
0
òh
òi
|
Salut,

Quelques précisions sur ton commentaire :

Citation :
la traduction du break en langage machine est moins couteux ( donc plus performant ) que ta solution


Ton code

  1. while ( cnd1 )
  2. {
  3. if ( cnd2 ) { break; }
  4. }


est équivalent à :

  1. while ( cnd1 && bool1 )
  2. {
  3. bool1 = cnd2;
  4. }


Bon allez je te l'accorde, à l'affectation près... donc dans l'absolu tu as raison... qui plus est ta solution est meilleure puisqu'on économise la déclaration du booléen...

La où ça coince, c'est que le "break" n'a pas toujours l'effet escompté selon les compilateurs... du genre :

  1. while ( cnd1 ) /* 1er while */
  2. {
  3. while ( cnd 2 ) /* 2eme while */
  4. {
  5. if ( cnd3 ) { break; }
  6. }
  7. }


et là on s'attendrait avec le break à sortir seulement du 2eme while... or j'ai déjà utilisé un compilo pour power PC qui te fait sortir carrément du 1er while...

Enfin bref, c'est un détail, mais à force de bosser avec des normes sévères (DO178-B niveau A) j'ai pris cette habitude... et c'est pas plus mal, surtout pour garantir couverture structurelle et tests unitaires de ton code...

Je sais pas si j'ai apporté quelque chose, ou si je vous ferais quelque peu changer d'avis, mais bon, on est là pour apprendre des autres et discuter, non ?? :D 


@+ les gens

Au fait petit détail aux modos : comment je fais pour éditer mon sujet et mettre une balise [Résolu] ??
  • Commenter cette réponse |
Score
0
òh
òi
|
Salut,

Entièrement d'accord avec OmaR, de plus, la traduction du break en langage machine est moins couteux ( donc plus performant ) que ta solution.

Et surtout, ne me sors pas une solution sur avec un "goto" car là c'est encore pire.

Lorsque l'algorithme devient compliqué, je m'arrange au maximum pour le simplifier, exportation d'une parte dans une fonction/procédure (donc un return pour sortir en cours de route) etc.

Je préfère simplifier au maximum qu'ajouter des booléens a tout va ...

Et le "break" ce comprend facilement, au pire tu rajoutes un petit commentaire à coté pour spécifier le pourquoi du comment... Un code est bien plus lisible avec des commentaires ! (en général mes codes sont du 50/50, pour 200 lignes, il y a 100 lignes de codes et 100 lignes de commentaires ou presque)
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Le break ne me choque pas personnellement. Je l'utilise plutôt fréquemment.
Je ne suis pas un fan des imbrications imbriqués (:D ), du coup je quitte dès que possible les boucles avec des break ou return en fonction du cas.
  • Commenter cette réponse |
Score
0
òh
òi
|
Salut !

Sur le fond, bien d'accord avec Red et Omar... Mais sur la forme, le break en programmation c'est assez vilain...
Je veux dire qu'il y a toujours un moyen de s'en sortir autrement (par exemple en se servant d'une variable intermédiaire et en l'ajoutant dans la condition du while).

C'est vrai que comme ta boucle est assez simple, un break paraît suffisant... et simple dans l'implémentation !!! Mais en terme de lisibilité et SURTOUT de control flow, le break c'est pas joli, et c'est d'autant plus vrai quand la complexité de ton algorithmie augmente... Z'êtes pas de mon avis, vous autres ???
  • Commenter cette réponse |
Score
0
òh
òi
|
You're welcome.
  • Commenter cette réponse |
Score
0
òh
òi
|
Effectivement, ça marche, je craignais que ça ne sorte pas de tout le bazar mais c'est bon :)  Merci beaucoup !
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci OmaR.
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Tu mets alors un break; comme t'as dit Red
  • Commenter cette réponse |
Score
0
òh
òi
|
RedSux a dit :
Bonjour,

Pour beaucoup de langage, sortir d'une boucle ce fait avec l'instruction break, poursuivre la boucle (sauter une étape) ce fait avec continue.

Sinon, pour sortir d'une condition (un 'if') suffit de fermer l'accolade (en C/C++, PHP, etc.). Enfin, de sortir du bloc d'instruction quoi :o 

Malheureusement (pour toi), on ne peut te donner plus d'informations vue que tu n'as pas précisé quelle langage tu utilises.

Bonne journée


Oh oui, désolée j'oublie toujours de préciser, j'utilise le langage C. Je ne peux pas utiliser le fait que pour sortir d'une condition , il suffit de fermer l'accolade, car elle est valable SI une variable est égale a 0 par exemple, et grâce a une boucle la condition a lieu jusqu'a ce que la variable renvoie 1 :

  1. while(nombreTour != 9)
  2. {
  3.  
  4. comparer(variable1, caractere); // Variables qui renverront 1 si elles sont égales au caractere auquel je les compare
  5. comparer(variable2, caractere);
  6. if(variable1 != 1 && variable 2 != 1)
  7. {...}
  8. nombreTour++;
  9. if(nombreTour != 9)// Je revérifie car il y a eu plus tôt incrémentation
  10. {
  11.  
  12. comparer(variable1, caractere); // Je recompare car entre temps elles ont pu changer
  13. comparer(variable2, caractere);
  14. if(variable1 != 1 && variable 2 != 1)
  15. {...}
  16. }


Ce que je veux faire, c'est :
SI variable1 == 1 OU variable2 == 1
Sortir du WHILE (et non pas seulement du IF)
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS