Seite 1 von 1

For Next, zählt einen zuviel?

Verfasst: 21.10.2007 15:17
von Kurzer
Hallo,

Habe hier eine Kleinigkeit, die mich gerade ziemlich genervt hat (weil ich's nicht wusste).

Code: Alles auswählen

For i = 10 To 2 Step -1
	Debug i
Next i

Debug "Jetzt ist i aber schon: " + Str(i)



For i = 2 To 10 Step 1
	Debug i
Next i

Debug "Jetzt ist i aber schon: " + Str(i)
Ist das in anderen Basics auch so, daß die Laufvariable einer For/Next-Schleife nach Durchlauf um 1 (bzw. 1 Stepwert) vom Zielwert differiert?

Re: For Next, zählt einen zuviel?

Verfasst: 21.10.2007 15:32
von Kiffi
Kurzer hat geschrieben:Ist das in anderen Basics auch so
ja, bei anderen Basics ist das auch so.

Grüße ... Kiffi

Verfasst: 21.10.2007 16:24
von PMV
Das ist auch bei anderen Sprachen so ... der Zähler wird bei jedem
Schleifendurchlauf um die Schrittweite erhöht, nur beim ersten mal nicht.
Erst nach dieser Erhöhung wird die Bedingung geprüft. Stimmt die
Bedingung nicht mehr, wird die Schleife abgebrochen. Der Zähler muss
also bei Schrittweite 1 auch am ende um 1 höher sein als gewünscht,
damit die Schleife abgebrochen wird. Nach diesem wird der Zähler
natürlich nicht extra wieder einen runter gezählt, da das quatsch wäre.

Hoffe so ist das verständlich.

MFG PMV

Verfasst: 21.10.2007 18:06
von Kurzer
Jo, danke für Eure Bestätigung, dass es anderswo auch so ist.
Ich habe leider außer PB gerade nichts anderes greifbar.

Verfasst: 22.10.2007 18:54
von Falko
Kurzer hat geschrieben:Jo, danke für Eure Bestätigung, dass es anderswo auch so ist.
Ich habe leider außer PB gerade nichts anderes greifbar.
http://www.ionicwind.com/
http://gfabasic32.googlepages.com/

Hier hast du außer PB noch weitere Möglichkeiten um es zu vergleichen.
Bei GFA-Basic kann ich dir sagen, das die Schleife passend nach n-Durchläufen beendet wird. Was außerhalb der Schleife ist, ist dann das gleiche Ergebnis, wie bei deinem Beispiel.

Grüße ...Falko

Verfasst: 23.10.2007 10:25
von ZeHa
Man brauch eigentlich nur mal das "Next i" übersetzen - "nächstes i" bzw. "nächster Wert für i", das heißt, dort, wo das "Next i" kommt, wird für i der nächsthöhere Wert eingesetzt.