Bahasa pemrograman pertama yang saya kenal adalah Sinclair BASIC . Seperti banyak dialek BASIC, semua baris kode sumber harus diberi nomor .
Akibatnya, penggunaan GO TOperintah itu idiomatis dan melompat eksekusi ke nomor baris yang diberikan (tidak ada label).
Juga ada GO SUBperintah terkait yang dapat digunakan sebagai panggilan fungsi yang belum sempurna. Sekali lagi, eksekusi melompat ke nomor baris yang diberikan, tetapi ketika aRETURN perintah tercapai, eksekusi melompat kembali ke instruksi berikutnya setelah GO SUB.
Demikian pula dengan RUN perintah akan memulai kembali eksekusi program pada baris yang diberikan.
Siapa pun yang telah menghabiskan waktu dalam juru bahasa BASIC bernomor garis akan belajar menggunakan skema penomoran dengan celah di dalamnya. Ini agar lebih mudah untuk menyisipkan baris kode baru. Namun demikian, Anda mungkin masih perlu memasukkan garis baru di antara garis yang diberi nomor secara berurutan.
Diberikan daftar BASIC bernomor garis sebagai input, output program yang sama tetapi dinomori ulang sehingga nomor baris mulai dari 10 dan bertambah dengan langkah 10. Daftar input mungkin memiliki GO TOatau GO SUBperintah, sehingga angka yang terkait dengan ini juga harus disesuaikan.
GO TOdanGO SUBperintah ada di baris mereka sendiri atau di ujungIFTHENbaris. Aman untuk dikatakan^(\d+) .*GO (TO|SUB) (\d+)$sudah cukup untuk mencocokkan garis tersebut. Perintah dalam tanda kutip ini harus diabaikan.RUNperintah akan selalu berada di jalur mereka sendiri. Dalam hal ini nomor baris adalah opsional. Jika tidak ada, maka juru bahasa hanya memulai di bagian atas program.Jika a
GO TO,GO SUBatauRUNperintah mereferensikan baris yang tidak ada, maka ia akan melompat ke baris yang didefinisikan berikutnya. Entri Anda harus berurusan dengan ini dan memastikan referensi garis tersebut diperbaiki sehingga mengarah ke baris yang benar. Perilaku mungkin tidak terdefinisi jika nomor baris setelah akhir program diberikan dalam salah satu dari perintah ini.Nomor baris akan selalu berupa bilangan bulat positif 1 hingga 9999 (sesuai manual). Ini berarti bahwa program input tidak akan pernah memiliki lebih dari 999 baris.
Baris input akan selalu diberi nomor dalam urutan menaik secara numerik.
Untuk keperluan tantangan ini, daftar masukan hanya akan berisi ASCII yang dapat dicetak. Anda tidak perlu khawatir tentang set karakter ZX. Karena itu, jika entri Anda sebenarnya ditulis dalam ZX BASIC atau kode perakitan / mesin z80 yang sesuai (dan ada emulator di luar sana ), maka Anda dapat memilih input Anda untuk dikodekan dalam set karakter ZX sebagai gantinya.
Anda tidak boleh menggunakan perpustakaan atau utilitas nomor baru yang khusus dirancang untuk tujuan ini.
Input Contoh:
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"
Contoh Output:
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"
Saya ingin menautkan ke manual ZX BASIC. Yang terbaik yang bisa saya temukan tampaknya adalah http://www.worldofspectrum.org/ZXBasicManual/index.html tetapi ini tampaknya merupakan tautan mati. Mesin wayback memiliki salinan .
GOTO 100 + A*10 , dan Lampiran C dari ZX Spectrum Pedoman daftar GO TOsebagai menerima ekspresi numerik (tidak ada pembatasan untuk konstanta). Berikut ini adalah diskusi tentang manfaat yang dihitung GOTOpada ZX80 dan ZX81. BTW, saya tidak tahu mengapa ruang ditambahkan dalam versi Spectrum.