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

 C Discussion :

Explication boucle for


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    etudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : etudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Explication boucle for
    Bonjour,

    svp je suis un débutant et je souhaiterais avoir l'explication de cette boucle définie comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (I=0, J=0 ; I<N ; I++)
         {
          T[J] = T[I];
          if (T[I]) J++;
         }

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 622
    Points
    23 622
    Par défaut
    Apparement, c'est une boucle qui sert à « tasser » ton tableau vers le début en éliminant tous les éléments nuls.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 14
    Points : 42
    Points
    42
    Par défaut
    Si je te le traduis en français:
    Pour J = 0 et I = 0 (initialisation)
    Tant que I<N (condition)
    faire I++ (incrémentation = I + 1 à la fin des instructions) (itération)
    {
        le tableau T à l'indice J prend la valeur du tableau T à l'indice I
        Si T[I] est différent de NULL alors j'incrémente J
    } (instructions)
    Comme il a été dit précédemment, le but de cette boucle est d'éliminer les valeurs NULL du tableau sans en changer l'ordre des éléments.

    Pour débuter je ne peux que te conseiller d'éviter les boucles for, source d'erreurs chez beaucoup, de faire ton initialisation avant une boucle while classique (tu prends un poil plus de lignes mais tu liras plus facilement ton code).
    De plus, c'est pas vraiment joli ce: if (T[I]) J++; privilégie plutôt un retour à la ligne après la déclaration de la condition.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2018
    Messages : 1
    Points : 0
    Points
    0
    Par défaut J'ai eu un probléme de la même façcon veuiller m'expliquer !! :/
    Regardez cette boucle :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0,j=0;text[i];i++)
    pouvez-vous m'expliquer pourquoi la partie condition contient text[i] ?
    merci d'avance

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 642
    Points
    7 642
    Par défaut
    Bonjour,

    La boucle est parcourue tant que text[i]. Sachant qu'un scalaire est 'vrai' s'il est non nul cela correspond à parcourir la chaîne text tant que l'on n'a pas atteint la fin (car le terminateur '\0' vaut 0).

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 684
    Points : 30 973
    Points
    30 973
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par étudiantsupérieur Voir le message
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0,j=0;text[i];i++)
    pouvez-vous m'expliquer pourquoi la partie condition contient text[i] ?
    Bonjour
    La condition se lit "tant que text[i]" sous-entendu "tant que text[i] est vrai". or, en C, une valeur "non zéro" est considérée comme vraie. Donc se traduit finalement par "tant que text[i] différent de 0"
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    A noter que c'est quand même mal écris, et que text[i]!='\0' aurait été tellement plus explicite.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Explication boucle For ..... Next
    Par falcon02 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/10/2013, 18h18
  2. demande explication sur boucle "FOR"
    Par maori dans le forum Général Python
    Réponses: 4
    Dernier message: 02/01/2009, 17h37
  3. Explication de la boucle for(;;)
    Par Info_76 dans le forum C
    Réponses: 2
    Dernier message: 29/08/2008, 10h54
  4. Explication boucle "for"
    Par mactech dans le forum Langage
    Réponses: 7
    Dernier message: 13/12/2005, 15h38
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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