Citation Envoyé par Obsidian Voir le message
C'est dommage parce que continue a un avantage non-négligeable dans le cas de for : celui d'honorer dans tous les cas la post-condition (généralement l'incrémentation de la variable). L'autre solution consiste à faire un if qui englobe tout ce qui aurait suivi le continue. Les deux approches se valent.



Ben, chaque fois que l'on a affaire à plusieurs dimensions :

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
    int tab[10][10][10];
 
    int longueur;
    int largeur;
    int hauteur;
 
    for (hauteur =0;hauteur <10;hauteur++)
    for (largeur =0;largeur <10;largeur++)
    for (longueur=0;longueur<10;longueur++) tab[hauteur][largeur][longueur] = 0;
Sauf que, remis dans l'optique où un goto, un break ou un continue serait nécessaire, la fonction ne se contentera que rarement de mettre un élément à 0, et que, très souvent, il y aura des instructions dans les trois niveaux d'imbriquations
'faut se méfier des grands principes énoncés en programmation. Généralement, ils permettent d'identifier un cas de figurer récurrent en informatique et de s'y pencher scientifiquement. Mais c'est aussi bien souvent une manière d'inhiber le libre arbitre du codeur. Tout ces principes ne sont pas forcément valables, et ils sont généralement trop jeunes pour qu'on en fasse des dogmes.
Je te l'accorde sans aucun problème!

Mais, encore une fois, mis dans le contexte ou break, goto ou continue s'avèrent nécessaires, ils ont l'avantage de te forcer à garder des fonctions "aussi simples que possibles", et tout le monde y gagne
Dans le cas du principe de la responsabilité unique, bon nombre de gens soulèvent justement le problème de sa granularité ; jusqu'où faut-il pousser le vice ?
jusqu'au point adapté à la situation

Cette "réponse de normand" n'apporte peut être pas beaucoup d'éclaircissement, mais elle permet de généraliser et d'exprimer la notion que j'essaye de faire passer : une fonction ne devrait avoir à s'occuper que d'une seule ressource et ne devrais pas avoir à la modifier de plus d'une manière.

Si une fonction doit gérer plus d'une ressource ou si elle doit la modifier de plus d'une manière, il est sans doute intéressant de prévoir une fonction plus "atomique" pour chaque modification à apporter et une autre pour chaque ressource à gérer, de manière à ce que la fonction qui, justement, doit effectuer l'ensemble du traitement n'aie "qu'à appeler" les trois ou "quatre fonctions plus basiques", qu'il sera sans doute utile de pouvoir appler séparément dans certaines situations
Même chose avec un break, un continue et une fin de boucle ordinaire. Reconnais que trois fonctions pour les boucles ci-dessus seraient de trop, surtout si on tient compte du fait qu'elles sont les composantes indissociables de l'espace qu'elles forment.
Bien que la fonction ne présente ni break, ni goto, ni continue, je reconnais que ce serait un peu exagéré pour cette fonction particulière, non pas parce que les boucles font partie d'un espace indissociable, mais bien parce que la fonction elle même reste suffisamment simple pour ne pas (forcément) justifier le fait de la scinder en trois...

Et encore!!! Pour moi, tout code devant être écrit plus d'une fois justifie le fait de créer une fonction particulière, et donc, si pour une raison ou une autre tu en venais, à un moment donné, à n'écrire ne serait ce qu'un code proche de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
for(int i=0;i< MAXI;++i)
    truc[A][B][i]=0;
il serait peut etre intéressant d'envisager la création d'une fonction setLineToZero(int A, int B)