For Next, zählt einen zuviel?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

For Next, zählt einen zuviel?

Beitrag 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?
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: For Next, zählt einen zuviel?

Beitrag von Kiffi »

Kurzer hat geschrieben:Ist das in anderen Basics auch so
ja, bei anderen Basics ist das auch so.

Grüße ... Kiffi
Hygge
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag 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.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.02 x64, OS: Win 7 Pro x64 & Win 11 x64, Desktopscaling: 125%, CPU: I7 6500, RAM: 16 GB, GPU: Intel Graphics HD 520
Useralter in 2024: 56 Jahre.
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag 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.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten