Karşılaştığım ilk programlama dili Sinclair BASIC'ti . Birçok BASIC lehçesi gibi, tüm kaynak kodu satırlarının numaralandırılmasını gerektirir .
Sonuç olarak, GO TOkomutun kullanımı deyimseldi ve yürütmeyi verilen satır numarasına atlar (etiket yok).
Ayrıca GO SUBtemel bir işlev çağrısı olarak kullanılabilecek ilgili bir komut vardır. Yine, yürütme verilen satır numarasına atlar, ancak bir RETURNkomuta ulaşıldığında yürütme GO SUB.
Benzer şekilde RUNkomut, verilen satırda programın yürütülmesini yeniden başlatacaktır.
Satır numaralı bir BASIC yorumlayıcısında herhangi bir zaman geçiren herkes, içinde boşluklar bulunan bir numaralandırma düzeni kullanmayı öğrenmiş olacaktır. Böylece yeni kod satırları eklemek daha kolaydır. Ancak o zaman bile, kendinizi art arda numaralandırılmış satırlar arasına yeni satırlar eklemeye ihtiyaç duyabilirsiniz.
Giriş olarak satır numaralı bir BASIC listesi verildiğinde, aynı programı çıktılayın, ancak satır numaraları 10'da başlayacak ve 10'luk adımlarla artan olacak şekilde yeniden numaralandırın. Giriş listesinde GO TOveya GO SUBkomutları olabilir , bu nedenle bunlarla ilişkili sayılar da ayarlanmalıdır.
GO TOveGO SUBkomutlar ya kendi satırlarında ya da satırların sonundadırIFTHEN. Söylemesi güvenli,^(\d+) .*GO (TO|SUB) (\d+)$bu tür çizgileri eşleştirmek için yeterlidir. Tırnak içindeki bu komutlar göz ardı edilmelidir.RUNkomutlar her zaman kendi satırlarında olacaktır. Bu durumda bir satır numarası isteğe bağlıdır. Eksikse, yorumlayıcı programın üstünden başlar.Bir ederse
GO TO,GO SUByaRUNkomut referanslar var olmayan bir çizgi, o zaman yerine gelecek tanımlanan hat atlayacaktır. Girişinizin bununla başa çıkması ve bu tür satır referanslarının doğru satırı gösterecek şekilde sabitlendiğinden emin olması gerekir. Bu komutlardan birinde program bittikten sonra bir satır numarası verilirse, davranış tanımsız olabilir.Satır numaraları her zaman 1 ila 9999 arasında pozitif tamsayılar olacaktır (kılavuza göre). Bu, girdi programlarının hiçbir zaman 999'dan fazla satıra sahip olmayacağı anlamına gelir.
Giriş satırları her zaman sayısal olarak artan sırada numaralandırılır.
Bu zorluğun amaçları doğrultusunda, giriş listeleri yalnızca yazdırılabilir ASCII içerecektir. ZX karakter seti için endişelenmenize gerek yok. Senin girişi aslında ZX BASIC ile yazılmış veya / birleştirme makinesi kodunu z80 mülk (ve orada eğer söyledikten, emülatörlerine dışarı orada ) Giriş kodlanmasını için, o zaman tercih edebilir ZX karakter kümesi yerine.
Bu amaç için özel olarak uyarlanmış herhangi bir yeniden numaralandırılmış kitaplık veya yardımcı programı kullanamazsınız.
Örnek Giriş:
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"
Örnek Çıktı:
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"
Bir ZX BASIC kılavuzuna bağlantı vermek istedim. Bulabildiğim en iyi şey http://www.worldofspectrum.org/ZXBasicManual/index.html gibi görünüyor, ancak bu ölü bir bağlantı gibi görünüyor. Geri dönüş makinesinin bir kopyası var .
GOTO 100 + A*10 ve ZX Spektrumu Manual Ek C listeleri GO TOsayısal bir ifade (sabitleri için herhangi bir kısıtlama) kabul olarak. İşte ZX80 ve ZX81'de hesaplanan değerlerin tartışmasıGOTO . BTW, alanın neden Spectrum versiyonuna eklendiğini bilmiyorum.