Incompréhension boucle for

Résolu
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007 - 7 juin 2006 à 10:20
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007 - 7 juin 2006 à 14:01
Dans un code que je dois traduire, il y a une ambiguïtée, je ne sais pas comment interprêter cette ligne de code :
For a = i + 1 To x + 1 Step -1

Doi-je comprendre :
for

(a = i + 1 ; a < x + 1 ; i--)

Où :
for

(a = i ; 1 < a < x + 1 ; i--)

?
Je pense savoir quelle est la bonne(je ne le dis pas pour ne pas vous influencer) mais un gros doute persiste.
Merci

Woot
Alias Wouter Tjon.

11 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 juin 2006 à 11:33
Dans un For, en deuxième position, tu places la condition qui te permet de rester dans la boucle.
a vaut tout d'abord (i+1), et tu décrémentes a jusqu'à atteindre (x+1).


Donc tu restes dans la boucle tant que a>=(x+1)

Dès que tu as la condition a<(x+1), tu sors de la boucle.









Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
3
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
7 juin 2006 à 11:34
Oui mais a diminue, donc c'est tant que a est supérieur (ou egal??) à la limite, sinon tu sors direct de ta boucle.

f.colo
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
7 juin 2006 à 10:36
Salut,
Je ne connaît pas (plus) trop VB, mais je dirais que c'est la première possibilité.
Mais quelque chose me dit que tu penses l'inverse lol
Faut attendre qu'une personne qui connaisse bien VB passe par ici...

<hr size= "2" /> VC# forever
=13319
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
7 juin 2006 à 10:54
Pour être honnête, je pensais à la première aussi, mais je n'en suis pas sûr parce-que je connaît VB mais je n'ai jamais vu ce genre de syntaxe.

Woot
Alias Wouter Tjon.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 juin 2006 à 11:15
Ni l'un ni l'autre en fait, çà donnerait plutôt ceci :




for (a= i+1; a>=x+1; a--)

a défile de (i+1) à (x+1) inclus, tout en se décrémentant de 1.

Donc à priori, (i+1) > = a >= (x+1)







Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
7 juin 2006 à 11:23
Alors là, je doit t'avouer que je ne comprend pas le a>=x+1 car dans le code de départ c'est bien 'To x' donc a<x+1, voir a <=x+1non?

Woot
Alias Wouter Tjon.
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
7 juin 2006 à 11:35
me suis fait avoir .... :'(

f.colo
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 juin 2006 à 11:38
La preuve par l'exemple. Ces deux codes affichent "6" "5" puis "4"




Tu peux tester ceci en C# :


        private void test()

        {

            int i = 5;

            int x = 3;

            for (int a = (i + 1); a >= (x + 1); a--)

                MessageBox.Show(a.ToString());

        }


Tu peux tester ceci en VBA (sous Excel par exemple) :


    Sub test()

        i = 5

        x = 3

        For a = (i + 1) To (x + 1) Step -1

            MsgBox a

        Next a

    End Sub

Manu

--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
7 juin 2006 à 11:45
Effectivement vous avez raison. Mais alors je ne comprend pas ce que fait mon traducteur.
Aller sur ce lien : http://www.ellkay.com/ConvertVB2Csharp_demo.htm, pui entrer ceci :"For a = (i + 1) To (x + 1) Step -1" dans le champs text.
Et il traduit en ceci :
for(a=(i+1);a<=(x+1);a--)
!?

Woot
Alias Wouter Tjon.
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 juin 2006 à 13:20
Exact, le site renvoit n'importe quoi.
D'ailleurs, si tu exécutes la conversion qu'ils proposent, tu vois bien
que çà ne fonctionne pas. Il faut un signe > au lieu de <

Manu

--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
0
woot6768 Messages postés 393 Date d'inscription mercredi 8 mars 2006 Statut Membre Dernière intervention 23 mars 2007
7 juin 2006 à 14:01
C'est vrai, merci pour votre aide.

Woot
Alias Wouter Tjon.
0
Rejoignez-nous