For - NEXT zählt eins zu hoch

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

For - NEXT zählt eins zu hoch

Beitrag von Max_der_Held »

Hallo Leute,

War das schon immer so, dass Purebasic beim Verlassen der For-Next Schleife den Zähler nochmal erhöht hat?

Beispiel:

Code: Alles auswählen

For x = 1 To 3
   Debug "o"
Next 

Debug x 
Sprich, das "x" wird nicht beim Durchlauf von "For" sondern von "Next" erhöht..

Ich dachte das war früher anders aber man korrigiere mich..?

Lg
Máx

(hat gerade irrsinnige Probleme verursacht...)
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: For - NEXT zählt eins zu hoch

Beitrag von CSHW89 »

Ich meine, das war schon so beim guten alten QBasic, oder irre ich mich da gerade, naja aber bei PureBasic schon seit dem ich damit programmiere.
Es liegt halt daran, dass es (umgeschrieben als While-Schleife) so implementiert ist

Code: Alles auswählen

x = 1
While (x <= 3)
  Debug "o"
  x + 1
Wend
lg Kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: For - NEXT zählt eins zu hoch

Beitrag von ts-soft »

Das ist ganz normal und war schon immer so :wink:

Aber dieser Beitrag ist in einem völlig ungeeigneten Unterforum, möge ein Mod doch bitte verschieben!

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: For - NEXT zählt eins zu hoch

Beitrag von Max_der_Held »

Ok, danke.

Ich hab bisher den iterator (das x) NACH der For schleife nie weiter benutzt.. -->

falsches Forum -> ok verschiebt es..
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: For - NEXT zählt eins zu hoch

Beitrag von CSHW89 »

Hab grad nochmal überlegt, wenn das letzte Hochzählen nicht drin wäre, würde das ungefär so aussehen:

Code: Alles auswählen

x = 1
While (x <= 3)
  Debug "o"
  If (x <= 3)
    Break
  EndIf
  x + 1
Wend
Ich wüsste jetzt nicht, wie das einfacher gehen würde. Das Problem dabei ist dann halt, dass die Abfrage zweimal drin ist. Das müsste so sein, da es ja auch sein kann, dass der Schleifenkopf (also Debug "o") gar nicht ausgeführt wird (Startwert größer Endwert).

lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: For - NEXT zählt eins zu hoch

Beitrag von Max_der_Held »

ö Zeile 4 muss heißen "if (x >= 3)" (das größer Zeichen is falschrum)
und Zeile 1 das While muss heißen: "While x < 3)" nicht kleinergleich...... :P sonst läufts ja 4 mal..

btw. gilt sowas?

Code: Alles auswählen

x = 1
Repeat 
  Debug "o"
  If (x >= 3)
    Break
  EndIf
  x + 1
ForEver 
lg max :)
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: For - NEXT zählt eins zu hoch

Beitrag von Max_der_Held »

PS:
Weil wir alle so hochbegabt sind, die Assembler Lösung:

Code: Alles auswählen

EnableASM
x = 1 
haus:
  Debug "o"
CMP x , 3
JZ  l_ende   
ADD x ,1
JMP l_haus 
ende:
Zuletzt geändert von Max_der_Held am 25.09.2011 19:31, insgesamt 1-mal geändert.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: For - NEXT zählt eins zu hoch

Beitrag von CSHW89 »

Max_der_Held hat geschrieben:ö Zeile 4 muss heißen "if (x >= 3)" (das größer Zeichen is falschrum)
sry stimmt
Max_der_Held hat geschrieben:und Zeile 1 das While muss heißen: "While x < 3)" nicht kleinergleich...... :P sonst läufts ja 4 mal..
Ne da war <= schon richtig. Dass es nicht 4mal durchläuft, dafür ist ja das If zuständig. Die Bedingung im Schleifenkopf war dazu da, um zu prüfen, ob der erste Wert überhaupt richtig ist:

Code: Alles auswählen

; Läuft einmal durch
For x = 3 To 3
  Debug "o"
Next
; Läuft KEINMAL durch
For x = 4 To 3
  Debug "o"
Next
Daher sind deine beiden Lösungen auch falsch. Sie würden sich anders als die For-Schleife verhalten, wenn der Startwert größer ist als der Endwert.

lg Kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: For - NEXT zählt eins zu hoch

Beitrag von Max_der_Held »

Falsch ist ein böses Wort :twisted:
Aber stimmt es würde bei mir mindestens einmal durchlaufen, anders als "for x = 4 to 3".. sprich es geht tatsächlich nur mit zwei Abfragen, wie dein Code.

Ich geh jetzt ins Bett, aber war interessant, das mal zu durchleuchten.

gute Nacht und lG

Max
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: For - NEXT zählt eins zu hoch

Beitrag von NicTheQuick »

ts-soft hat geschrieben:Aber dieser Beitrag ist in einem völlig ungeeigneten Unterforum, möge ein Mod doch bitte verschieben!
Done!
Antworten