Schreibweise
| Form | Bedeutung |
|---|---|
GOTO 100 | Setzt die Ausführung bei Zeile 100 fort. |
IF A<10 THEN GOTO 20 | Springt nur, wenn die Bedingung zutrifft. |
IF A<10 THEN 20 | Kurzform, das GOTO darf nach THEN entfallen. |
ON X GOTO 100,200 | Springt je nach Wert von X zum ersten oder zweiten Ziel. |
Eine Schleife von Hand
Mit GOTO und einer Bedingung baut man eine Wiederholung, ohne FOR zu benutzen. Das lohnt sich, wenn vorher nicht feststeht, wie oft sie laufen soll.
10 X=1
20 PRINT X
30 X=X+1
40 IF X<4 THEN GOTO 20
1
2
3
Solange X kleiner als 4 ist, springt Zeile 40 zurück. Danach ist das Programm zu Ende.
Die Endlosschleife
Ein GOTO ohne Abbruchbedingung läuft ewig. Das ist der Klassiker aus jedem Handbuch und manchmal genau richtig, etwa bei einem Programm, das auf Tastendrücke wartet. Abbrechen lässt es sich hier im Browser mit der Esc-Taste, auf dem echten C64 war es die Taste RUN/STOP.
10 PRINT "HALLO WELT"
20 GOTO 10
Läuft, bis du abbrichst. Genau dieses Listing stand in unzähligen Zeitschriften.
Warum GOTO einen schlechten Ruf hat
Wer Sprünge quer durchs Programm streut, erzeugt schnell ein Gewirr, das niemand mehr nachvollziehen kann. Dafür gibt es den Begriff Spaghetticode. Der Informatiker Edsger Dijkstra kritisierte das schon 1968 scharf, und BASIC bekam einen guten Teil dieser Kritik ab. Mehr dazu steht in der Geschichte von BASIC.
Für kleine Programme ist GOTO trotzdem völlig in Ordnung. Sobald ein Abschnitt aber mehrfach gebraucht wird, ist GOSUB die bessere Wahl, denn es findet von selbst zurück.
Zeilennummern in Zehnerschritten
Deshalb nummerierte man früher in Zehnerschritten: Zwischen 10 und 20 passen später noch neun Zeilen, ohne dass ein einziges GOTO angepasst werden muss. Wird die Lücke zu eng, muss man umnummerieren und jeden Sprung mitziehen.
Typische Stolperfallen
Sprung ins Leere
Zeigt ein GOTO auf eine Zeile, die es nicht gibt, meldet BASIC ?UNDEF’D STATEMENT ERROR. Meist wurde die Zielzeile gelöscht oder vertippt.
Sprung in eine Schleife hinein
Mit GOTO mitten in eine FOR-Schleife zu springen, lässt den Zähler durcheinandergeraten. Springe immer auf die FOR-Zeile selbst oder ganz aus der Schleife heraus.
GOTO statt GOSUB
Wer mit GOTO in ein Unterprogramm springt, kommt nicht zurück. Dafür ist GOSUB da.
Passt dazu
Im Kurs lernst du GOTO in Lektion 12: GOTO: Sprünge. Die vollständige Referenz aller Befehle steht im Befehls-Lexikon.