Goto und Gosub - was ist das?

Bearbeiten

Mit Goto kann eine beliebige Stelle im Quelltext an der man eine Marke erstellt hat, angesprungen werden. Goto sollte niemals benutzt werden die beiden Befehle machen den Quelltext so unübersichtlich, dass man schon bei Programmen mit 10 Zeilen überlegen muss, was da eigentlich passiert. Hier ein Beispiel:

goto drittens
erstens:
print "Hallo"
sleep
end
zweitens:
print "Tschüss"
goto erstens
drittens:
goto zweitens

Goto und Gosub sind daher unter Programmierern nicht sonderlich gerne gesehen, zudem wurde mit FreeBasic 0.17 Gosub verbannt, es wird nur noch mit -lang qb unterstutzt; der Vollständigkeit halber seien sie jedoch dennoch hier aufgeführt.

Mit Goto springt man zu einem Label einer stelle im Quelltext an der ein Bezeichner mit Doppelpunkten steht, zum Beispiel "Test:". Eine zweite Möglichkeit ist noch eine Zeile mit einer Zahl zu beginnen, dann wird mit Goto die Zahl angesprungen.

10 print "hello World"
MyLabel:
print "eine zweite Anweisung"

Nach dem Sprung muss "manuell" ein Rücksprung durchgeführt werden, d.h. eine weitere GOTO-Zeile muss das Programm wieder dorthin zurückspringen lassen, von wo es aufgerufen wurde. Beispiel:

1 goto 4
2 print "Ciao"
3 goto ende
4 print "Welcome!"
5 goto 2
  ende:
  end

Wie sie sehen, wird Ihr Code dadurch sehr unübersichtlich. Ich möchte nochmal ausdrücklich sagen: "Benutzt Goto niemals!". Auch wenn es verlockend aussieht kann man jede Situation mit Funktionen, Schleifen und If-Abfragen lösen.

Gosub ist gleich wie Goto nur kann Gosub mit Return wieder zurück springen Beispiel:

gosub message
end
 
message:
print "Welcome!"
return

Für Gosub gilt das gleiche wie für Goto, niemals wirklich benutzten.