Merkwürdiges ergebniss bei For Schleife

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Frusciante

Betreff: Merkwürdiges ergebniss bei For Schleife

BeitragMi, Jul 08, 2009 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Code: [AUSKLAPPEN]

   For w = 0 To 10
      enemy(q,4) = EntityDistance(enemy(q,0),ally(w,0))
   Next
   Text3D(Font,-400,+170,"w " + w,0,0,0)


bei mir ist w = 11. Mir ist zwar klar das es 11 Schleifendurchläufe sind, aber w sollte doch trotzdem am Ende 10 sein wenn er die 0 mit zählt oder nicht?

grüße

Frusciante

Progger93

BeitragMi, Jul 08, 2009 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiß wird der Zähler am Ende der Schleife um 1 erhöt

Passiert bei mir ebenso
MfG Pascal
Win 7|T7250@2.0Ghz|3GB RAM|M8600GT

Der Eisvogel

BeitragMi, Jul 08, 2009 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, da eine For Schleife so aussieht:
BlitzBasic: [AUSKLAPPEN]
w=0
.label
;Code
w=w+1
If w<=10 Then Goto label


Somit ist w beim Verlassen der Schleife 11.

MfG
Der Eisvogel

SpionAtom

BeitragMi, Jul 08, 2009 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder anders ausgedrückt:

Code: [AUSKLAPPEN]
For i = 1 to 1
läuft 1 mal durch

Code: [AUSKLAPPEN]
For i = 0 to 1
läuft 2 mal durch

Code: [AUSKLAPPEN]
For i = 0 to 10
läuft 11 mal durch

Für 10 Durchläufe machs so:

Code: [AUSKLAPPEN]
For i = 1 to 10
läuft 10 mal durch

Code: [AUSKLAPPEN]
For i = 0 to 9
läuft 10 mal durch
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Der Eisvogel

BeitragMi, Jul 08, 2009 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
@SpionAtom: Wenn du For i=1 to 10 machst, so wird i am Schluss auch wieder 11 sein Wink
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

SpionAtom

BeitragMi, Jul 08, 2009 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh man, das kommt davon, wenn man die Frage nicht richtig liest...
Never mind.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

FWeinb

ehemals "ich"

BeitragMi, Jul 08, 2009 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@Der Eisvogel
Troßdem hat SpionAtom recht. Die Variable i wird zum beginn der Schleife mit dem Wert i=1 Initalisiert und dann wird 10 mal 1 dazuaddiert und dann kommt man halt auf 11
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs

Der Eisvogel

BeitragDo, Jul 09, 2009 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hab ich jetzt nicht kapiert.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Holzchopf

Meisterpacker

BeitragDo, Jul 09, 2009 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Macht nix, er auch nicht Mr. Green
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

hazumu-kun

BeitragDo, Jul 09, 2009 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Am ENDE Der Schleife wird i=i+1 ausgeführt.
Am ANFANG wird aber erst geprüft ob i noch im festgelegtem Bereich ist.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

DjDETE

BeitragDo, Jul 09, 2009 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
viken_emesh hat Folgendes geschrieben:
Am ENDE Der Schleife wird i=i+1 ausgeführt.
Am ANFANG wird aber erst geprüft ob i noch im festgelegtem Bereich ist.

Und somit ist der letzte w-Wert, der in der Schleife verwendet wird 10, obwohl w zum Schluss 11 ist.
MfG
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

Holzchopf

Meisterpacker

BeitragDo, Jul 09, 2009 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
DjDETE hat Folgendes geschrieben:
Und somit ist der letzte w-Wert, der in der Schleife verwendet wird 10
Ja, aber: Das erhöhen des Wertes gehört zur Schleife dazu.

For Schleifen lassen sich auch in anderen Schleifen ausdrücken:
Code: [AUSKLAPPEN]
Local a

For a = 1 To 2
   Print "in der Schleife: " +a
Next
Print "Nach der Schleife: " +a

a = 1
Repeat
   Print "In der Schleife: " +a
   a = a +1
Until Not (a <= 2)
Print "Nach der Schleife: " +a

a = 1
While a <= 2
   Print "In der Schleife: " +a
   a = a +1
Wend
Print "Nach der Schleife: " +a

WaitKey()
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

hazumu-kun

BeitragDo, Jul 09, 2009 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
DjDETE hat Folgendes geschrieben:
viken_emesh hat Folgendes geschrieben:
Am ENDE Der Schleife wird i=i+1 ausgeführt.
Am ANFANG wird aber erst geprüft ob i noch im festgelegtem Bereich ist.

Und somit ist der letzte w-Wert, der in der Schleife verwendet wird 10, obwohl w zum Schluss 11 ist.
MfG


Neien?
Wenn w=10 ist wird die Schleife noch ein letztes mal durchlaufen und am Ende i=i+1 ausführen.
Dann ist die Abbruchbedingung erfüllt.
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent
 

DjDETE

BeitragDo, Jul 09, 2009 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
das hab ich ja gemeint, dass der wert 11 dann nichtmehr benutzt wird für das was er will...
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Jul 09, 2009 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Variablen, die sich innerhalb eines Strukturbereiches (wie der For-Schleife) befinden, sollte man nicht auch außerhalb weiter benutzen. Wenn man aber den Wert benötigt (warum auch immer), sollte man dann eine zusätzliche Übertragungsvariable benutzen. Diese kann man sich aber sparen, da nur folgendes passieren kann:

1) Statische Angabe
Code: [AUSKLAPPEN]
For W=0 to 9
Next

Die ''9'' ist hardcoded und kann dann genauso hardcoded unter wieder eingesetzt werden

2) Variable Angabe
Code: [AUSKLAPPEN]
For W=0 to E
Next

Das ''E'' ist varaibel und wird letztendlich weiter unten benötigt. Also nimmt man diese statt ''W''

So einfach ist das.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group