Die erste Programmiersprache, der ich ausgesetzt war, war Sinclair BASIC . Wie bei vielen BASIC-Dialekten müssen alle Quellcodezeilen nummeriert werden .
Infolgedessen war die Verwendung des GO TOBefehls idiomatisch und springt zur angegebenen Zeilennummer (keine Bezeichnungen).
Es gibt auch einen zugehörigen GO SUBBefehl, der als rudimentärer Funktionsaufruf verwendet werden kann. Die Ausführung springt wieder zur angegebenen Zeilennummer, aber wenn ein RETURNBefehl erreicht ist, springt die Ausführung zurück zum nächsten Befehl nach dem GO SUB.
In ähnlicher Weise RUNstartet der Befehl die Programmausführung in der angegebenen Zeile neu.
Jeder, der Zeit in einem zeilennummerierten BASIC-Interpreter verbracht hat, hat gelernt, ein lückenhaftes Nummerierungsschema zu verwenden. Dies erleichtert das Einfügen neuer Codezeilen. Trotzdem müssen Sie möglicherweise immer noch neue Zeilen zwischen fortlaufend nummerierten Zeilen einfügen.
Bei einer Linie nummerierten BASIC Protokoll als Eingang, Ausgang das gleiche Programm , aber neu nummeriert , so dass die Zeilennummern bei 10 und Erhöhung in Schritten von 10 starten Die Eingangs Listing kann GO TOoder GO SUBBefehle, so verbunden sind die Zahlen mit diesen auch angepasst werden müssen.
GO TOundGO SUBBefehle stehen entweder in eigenen Zeilen oder am ZeilenendeIFTHEN. Es ist sicher zu sagen, dass^(\d+) .*GO (TO|SUB) (\d+)$es ausreicht, um solche Linien zu treffen. Diese Befehle in Anführungszeichen sollten ignoriert werden.RUNBefehle werden immer in eigenen Zeilen stehen. In diesem Fall ist eine Zeilennummer optional. Fehlt es, startet der Interpreter einfach oben im Programm.Wenn ein
GO TO,GO SUBoderRUNBefehl verweist auf eine nicht vorhandene Linie, dann wird es stattdessen auf die nächste definierte Linie springen. Ihr Eintrag muss sich damit befassen und sicherstellen, dass solche Zeilenreferenzen festgelegt sind, damit sie auf die richtige Zeile verweisen. Das Verhalten kann undefiniert sein, wenn in einem dieser Befehle eine Zeilennummer nach dem Programmende angegeben wird.Zeilennummern sind immer positive ganze Zahlen von 1 bis 9999 (gemäß Handbuch). Dies bedeutet, dass Eingabeprogramme niemals mehr als 999 Zeilen haben.
Eingabezeilen werden immer in numerisch aufsteigender Reihenfolge nummeriert.
Für die Zwecke dieser Herausforderung enthalten Eingabeauflistungen nur druckbare ASCII-Daten. Sie müssen sich nicht um den ZX-Zeichensatz kümmern. Having said that, wenn Ihr Eintrag in ZX BASIC tatsächlich geschrieben oder geeignete z80 Montage / Maschinencode (und es gibt Emulatoren heraus dort ), dann können Sie wählen für Ihre Eingabe in der codiert werden ZX - Zeichensatz statt.
Sie dürfen keine neu nummerierten Bibliotheken oder Dienstprogramme verwenden, die speziell auf diesen Zweck zugeschnitten sind.
Beispiel Eingabe:
1 REM "A rearranged guessing game"
2 INPUT A: CLS
3 INPUT "Guess the number ", B
10 IF A=B THEN PRINT "Correct": STOP
100 IF A<B THEN GO SUB 125
120 IF A>B THEN GO SUB 122
121 GO TO 3
125 PRINT "Try again"
126 RETURN
127 REM "An example of GO TO 7 and GO SUB 13 in quotes"
Beispielausgabe:
10 REM "A rearranged guessing game"
20 INPUT A: CLS
30 INPUT "Guess the number ", B
40 IF A=B THEN PRINT "Correct": STOP
50 IF A<B THEN GO SUB 80
60 IF A>B THEN GO SUB 80
70 GO TO 30
80 PRINT "Try again"
90 RETURN
100 REM "An example of GO TO 7 and GO SUB 13 in quotes"
Ich wollte auf ein ZX BASIC-Handbuch verlinken. Das Beste, was ich finden konnte, scheint http://www.worldofspectrum.org/ZXBasicManual/index.html zu sein, aber dies scheint ein toter Link zu sein. Die Wayback-Maschine hat jedoch eine Kopie .
GOTO 100 + A*10 und Anhang C der ZX Spectrum Handbuch Listen GO TOals numerischen Ausdruck akzeptiert (keine Beschränkung auf Konstanten). Im Folgenden werden die Vorteile von Computing GOTOfür ZX80 und ZX81 erörtert . Übrigens habe ich keine Ahnung, warum der Speicherplatz in der Spectrum-Version hinzugefügt wurde.