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 :

Nombre d'itération d'une boucle POUR (pas <>1)


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 85
    Points
    85
    Par défaut Nombre d'itération d'une boucle POUR (pas <>1)
    Bonsoir,
    quand le pas (par défaut) de la boucle POUR vaut 1 le nombre d'itérations est Vf -Vi + 1 (valeur finale et initiale de la boucle)
    Mais quand le pas vaut 2,3... je n'arrive pas à trouver aucune relation d'ordre.
    Pouvez vous m'aider SVP.
    Merci.

  2. #2
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Nombre d'itération d'une boucle POUR (pas <>1)
    Bonsoir,

    J'ai l'impression que la formule proposée est inexacte.

    Si à chaque itération la grandeur considérée varie de (h), on obtiendra au bout de (N) étapes:
    Vf - Vi = N*h , d'où: Vf = Vi + N*h ,
    et dans le cas d'un pas égal à l'unité: Vf = Vi + N ,
    et non comme tu parais le déclarer Vf = Vi + N - 1 .


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  3. #3
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 85
    Points
    85
    Par défaut
    Merci beaucoup wiwaxia...j'ai testé et ça marche...mais avec le +1
    Je m'explique:
    Pour i de 1 a 10 faire nbr iteration = 10-1+1 = 10
    pour i de 5 a 10 faire nbr iteration = 10-5 + 1 = 6

    pour pas = 3
    pour i de 1 a 10 (pas =3) faire nbr iteration = (10-1)/3 + 1 = 4

    pour pas = 4
    pour i de 3 a 15 (pas =4) faire nbr iteration = (15-3)/4 + 1 = 4

    si le résultat n'es pas entier on a une boucle infini (i n'atteint jamais Vf)
    Merci énormément.

  4. #4
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Nombre d'itération d'une boucle POUR (pas <>1)
    Je vois ce que tu veux dire.

    Il y a un point de vocabulaire: une itération consiste en la répétition d'un calcul, d'un bloc d'instructions, ... etc.

    Quand un indice varie de 1 à 10 avec un pas égal à l'unité, il intervient (10 - 1 = 9) itérations (ou répétitions, étapes, incrémentations), et l'on effectue au total (10 - 1 + 1 = 10) opérations identiques.

    S'il varie plus généralement de (Vi) à (Vf) avec un pas (h), le nombre d'itérations est N = (Vf - Vi)/h
    et le nombre total de calculs: Nc = N + 1 .

    Il se peut que l'usage courant confonde les deux termes, sans grandes conséquences si l'on sait précisément ce que l'on fait.

    Question: un calcul exécuté deux fois est-il répété une fois ... ou deux ?


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  5. #5
    Invité
    Invité(e)
    Par défaut
    bj,

    opposé à ton point de vocabulaire.

    Il y a un point de vocabulaire: une itération consiste en la répétition d'un calcul, d'un bloc d'instructions, ... etc.
    https://developer.mozilla.org/fr/doc...it%C3%A9ration

    une itération c'est juste le nb de fois que tu fais un calcul (le même) mais avec la variable qui change.

    Merci beaucoup wiwaxia...j'ai testé et ça marche...mais avec le +1
    pour ton résultat tu vois bien que tu as posé Vf comme il faut pour step 3:
    Vi=1,
    Vf=10
    et comme par magie 1+3+3+3==10
    cette magie c'est juste le fait que t'as posé Vf = Vi+3k
    et evidemment pour compter le nb d'itérations il faut compter k + compter la premiere fois (qd la variable vaut Vi) idem k+1
    (qd tu fais ton compteur step 1, c'est exactement pareil, pour i=5 a 10, vf = vi+5*1, et avec k=5 et ton nombre d'iter c'est 5+1)


    si le résultat n'es pas entier on a une boucle infini (i n'atteint jamais Vf)
    généralement tu incrémentes ton compteur et tu sors de la boucle lorsque le compteur dépasse une cond limit, donc tu n'as pas de boucles infinie, tu finis par en sortir...


    si tu avais pris Vf = 11 au lieu de Vf=10
    tu aurais eu
    1 (premiere iter? 1<=11 oui)
    1 prend valeur 4
    4 (deuxieme iter? 4<=11 oui)
    4 prend valeur 7
    7 (troisieme iter? 7<=11 oui)
    7 prend valeur 10
    10 (quatrieme iter? 10<=11 oui)
    10 prend valeur 13
    13 (cinquieme iter? 13<=11 NON) <--on sort

    la formule donnerait qqch comme E( (vf-vi)/step)+1, avec E partie entiere, mais elle n'a aucun intérêt pratique à ma connaissance..

  6. #6
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Nombre d'itération d'une boucle POUR (pas <>1)
    Citation Envoyé par galerien69 Voir le message
    ... https://developer.mozilla.org/fr/doc...it%C3%A9ration

    une itération c'est juste le nombre de fois que tu fais un calcul (le même) mais avec la variable qui change ...
    On ne trouve rien de tel dans la référence que tu donnes.

    Mais pour aller dans ton sens, la même inexactitude figure dans un commentaire de code donné par Wikipédia, en contradiction de la définition donnée quelques lignes plus haut:

    Une itération en informatique est la répétition d'un bloc d'instructions dans un programme informatique.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a = 0
    for i from 1 to 3        // trois répétitions
    {
      a = a + i              // ajout de la valeur actuelle de i à a
    }
    print a                  // le nombre 6 est affiché (0 + 1; 1 + 2; 3 + 3)
    On devrait lire: trois incrémentations ou deux répétitions ...

    Encore une fois, c'est une approximation de langage qui, dans les commentaires, n'affecte pas la compréhension de l'algorithme.

    Il faut cependant être clair sur le sens des termes, comme en témoigne l'incompréhension initiale de cette discussion.

    Itérer:
    Empr. au latin iterare « recommencer, répéter; redire »
    Faire une seconde fois, une troisième fois, etc...`` (Littré).

    Une action recommencée une fois est bien exécutée deux fois, non ?

    La seule justification de cette confusion est l'extension de la notion d'itération au cas dégénéré d'un calcul unique (Vi = Vf)
    que l'on rencontre par exemple dans la double boucle itérative:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FOR i:= 1 TO (Max - 1) DO
      FOR j:= (i + 1) TO Max DO
        ...
    pour la dernière valeur du premier indice (i = Max - 1); il n'y a plus alors, au sens strict, de répétition, puisque l'on a dans ce cas:


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  7. #7
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Dans le domaine informatique, quand on demande le nombre d'itérations, on demande combien de fois on passe dans le corps de la boucle. Donc dans le cas où step vaut 1, la formule est bien Vf-Vi+1.
    Et dans le cas particulier où Vf=Vi, on passe 1 fois : c'est bien le résultat donné par la formule générale.

    Dans le cas où step est différent de 1, la formule est relativement similaire, mais il y a une petite difficulté.

    Par exemple si Step vaut 100, si Vi vaut 1, que Vf soit égal à 510, ou 520,... ou 580 ou ... 600 , le nombre d'itérations sera le même. Puis à nouveau , on a plein de valeurs, (610, 620, 630 ...) qui donnent le même résultat.
    Le résultat est donc une fonction en escalier.

    Et en principe, tu connais une fonction mathématique qui donne des résultats comme ça, en escalier.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Nombre d'itérations d'une boucle POUR (pas <>1)
    Vous avez sans doute raison: l'usage veut que ce soit le nombre d'actions effectuées, même s'il est en désaccord avec l'étymologie.

    Le plus curieux est je n'en aie pas trouvé de confirmation directe, lors d'une recherche sur "nombre d'itérations", hormis le détail mentionné dans l'article de Wikipédia. La détermination de cette grandeur (quand elle est mentionnée) est toujours très indirecte, car les calculs ne concernent en fait que la valeur finale de l'indice.

    J'ai cependant découvert une expression dépourvue d'ambiguïté: celle de "nombre de tours de boucle", qui ne se réfère pas au contenu algorithmique et s'applique aussi aux instructions <WHILE ... DO> et <REPEAT ... UNTIL>; elle correspond implicitement à la dernière intervention:

    Citation Envoyé par tbc92 Voir le message
    Dans le domaine informatique, quand on demande le nombre d'itérations, on demande combien de fois on passe dans le corps de la boucle ...
    et me paraît beaucoup plus claire; il n'y aurait eu aucun débat si elle était apparue dès le premier message (ceci dit sans aucun reproche pour paskal++, qui a amené un sujet intéressant).
    Nom : Nombre_Itérations.png
Affichages : 9438
Taille : 210,9 Ko


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  9. #9
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Il y a le mot réitération qui existe ... et qui correspond parfaitement à la définition que tu donnais au départ.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Le plus curieux est je n'en aie pas trouvé de confirmation directe,
    C'est normal, "itérer" n'existe pas. Ou plus précisément, c'est "réitérer" qui est usité.
    Mais les informaticiens se sont dit que, si "refaire" veut dire "faire à nouveau", alors "itérer" doit être l'action simple de "réitérer".
    Et c'est faux. "iterare" en latin, donc "itérer", veut dire la même chose que "réitérer". C'est-à-dire "répéter".


    Personnellement, pas trop envie d'aller contre le sens du vent.

    Prononc. : [iteʀe]. Étymol. et Hist. 1. 1488 [éd.] (Mer des hystoir., t. 1, fol. 125 a ds Gdf.), rare; Rich. 1680 note ,,Ce mot ne se dit pas, et en sa place on dit réïterer``; 2. 1918, math. (C.R. Ac. Sc., t. 166, p. 26). Empr. au lat.iterare « recommencer, répéter; redire ».
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Nombre d'itérations d'une boucle POUR (pas <>1)
    Citation Envoyé par Flodelarab Voir le message
    ... C'est normal, "itérer" n'existe pas ...
    "On a beau dire : réjouissez-vous ; eût-on itéré mille fois ce commandement, la joie ne vient pas", Bossuet, Sermons, Joie du chrétien, Préambule.
    https://www.littre.org/definition/it%C3%A9rer
    https://artflsrv03.uchicago.edu/phil...ad=it%C3%A9rer

    Il semble qu'on lui ait préféré, au cours du 17me siècle, le mot "réitérer".
    http://www.cnrtl.fr/definition/it%C3%A9rer
    Le Larousse mentionne "itération", mais ignore "itérer" et lui préfère "réitérer"; pareil pour le dictionnaire de l'Académie Française.
    http://www.cnrtl.fr/definition/acade...%A9it%C3%A9rer
    Citation Envoyé par Flodelarab Voir le message
    ... Ou plus précisément, c'est "réitérer" qui est usité ...
    http://www.cnrtl.fr/definition/r%C3%A9it%C3%A9rer
    https://www.littre.org/definition/r%C3%A9it%C3%A9rer

    À vrai dire, je me suis retrouvé submergé par les liens trouvés ...
    https://artflsrv03.uchicago.edu/phil...&start=0&end=0

    Ce mot, qui relève depuis très longtemps de l'usage courant, me paraît présenter des difficultés à cause de la redondance de son étymologie (= "à nouveau" + "répéter"), que tu as toi-même pointée.

    Citation Envoyé par Flodelarab Voir le message
    ... Personnellement, pas trop envie d'aller contre le sens du vent.
    Moi aussi , ce serait du temps perdu.
    En ce qui concerne l'informatique, il semble prudent de s'en tenir à: itérer / itération / processus itératif / nombre de tours de boucles (ou d'actions).

    J'ai eu, en cette occasion, l'agrément de redécouvrir les dictionnaires classiques.
    https://www.lexilogos.com/
    https://www.littre.org/
    http://www.cnrtl.fr/definition/
    https://artflsrv03.uchicago.edu/phil...4/publicdicos/


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  12. #12
    Invité
    Invité(e)
    Par défaut
    pour info c'était bien dans le lien @wiwaxia
    https://developer.mozilla.org/fr/doc...it%C3%A9ration
    La boucle while qui suit permet d'effectuer des itérations tant que n est inférieur à 3 :

    Après la première itération : n = 1 et x = 1
    Après la deuxième itération : n = 2 et x = 3
    Après la troisième itération : n = 3 et x = 6

    Une fois la troisième itération effectuée, la condition n < 3 n'est plus vérifiée, par conséquent, la boucle se termine.

    concernant le fait d'itérer ou de looper ou boucler, je me demande si le choix du mot ne dépend pas du nombre de syllabes "phonétiques" à employer
    t'itères: deux
    tu boucles: trois
    tu loopes: deux
    Dernière modification par dourouc05 ; 15/10/2018 à 16h16. Motif: SMS

  13. #13
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Nombre d'itérations d'une boucle POUR (pas <>1)
    Citation Envoyé par galerien69 Voir le message
    pour info c'était bien dans le lien @wiwaxia ...
    Je cherchais obstinément une définition explicite du nombre d'itérations ... il est vrai les commentaires de l'un des exemples de ton article allaient dans le même sens, mais pas d'une manière assez claire, pour moi - je suis peut-être un peu de mauvaise foi.

    Citation Envoyé par galerien69 Voir le message
    ... concernant le fait d'itérer ou de looper ou boucler, je me demande si le choix du mot ne dépend pas du nombre de syllabes "phonétiques" à employer
    t'itères: deux
    tu boucles: trois
    tu loopes: deux
    Franchement, le franglais n'arrange rien à l'affaire, dans un débat d'interprétation de termes français; une personne non avertie t'entendant parler de ce sujet risquerait fort de louper le sens de tes propos ...

    Cela résulte finalement d'une divergence de points de vue:
    a) si l'on considère une à une les (Na) actions effectuées (forcément peu nombreuses), on aura:
    # pour Na = 1 (action unique): pas d'itération (= répétition) au sens étymologique du terme;
    # pour Na = 2, 3, 4 ... (plusieurs actions): 1, 2, 3 ... répétitions, et plus généralement (Na - 1);

    b) si (point de vue du programmeur) l'on part du processus itératif devant conduire à la réalisation d'un certain nombre d'actions - en nombre éventuellement très élevé - on s'intéresse alors au nombre d'étapes effectuées, et l'usage a choisi l'expression "nombre d'itérations" pour désigner (Na); on ne peut aller contre, mais préférer cependant d'autres termes: nombre de tours de boucle , par exemple.

    La suite d'instructions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    i:= n;
    WHILE (i>a) DO i:= i - 1;
    contient le processus itératif défini pas le couple (WHILE ... DO ...), quel que soit le nombre d'actions effectuées:
    Na > 1 (n > a + 1) ; Na = 1 (n = a + 1) ou Na = 0 (n < a + 1) .


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  14. #14
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 85
    Points
    85
    Par défaut
    Merci de m'avoir répondu.
    Bon itération ou répétition .. du moment qu'on se comprend !
    une amélioration : (Vf-Vi)/valeur_absolu(pas) +1 dans le cas d'un pas négatif.
    le compteur peut ne pas atteindre Vf..dans certains langage de programmation ça ne pose pas de problèmes(langage C) dans d'autres on a une boucle infini (Pascal).
    Je marque comme résolu et vous remercie pour vos réponses

  15. #15
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Bonjour,
    Citation Envoyé par paskal++ Voir le message
    Je marque comme résolu et vous remercie pour vos réponses
    Aïe aïe aïe, il s'en va et il nous laisse avec cette embrouille sur les bras :

    Citation Envoyé par paskal++ Voir le message
    le compteur peut ne pas atteindre Vf.. dans certains langages de programmation ça ne pose pas de problèmes (langage C) dans d'autres on a une boucle infinie (Pascal).
    J'aimerais bien un exemple en Pascal sur la manière de ne pas atteindre Vf et générer une boucle infinie...

    Exemple de boucle en Pascal n'atteignant pas Vf :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure TForm1.Button3Click(Sender: TObject);
    var
      compteur: integer;
      Vi, Vf: integer;
    begin
      Vi := 1;
      Vf := 10;
      for compteur := Vi to Vf do begin
        // exécuter instruction(s) dans tous les cas, sauf si on sort de la boucle
        ShowMessage('valeur de compteur avant test = ' + IntToStr(compteur));
        if compteur * 2 > Vf then break; // on va sortir à i = 6
        // exécuter instruction(s)
        ShowMessage('valeur de compteur après test = ' + IntToStr(compteur));
      end;
    end;
    Avec cette procédure il y a succession des ShowMessage avant et après jusqu'à compteur = 5, ensuite 1 seul ShowMessage "avant" avec 6 et la boucle rend la main avec Break, la procédure est finie, et le prog est parfaitement actif, il n'y a pas de boucle infinie.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  16. #16
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Dans ton programme Pascal, tu mets ceinture et bretelle (une boucle for, plus une instruction Break pour sortir si la boucle for n'a pas fait le job) , et donc ça marche.

    Le code qui intéressait notre ami, ce serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for compteur := 1 to 10 step 2 do begin
      // Traitement
    end
    Et d'après ce qu'il dit, le code ci-dessus planterait en Pascal, parce que 10 n'est jamais atteint : compteur vaut successivement 1 3 5 7 9 11 13 ... mais jamais 10.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  17. #17
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 85
    Points
    85
    Par défaut
    Merci tbc pour ton exemple..c'est exactement ça... 10 n'est jamais atteint d’où la boucle infini !
    j'ai marqué la discussion comme résolu car j'ai eu la réponse que je voulais (Nombre d'itération d'une boucle POUR (pas <>1))
    Merci.

  18. #18
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Le code qui intéressait notre ami, ce serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for compteur := 1 to 10 step 2 do begin
      // Traitement
    end
    Ouf, step pas autorisé en Pascal, enfin FreePascal / Lazarus.

    Du coup, faut bidouiller. J'ai trouvé 3 pages avec des choses intéressantes, dont ça :

    Code pascal : 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
    21
    22
    23
    24
    25
    26
    27
    28
    {$modeswitch advancedrecords} // à mettre en haut sous "unit"
     
    type TIntRange = record
      c: integer;
      f,t,s: integer;
      function getEnumerator: TIntRange;
      function moveNext: boolean; inline;
      property current: integer read c;
    end;
     
    function range(f,t: integer; s: integer=1): TIntRange;
    begin
      result.c := f - s;
      result.f := f;
      result.t := t;
      result.s := s;
    end;
     
    function TIntRange.getEnumerator: TIntRange;
    begin
      result := self;
    end;
     
    function TIntRange.moveNext: boolean;
    begin
      c += s;
      result := c <= t;
    end;

    Et du coup,
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button3Click(Sender: TObject);
    var
      compteur: integer;
      Vi, Vf: integer;
      step: integer;
    begin
      Vi := 1;
      Vf := 10;
      step := 2;
      for compteur in range (Vi, Vf, step) do 
        ShowMessage('valeur de compteur = ' + IntToStr(compteur)); // 1 3 5 7 9
    end;
    Les ShowMessage ne dépassent pas 9, normal, mais ensuite la fiche est parfaitement réactive, et le prog ne bouffe pas tout le cpu.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  19. #19
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    step n'existe pas en turbo pascal / delphi.
    Cette "restriction" évite bien des comportements erratiques.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  20. #20
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    en algorithmie la boucle for n'est rien d'autre qu'une boucle while spécialisé avec un pas de 1 en pascal et non modifiable

    si tu veut faire un pas particulier deux solution se présente à toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Count := Nb Div Step ;
    For  i := 0 to  Count do 
      MaValeur := i*Step
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    i := 0;
    While i < Nb do
    begin 
       MaValeur := i;
      Inc(i,STEP)
    end;
    sinon la methode range de Jipété est sympa
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Batch] Utilisation d'une boucle pour compter le nombre de fichiers
    Par Med_be dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 15/08/2014, 23h23
  2. Réponses: 6
    Dernier message: 16/08/2007, 11h19
  3. je sais pas utilisé une boucle pour ?
    Par napz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/10/2006, 01h09
  4. Réponses: 8
    Dernier message: 15/06/2006, 18h13
  5. [ImageMagick] Une boucle pour ImageLine ?
    Par isa150183 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/11/2005, 18h41

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