Wie genau funktoniert Repeat/Until & While/Wend

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

hobby-spieler

Betreff: Wie genau funktoniert Repeat/Until & While/Wend

BeitragSa, Jun 12, 2010 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ich bin in einem BB Tutorial und verstehe nicht ganz wozu die Repeat und Until Schleife da ist.
Das Beispiel des Tutorials:

Code: [AUSKLAPPEN]

zaehler = 0

 Repeat                ;WIEDERHOLE
  zaehler = zaehler + 1   ;erhöhe die variable "zähler"
  Print zaehler           ;Gib den wert des zaehlers am bildschirm aus
 until zaehler = 10    ;BIS der zaehler gleich 10 ist


Das gleich mit While und Wend nur hier verstehe ich gar nichts mehr???
Das komplette Tutorial:

While/Wend

Eine der Unterschiede zwischen While- und Repeat-Schleife besteht darin, dass bei der While-Schleife zuerst die Abbruchbedingung getestet wird. Fällt dieser Test positiv aus, wird die Schleife ausgeführt.

Code: [AUSKLAPPEN]
While Bedingung  ;solange die Bedingung stimmt
 Print "Blah"
Wend             ;ende der Konstruktion


Wie man sieht, kann man eine While-Schleife anstelle einer Repeat-Schleife zur Erstellung der Main Loop (davon aber später) nutzen. Meistens wird aber die Repeat-Schleife verwendet. Bei manchen Befehlen funktioniert nur die eine bei manchen wieder nur die andere Schleife (sind allerdings wenige Befehle die da kritisch reagieren, vor allem bei den 3D-Kollisons-Befehlen ist das der Fall).

Code: [AUSKLAPPEN]
While not a=1


Code: [AUSKLAPPEN]
Wend


Dies ist eine besondere Schreibweise. Wenn a ungleich 1 ist wird die Schleife ausgeführt. Das wars dann an dieser Stelle, ist doch gar nicht so schwer, oder?

Quelle : http://de.wikibooks.org/wiki/B...ect.2FCase

Hubsi

BeitragSa, Jun 12, 2010 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Unterschied ist nur der das While kopfprüfend ist, Repeat dagegen Fußprüfend. Heißt, eine Repeat-Schleife wird mindestens einmal ausgeführt (sie prüft ja erst zum Ende) und eine While nicht zwangsläufig (sie prüft bereits vor Beginn eines Durchlaufs ob sie abgebrochen werden soll). Wenn Du z.B. mit Dateien mit "undefiniertem" Inhalt arbeitest wirst Du den Unterschied brauchen.

Edit: Undefiniert klingt jetzt etwas wild merke ich gerade beim Korrekturlesen Very Happy Gemeint ist eine undefinierte Anzahl an Datenblöcken als Beispiel, etwa beim laden der Gegnerdaten eines Spielstandes oder ähnliches eben.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Midimaster

BeitragSa, Jun 12, 2010 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Schleifen benötigst Du, um wiederkehrende Aufgaben durchzuführen.

Vielleicht hast Du schon die FOR/NEXT-Schleife verstanden? Hier geht es darum einen Codeteil x-mal durchlaufen zu lassen.

BlitzBasic: [AUSKLAPPEN]
For i=1 To 10
Print i
Next



Bei der REPEAT/UNTIL-Schleife ist es etwas anders. Sie wird oft eigesetzt, wo du noch nicht weißt, wieviele Schleifendurchgänge nötig sein werden, bzw. auch gerne für Endlosschleifen:
BlitzBasic: [AUSKLAPPEN]
Repeat
Wert=Rand(100) ;Zufallszahl auswählen
Print Wert
Until KeyHit(1)


Repeat/Until heißt ja übersetzt "Wiederhole...bis.." und meint "wiederhole diesen Codeabschnitt bis etwas Bestimmtes eintritt". Hier zum Beispiel läuft die Scheife bis jemand die ESC-Taste drückt:
BlitzBasic: [AUSKLAPPEN]
Until KeyHit(1)

KeyHit(1) ist die Abfrage, ob die ESC-Taste gedrückt wurde,


Du kannst aber auch jede andere Bedingung hinter UNTIL schreiben, etwa:
BlitzBasic: [AUSKLAPPEN]
Until Wert=55

dann läuft die Schleife bis WERT zufällig einmal 55 ist:
BlitzBasic: [AUSKLAPPEN]
Repeat
Wert=Rand(100) ;Zufallszahl auswählen
Print Wert
Until Until Wert=55



Willst Du mehrere Ausstiegsbedingungen ermöglichen, dann gibt es auch den EXIT-Befehl. Ihn kannst du mehrfach in dem Codeabschnitt einsetzen. Wird er irgendwann einmal im Programm erreicht, wird sofort die Schleife verlassen:
BlitzBasic: [AUSKLAPPEN]
Repeat
Wert=Rand(100) ;Zufallszahl auswählen
Print Wert
If Wert=55 Then Exit
Until KeyHit(1)


Der Unterschied zwischen REPEAT/UNTIL und WHILE/WEND ist nicht sehr groß und als Anfänger könntest du zunächst mit der ersten Methode ausreichend zurechtkommen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group