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

Discussion :

Boucle For et While

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Boucle For et While
    JE SUIS UN DEBUTANT EN INFORMATIQUE
    je veux bien comprendre le mécanisme de fonctionnement de ce 2 boucles for et while et la diffrence entre eux si elle existe?
    MERCI

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Bonjour,

    Tu as une explication dans la FAQ PHP :

    Comment faire une boucle ?

  3. #3
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    pour formuler autrement : dans une boucle FOR...NEXT, tu détermines un compteur, son départ, son arrivée, et son incrément. En bref, tu sais à l'avance combien d'executions de la boucle tu vas faire. Ca facilite la boucle quand l'ensemble des informations est connues. Exemple : je fais un calcul par région, et je connais déjà le nombre de régions : FOR NUM_REGION = 1 TO NOMBRE_REGION......NEXT.

    While permet de gérer dynamiquement les limites de la boucle. Il est plus puissant, mais le risque est de se tromper sur les conditions de sortie, et de "boucler" infiniment.
    NUM_REGION = 1
    WHILE NOM_REGION(NUM_REGION) <> ""
    .....
    NUM_REGION = NUM_REGION + 1
    WEND

    si tu oublies la ligne en vert, tu est cuit : ton programme "boucle". Mais c'est plus puissant, car on peut coder des conditions de sorties en tous genres, pas seulement sur un compteur.

    A noter aussi que certains langages autorisent des sorties forçées de boucles FOR; genre EXIT FOR(en VB si ma mémoire ne me fait pas défaut). Reste que si avant la boucle tu ne connais pas de borne de fin pour celle-ci, le passage par WHILE est obligatoire.


    à noter qu'en COBOL, le seul ordre de boucle est PERFORM.....UNTIL condition, qui est comme un while, sauf que l'on sort dès que la condition est vraie. Un WHILE condition sort dès que la condition est fausse.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    La première question serait : de quel langage parles-tu ? Selon le langage, la boucle for fait des choses légèrement différentes.

    --
    Jedaï

  5. #5
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    en général on peut faire les mêmes choses avec ces deux boucles, c'est souvent la lisibilité qui change.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pour i de 1 à N par pas p faire ...
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    i = 1
    Tant que i <= N faire
    début
    ...
    i = i + p
    fin
    Si tu connais les indices de début et de fin, c'est souvent plus lisible d'utiliser un boucle for. Si c'est une condition particulière, le while est souvent mieux adapté.
    Le plus simple est toujours de se poser la question "comment ferai je ?" ou "comment l'expliquerai je ?". Tu verras que pour résoudre ton problème tu utilisera souvent "pour" ou "tant que" ce qui te donnera une bonne indication.
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

  6. #6
    Membre actif Avatar de SmileSoft
    Inscrit en
    Mars 2008
    Messages
    436
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 436
    Points : 214
    Points
    214
    Par défaut
    Salut,

    On utilise for quand on sait au préalable le nombre d’itération, par contre dans la boucle while on n’a pas besoin de cette information.

    Exemple montrant la différence entre les 2 boucles :

    Si par exemple tu cherche l’élément x dans un tableau T, avec la boucle for tu dois parcourir tous le tableau pour voir est ce que x existe dans T, par contre avec while tu sors de la boucle dés que tu trouve le x.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Existe= faux;
    
    Pour i de 1 à N par pas 1 faire
        début 
           si (T[i]=x) alors Existe=vrai;// si on a trouvé x pourquoi continuer la 
    recherche
        fin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 1
    Existe=faux;
    Tant que x!=T[i] faire // une foi x trouvé sauter la boucle.
         début 
        i=i+1; 
        fin.
    Existe=vrai;
    Si maintenant tu cherche le nombre d’apparition de l’élément x dans le tableau T, dans ce cas là la boucle for est mieux adaptée car tu est obligé de parcourir tous le tableau pour compter combien de x tu a dans le tableau T.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Existe= faux;
    Nb_x=0;
    Pour i de 1 à N par pas 1 faire 
    début
    si T[i]=x alors 
    début
    Existe=vrai;
    Nb_x=Nb_x+1;
    finsi;
    fin.
    Code :

    Pour i de 1 à N par pas p faire ...

    est équivalent à
    Code :

    i = 1
    Tant que i <= N faire
    début
    ...
    i = i + p
    fin
    On peut toujours avoir un while à partir d’un for mais l’inverse non !
    La caractéristique principale de la boucle While est qu’elle teste sa condition avant d’exécuter son contenu c à d, si la condition n’est pas vérifié on sort directement de la boucle sans exécuter le contenu; par contre avec la boucle for une foi on rentre dans la 1ere itération on est obligé de faire toutes les itérations j’jusqu'à la fin.
    Un thésard a souvent un problème de motivation jusqu'au moment où il aura un problème de temps....

  7. #7
    Membre confirmé
    Avatar de MaliciaR
    Inscrit en
    Juillet 2008
    Messages
    513
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 513
    Points : 600
    Points
    600
    Par défaut
    Citation Envoyé par SmileSoft Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Existe= faux;
    
    Pour i de 1 à N par pas 1 faire
        début 
           si (T[i]=x) alors Existe=vrai;// si on a trouvé x pourquoi continuer la 
    recherche
        fin.
    Juste dis que les double antislash (//) marquent les commentaires et ne font donc pas partie du code lui-même.

    Et personne ne parle de la boucle do-while?
    Le tact dans l'audace c'est de savoir jusqu'où on peut aller trop loin. Cocteau
    L'abjection la plus totale, ce n'est pas de trahir, c'est de ne jamais donner un commencement de réalité à ses rêves les plus fous. M. Moreau


    Les indispensables : Les règles, , FAQ et tutos avant de poster, et !
    Traduction de Linux Device Drivers 3 : venez participer
    membre de l'April - Promouvoir et défendre les logiciels libres

Discussions similaires

  1. [Débutant] Boucles for et while: cas d'utilisation
    Par wolf11 dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/10/2011, 19h33
  2. Boucle for Vs While sur un Iterator
    Par thierryler dans le forum Langage
    Réponses: 6
    Dernier message: 27/10/2010, 13h30
  3. Boucle for ou while
    Par auberstar dans le forum Débuter
    Réponses: 5
    Dernier message: 01/05/2010, 20h22
  4. [Optimisation] Boucles for ou while et mysql_result ?
    Par sorenson dans le forum Langage
    Réponses: 5
    Dernier message: 22/12/2006, 09h55

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