Schreibweise
| Form | Bedeutung |
|---|---|
FOR I=1 TO 10 | Zählt I von 1 bis 10. |
FOR I=10 TO 1 STEP -1 | Zählt rückwärts. |
FOR I=0 TO 100 STEP 5 | Zählt in Fünferschritten. |
NEXT | Schliesst die innerste offene Schleife. |
NEXT I | Schliesst ausdrücklich die Schleife mit der Variablen I. |
Der Aufbau einer Schleife
Zwischen FOR und NEXT steht der Schleifenkörper. Bei jedem NEXT wird die Zählvariable um die Schrittweite erhöht und geprüft, ob der Endwert überschritten ist. Wenn nicht, geht es zurück zum Anfang des Körpers.
Die Zählvariable ist eine ganz normale Variable, du kannst sie im Körper lesen und ausgeben.
10 FOR I=1 TO 5
20 PRINT "DURCHLAUF";I
30 NEXT
DURCHLAUF 1
DURCHLAUF 2
DURCHLAUF 3
DURCHLAUF 4
DURCHLAUF 5
Schrittweite mit STEP
Ohne STEP zählt BASIC in Einerschritten. Mit STEP lässt sich die Schrittweite frei wählen, auch negativ oder mit Nachkommastellen.
10 FOR I=5 TO 1 STEP -1
20 PRINT I
30 NEXT
40 PRINT "START!"
5
4
3
2
1
START!
Schleifen verschachteln
Schleifen dürfen ineinander liegen. Die innere Schleife läuft dann bei jedem Durchlauf der äusseren komplett durch. Wichtig ist die Reihenfolge: Die innere Schleife muss vor der äusseren geschlossen werden.
10 FOR Z=1 TO 4
20 S$=""
30 FOR X=1 TO Z
40 S$=S$+"*"
50 NEXT X
60 PRINT S$
70 NEXT Z
*
**
***
****
Die innere Schleife baut eine Zeile, die äussere wiederholt das viermal.
Die Verzögerungsschleife
Eine Schleife ohne Inhalt tut nichts, ausser Zeit zu verbrauchen. Genau das nutzte man am C64, um eine Ausgabe kurz stehen zu lassen, bevor die nächste kommt, denn einen Warte-Befehl gibt es in BASIC V2 nicht.
10 FOR C=0 TO 15
20 POKE 53280,C
30 FOR D=1 TO 5
40 NEXT D
50 NEXT C
Die innere Schleife bremst, damit jede Farbe kurz sichtbar bleibt. Ein grösserer Endwert macht die Animation langsamer.
Typische Stolperfallen
Der Körper läuft immer mindestens einmal
Auch bei FOR I=5 TO 1 (ohne STEP) wird der Körper einmal ausgeführt, denn geprüft wird erst beim NEXT. Das ist echtes C64-Verhalten und nicht immer das, was man erwartet.
NEXT vergessen
Fehlt das NEXT, läuft das Programm einfach weiter, die Wiederholung entfällt. Umgekehrt ergibt ein NEXT ohne offene Schleife einen ?NEXT WITHOUT FOR ERROR.
Zählvariable im Körper ändern
Das ist erlaubt und wurde früher benutzt, um eine Schleife vorzeitig zu verlassen. Übersichtlich ist es nicht: Besser mit einem IF und einem Sprung arbeiten.
Passt dazu
Im Kurs lernst du FOR ... NEXT in Lektion 11: FOR/NEXT: Schleifen. Die vollständige Referenz aller Befehle steht im Befehls-Lexikon.