[erledigt]For/Next - normales Verhalten oder Bug?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Toshy
Beiträge: 710
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

[erledigt]For/Next - normales Verhalten oder Bug?

Beitrag von Toshy »

Hallo.

Vorab, ich nutze noch die PB Version 5.60 und habe seit Jahren mich icht mehr mit PB beschäftigt, erinnere mich also nicht mehr an alles.

Code: Alles auswählen

    For Bytezaehler = 1 To 440
      
    Next Bytezaehler
    
    Debug "Bytezaehler:" + Str(Bytezaehler)
Wenn ich von dieser Schleife ausgehe hätte ich erwartet, NACH dem Ende der Schleife wäre der

Inhalt der Variablen "Bytezaehler" der Wert 440.

Nur ist es der Wert 441. Es wird also nach dem Ende der Schleife noch einmal hoch gezählt. Das kommt mir etwas eigenartig vor.

Ist das ein Bug, ist das "absichtlich" so und wenn es absichtlich ist, weshalb?
Das die Variable diesen Wert bekommen kann, obwohl er laut Schleife nicht auftreten dürfte erscheint mir nicht sehr schlüssig.

Gruß
Toshy
Zuletzt geändert von Toshy am 27.04.2019 03:16, insgesamt 1-mal geändert.
1. AMD Athlon II X2 250P,4GB-RAM,WinXP
2. Notebook,500mhz,128MB-RAM,WINXP
3. WHS 2003
Inet: 6Mbit Down/386Kbit Up,Flat
PB4.60
Messenger: Trillian
Benutzeravatar
Pelagio
Beiträge: 423
Registriert: 11.11.2004 17:52
Computerausstattung: Intel Core i3-4170 CPU 3,70 GHz
8,00 GB Arbeitsspeicher
WIN 10 Pro 64 Bit Betriebssystem
Wohnort: Bremen

Re: For/Next - normales Verhalten oder Bug?

Beitrag von Pelagio »

Guten Morgen Toshy,

das Verhalten ist normal.
Beim Befehl 'FOR x TO y' wird die Schleife abgefragt und am Ende 'NEXT x' der Wert erhöht.
Ist 'x' jetzt höher als 'y' so wird nicht mehr in die Schleife gesprungen sondern das Programm weiter ausgeführt.
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB6.03 LTS]. :allright:
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: For/Next - normales Verhalten oder Bug?

Beitrag von GPI »

Übrigens, es schadet nicht, den Inhalt von der Variable nach Next als ungültig anzusehen. Man sollte nicht damit arbeiten, ohne vorher sie einen Wert zuweisen.
Es ist bspw. denkbar, das man das Verhalten auf Grund von Optimierungen ändert oder eben, das es in anderen Programmiersprachen anders gelöst ist. Einfach eine Potentielle Fehlerquelle. Am besten Schleifen-Variablen nur innerhalb der Schleife benutzen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Kurzer
Beiträge: 1614
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Re: For/Next - normales Verhalten oder Bug?

Beitrag von Kurzer »

Die gleiche Frage hatte ich mir (und der geduldigen Community) vor 12 Jahren auch schon gestellt: viewtopic.php?f=3&t=14614
Irgendwie kam auch mir das fremd vor, aber das scheint wirklich normal zu sein. :)

(und weil ich offenbar irgendwann danach "geblitzdingst" worden bin, habe ich drei Jahre später die gleiche Frage noch einmal gestellt, wie ich bei meiner Suche gerade feststelle. :lol: - ich sag's euch, manche Multitasking-lastigen Berufe machen einen fertig.)
"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 2023: 56 Jahre.
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: For/Next - normales Verhalten oder Bug?

Beitrag von Josh »

Ist doch auch gut so. Damit kann überprüft werden, ob eine Schleife bis zum Ende durchlaufen wurde, oder ob sie mit Break abgebrochen wurde.
Toshy
Beiträge: 710
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Re: For/Next - normales Verhalten oder Bug?

Beitrag von Toshy »

Ich danke euch.
Vermutlich habe ich den Beitrag damals auch gelesen. Nur ihn nicht mehr gefunden.
Ist halt alles lange her.

Und ich kämpfe mich gerade wieder ein bissl rein in das Zeug. So ist es, wenn es scheinbar auf der ganzen erreichbaren Welt nicht ein Tool gibt, daß macht was es soll. hihi.

Na ja, eines vielleicht. Nur wird da ständig mein Antivirenprogramm wach.

Na dann muß ich das irgendwie manuell bzw. anders lösen. Ist schon dumm. Zweite Variable für das, was man eh schon gezählt hat. Und dann ist es noch an der idealen Stelle.

Na ja, mal schauen ob ich den Wert nur um eines runter setze oder extra eine oder mehrere Variablen nutze.

Nochmals danke und Gruß Toshy
1. AMD Athlon II X2 250P,4GB-RAM,WinXP
2. Notebook,500mhz,128MB-RAM,WINXP
3. WHS 2003
Inet: 6Mbit Down/386Kbit Up,Flat
PB4.60
Messenger: Trillian
Benutzeravatar
juergenkulow
Beiträge: 188
Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten

Re: For/Next - normales Verhalten oder Bug?

Beitrag von juergenkulow »

Hallo Toshy

Code: Alles auswählen

c:pbcompiler Bytezähler.pb /Commented
Erzeugt folgenden Code:

Code: Alles auswählen

; For Bytezaehler = 1 To 440
  MOV    qword [v_Bytezaehler],1
  JMP   _ForSkipDebug1
_For1:
_ForSkipDebug1:
  MOV    rax,440
  CMP    rax,qword [v_Bytezaehler]
  JL    _Next2
; 
; Next Bytezaehler
_NextContinue2:
  INC    qword [v_Bytezaehler]
  JNO   _For1
_Next2:
; 
; Debug "Bytezaehler:" + Str(Bytezaehler)
Gruß
Bitte stelle Deine Fragen, denn den Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im Universum.

Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: [erledigt]For/Next - normales Verhalten oder Bug?

Beitrag von silbersurfer »

was mir noch aufgefallen ist, dass wenn next von vornherein kleiner als Start ist, die Schleife wie bei While Wend gleich übersprungen wird.

Code: Alles auswählen

For t=0 To 0
	Debug T
Next 	
For t=1 To 0
	Debug T
Next 	
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: [erledigt]For/Next - normales Verhalten oder Bug?

Beitrag von GPI »

füg ein "Step -1" ein :)
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: [erledigt]For/Next - normales Verhalten oder Bug?

Beitrag von silbersurfer »

@GPI
füg ein "Step -1" ein
das weiß ich doch GPI, es ging mir mehr darum das nicht in die schleife gesprungen wird, sondern diese übersprungen wird was durchaus nützlich ist.
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Antworten