Kategorien
Honor Technology Retro Computing

C64 Basic – Schleifen

Dieser Beitrag beschäftigt sich mit sämtlichen Schleifen-Varianten. Von der For-To-Next Schleife bis zur Repeat-Until Schleife.
Zudem behandle ich die verschiedenen Abbruchbedingungen für Schleifen.

Mit der FOR ... TO ... NEXT Schleife kann man einen bestimmten Bereich durchlaufen.

Das ist die Grundform.
Diese Schleife zählt von 1 bis einschließlich 10 und gibt den Wert am Bildschirm aus.

Zeile 10 definiert die Schleifenvariable I und den Bereich, der durchlaufen werden soll. Ohne weitere Anweisungen dahinter wird immer in 1er – Schritten gezählt.

Danach (also ab Zeile 20) kommen sämtliche Anweisungen, die im Schleifenkörper ausgeführt werden sollen (also in einem Durchlauf).

Zeile 30 signalisiert nun, dass ein Durchlauf zu Ende ist. Die Schleife wird wiederholt durchlaufen, bis der Endwert erreicht ist, der in Zeile 10 definiert wurde.

Mit STEP 2 hat die Schleife eine Schrittweite von 2 und wird ihren Schleifenkörper nur jedes 2. Mal ausführen.
(also 1, 3, 5…)

Um die Zählung umzudrehen, gibst du einfach den Bereich anders herum an (also wie hier: 10 TO 1) und setzt die Schrittweite auf Minus (STEP -1)

Auch Gleitkommazahlen sind in der Bereichsangabe erlaubt.

Kommen wir nun zu zwei Schleifenvarianten, die nicht in einem Bereich zählen, sondern eine Abbruchbedingung prüfen. Sie zählen also solange, bis die Bedingung sie dazu veranlasst, die Schleife zu verlassen.

Die While-Do Schleife:
Zuerst erfragen wir eine Abbruchbedingung. In diesem Fall einen Wert, der erreicht werden soll.
Dann haben wir die Zähl-Variable A. Sie startet bei 1

Die While-Do Schleife prüft nun als erstes die Abbruchbedingung. Also ob die Zählvariable bereits dem Abbruchkriterium entspricht.
( IF A = W )
Wenn dem so ist, springen wir mit GOTO 80 aus der Schleife heraus.

Trifft die Bedingung nicht zu, wird der Code ab Zeile 50 abgearbeitet.

In Zeile 60 zählen wir dann A um 1 nach oben und gehen wieder zurück zur erneuten Prüfung in Zeile 40.

Die Prüfung der Abbruchbedingung und der „Aussprung“-Befehl gleicht dem „break“ in modernen Programmiersprachen.

Die Repeat-Until Schleife:

Diese Schleife unterscheidet sich von der While-Do Schleife nur dadurch, dass die Abbruchbedingung am Ende des Schleifenkörpers geprüft wird, und nicht am Anfang.
( Zeile 60 )

Somit wird die Schleife mindestens einmal durchlaufen, auch wenn das Abbruchkriterium bereits zutrifft.

Im Video habe ich zum Thema „continue“ ein Beispiel gemacht, das ein Modulo (Teilung mit Rest) nachbaut und den Schleifendurchlauf überspringt, wenn z.B. I % 2 == 0 zutrifft. (siehe Video ab: 12:01)
Und ich erwähne, dass dieses Muster aber auch für andere Fälle benutzt werden kann.

Hier ein Beispiel für eine Namensausgabe, bei der alle Namen, die mit einem bestimmten Buchstaben beginnen, nicht mit ausgegeben werden sollen. (auch wenn ich damit dem Thema Felder und dem Thema Funktionen vorgreife)

In Zeile 610 erfragen wir einen Buchstaben. C$

Dann lassen wir ab Zeile 630 in einer FOR-TO-NEXT Schleife fünf Namen eingeben und schreiben sie in das Feld N$.

Ab Zeile 660 beginnt jetzt die Ausgabe der Werte dieses Feldes.

Jetzt prüft Zeile 670, ob der Wert des Feldes an der Position der Schleifen-Variable mit dem eingegebenen Buchstaben C$ beginnt. Trifft dies zu, rufen wir nach THEN direkt NEXT I auf, ohne den Durchlauf weiter abzuarbeiten.

Dieses Pattern entspricht auch dem Schlüsselwort ‚continue‚ moderner Programmiersprachen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert