IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Beaucoup de boucles imbriquées ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Avatar de Tesing
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 453
    Points
    453
    Par défaut Beaucoup de boucles imbriquées ?
    Bonjour,

    on m'a dit qu'imbriquer 6 boucles c'est mal.
    Pourtant, en connaissant le problème traité, je sais que le nombre d'itérations diminue beaucoup au fur et à mesure qu'on entre dans les boucles imbriquées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Pour chaque position de la première pièce:
    Marquer cette position comme choisie;
    	Pour chaque position de la seconde pièce compatible avec la position choisie :
    		Marquer cette position comme choisie;
    		Pour chaque position de la troisième pièce compatible avec les positions choisies :
    			Marquer cette position comme choisie;
    			Pour chaque position de la quatrième pièce compatible avec les positions choisies :
    				Marquer cette position comme choisie;
    				Pour chaque position de la cinquième pièce compatible avec les positions choisies :
    					Marquer cette position comme choisie;
    					Pour chaque position de la sixième pièce  compatible avec les positions choisies :
    						Si il existe une position de la septième pièce compatible avec toutes les positions 						choisies :
    							Enregistrer l'ensemble des positions choisies comme une solution;
    						Fin si;
    					Fin pour chaque;
    				Fin pour chaque;
    			Fin pour chaque;
    		Fin pour chaque;
    	Fin pour chaque;
    Fin pour chaque;
    Quels est le problème posé par ce type de construction?
    Keep it simple, stupid !

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Citation Envoyé par Tesing Voir le message
    Quels est le problème posé par ce type de construction?
    La lisibilité ?

    En général pour faire face à ce type de problèmes on utilise la récursivité. Tu fais exactement la même chose dans toutes tes boucles, du coup tu fais une fonction récursive qui fait 1 seule boucle for. A chaque appel de fonction tu réduits le nombre de boucles (paramètre passé à la fonction), et quand tu arrives à la boucle souhaitée tu fais ce que tu as à faire
    Ca améliorera grandement la lisibilité, et ça clarifiera le code
    Plus tu pédales moins fort, moins t'avances plus vite.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    on peut garder des boucles imbriquées, mais en les formalisant, de cette manière on n'a plus de "boucles" mais des "if", ou un compteur simple.

    Il suffit de par exemple de formaliser les conditions, remplir des tableaux, et faire une boucle sur les tableaux..


    Mais c'est valable sur certains cas, pas sur tous...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #4
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    En reprenant ton pseudo-code et en utilisant la récursivité comme conseillé par Pouet_forever cela pourrait donner quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Procedure(param Pièce)
    	Si Pièce est derniere pièce
    		Enregistrer positions
    	Sinon
    		Pour chaque position de la pièce en cours:
    			Si cette position est compatible avec les pièces précédentes
    				Marquer cette position comme choisie
    				Procedure(Pièce suivante)
    			Fin Si
    		Fin Pour
    	Fin Si
    Fin Procedure
    Bon ce n'est qu'une ébauche avec du pseudo-code, à voir au niveau des paramètres ou autre en fonction de la situation réelle.
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

Discussions similaires

  1. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26
  2. boucle imbriquée
    Par zhoom dans le forum C
    Réponses: 4
    Dernier message: 07/11/2005, 13h10
  3. [Débutant]Boucle imbriquée avec des bornes différentes
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/08/2005, 16h23
  4. Boucles imbriquées
    Par Immobilis dans le forum ASP
    Réponses: 28
    Dernier message: 14/01/2005, 13h17
  5. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo