Kurs starten

**** FOR ... NEXT ****

FOR NEXT: Schleifen

FOR und NEXT wiederholen einen Abschnitt eine feste Anzahl von Malen und zählen dabei automatisch mit.

Schreibweise

FormBedeutung
FOR I=1 TO 10Zählt I von 1 bis 10.
FOR I=10 TO 1 STEP -1Zählt rückwärts.
FOR I=0 TO 100 STEP 5Zählt in Fünferschritten.
NEXTSchliesst die innerste offene Schleife.
NEXT ISchliesst 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.

Zählen 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.

Rückwärts zählen 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.

Ein kleines Muster 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.

Kurz warten 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.

HAEUFIGE FRAGEN

Fragen zu FOR ... NEXT

Wie beende ich eine FOR-Schleife vorzeitig?

BASIC V2 hat keinen Abbruch-Befehl. Üblich ist, die Zählvariable auf den Endwert zu setzen, oder mit einem IF ... THEN aus der Schleife heraus zu einer Zeile hinter dem NEXT zu springen.

Wie lange dauert eine Verzögerungsschleife?

Das hängt vom Rechner ab. Auf echter Hardware waren mehrere hundert Durchläufe nötig, hier im Browser wird jeder Schritt getaktet. Probiere den Endwert aus und passe ihn an.

Gleich selbst ausprobieren

Tippe die Beispiele in den freien Editor und sieh dir an, was passiert.

Freien Editor oeffnen →