question sur une boucle et un break
Bonjour
j'aurai une question à demander.
si j'ai le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
for (i=0;i<2;i++)
{
if (T[i][colonne_pivot]>0)
{
bornee=1;
break;
}
else
{
bornee=0;
}
} |
je voudrai que le programme sort de la boucle for avec mon "break" si bornee=1 mais qu'il reste dans la boucle for si break=0.
DONC dans mon code, le break me permet de sortir du if mais sort t'il aussi de la boucle for? ou alors je dois rajouter un 2ème break juste avant la dernière accolade pour sortir de la boucle for?
je veux que si mon programme rencontre la valeur 1 alors il sort de la boucle for (en mettant bornee=1).
Si mon programme rencontre la valeur (-2) alors il sort de la boucle if (en mettant bornee=0) et ensuite quand il rencontre la valeur (1) il sort de la boucle for (en mettant bornee=1).
je ne suis pas sûr de mon code avec le break , s'il sort que du if ou si je dois rajouter un autre break pour qu'il sorte de la boucle for.
merci
Rappel: les boucles sont interchangeables ;)
Salut,
Tu as deux solutions:
Soit tu utilises une autre sorte de boucle (un do... while() semble l'idéal)
Soit tu force la valeur de i dans ton test de manière à ce que tu n'entre plus dans la boucle...
Le code avec la boucle "pour":
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
for (i=0;i<2;i++)
{
if (T[i][colonne_pivot]>0)
{
bornee=1;
i=2;/* ou n'importe quelle valeur qui ne soit pas plus petite que 2 */
}
else
{
bornee=0;
}
} |
qui pourrait logiquement etre améliorée sous la forme de
Code:
1 2 3 4 5 6 7 8 9 10 11
|
bornee=0;/*par défaut, ce n'est pas borné ;) */
for (i=0;i<2;i++)
{
if (T[i][colonne_pivot]>0)
{
bornee=1;
i=2;/* ou n'importe quelle valeur qui ne soit pas plus petite que 2 */
}
/* plus besoin de dire que bornee vaut 0 si le test n'est pas vérifié ;) */
} |
avec une boucle do... while()
Code:
1 2 3 4 5 6 7 8 9 10 11
|
i=0;
bornee=0 /* par défaut, ce n'est pas borné ;) */
do
{
if (T[i][colonne_pivot]>0)
{
bornee=1;
}
++i;
}while(i>=2 && bornee!=1); |
Dans la série les goûts et les couleurs...
Si tu es soumis à des règles de codage qui t'interdisent:
-l'utilisation des breaks (assez fréquent),
-la modification d'un compteur de boucle dans une boucle for (plus rare),
-l'utilisation de goto (très fréquent),
tu peux aussi introduire un indicateur de terminaison que tu testes à chaque itération en même temps que l'évolution du indice de boucle.
J'avoue que, personnellement et sans contraintes, j'ai plutôt tendance à utiliser la modification du compteur, mais s'il y a une règle je la respecte même lorsqu'elle me semble à la limite de la paranoïa.
Même des règles de codage "mauvaises" ont au moins l'avantage de standardiser le style de codage et donc de faciliter la maintenance.
Chaque développeur à un style différent (on viens de voir à l'instant que les 3 avis solicités sont différents ;) ).
Si un soft doit voir passer une quinzaine de développeurs il vaut mieux lisser les différences sinon :aie: .