पहली प्रोग्रामिंग लैंग्वेज जो मैंने उजागर की थी वह सिनक्लेयर बेसिक थी । कई BASIC बोलियों की तरह, इसके लिए सभी सोर्स कोड लाइनों की आवश्यकता होती है ।
नतीजतन, GO TOकमांड का उपयोग मुहावरेदार था और दिए गए लाइन नंबर (कोई लेबल नहीं) के लिए कूदता है।
इसके अलावा एक संबंधित GO SUBकमांड है जिसका उपयोग अल्पविकसित फ़ंक्शन कॉल के रूप में किया जा सकता है। फिर, निष्पादन दिए गए लाइन नंबर पर कूदता है, लेकिन जब एक RETURNकमांड पहुंच जाता है, तो निष्पादन अगले निर्देश पर वापस कूदता है GO SUB।
इसी प्रकार RUNकमांड दिए गए लाइन पर प्रोग्राम के निष्पादन को फिर से शुरू करेगा।
जिस किसी ने भी किसी भी समय एक लाइन-गिने हुए बेसिक दुभाषिया में समय बिताया है, उसने इसमें अंतराल के साथ नंबरिंग योजना का उपयोग करना सीख लिया होगा। यह इतना है कि कोड की नई लाइनें सम्मिलित करना आसान है। हालाँकि तब भी, आप अभी भी लगातार गिने लाइनों के बीच खुद को नई लाइनें डालने की जरूरत महसूस कर सकते हैं।
इनपुट के रूप में एक लाइन-क्रमांकित BASIC लिस्टिंग को देखते हुए, उसी प्रोग्राम को आउटपुट किया जाता है, लेकिन इसे फिर से सेट किया जाता है, जैसे कि लाइन नंबर 10 पर शुरू होते हैं और 10. के चरणों में वृद्धि होती है। इनपुट लिस्टिंग में कमांड GO TOया GO SUBकमांड हो सकते हैं , इसलिए इनसे जुड़े नंबर भी समायोजित किए जाने चाहिए।
GO TOऔरGO SUBकमांड या तो अपनी लाइनों पर या लाइनों के अंत मेंIFTHENहैं। कहने के लिए इसकी तिजोरी^(\d+) .*GO (TO|SUB) (\d+)$ऐसी रेखाओं से मेल खाने के लिए पर्याप्त है। उद्धरणों में इन आदेशों को अनदेखा किया जाना चाहिए।RUNकमांड हमेशा अपनी तर्ज पर होंगे। इस स्थिति में एक पंक्ति संख्या वैकल्पिक है। यदि यह गायब है, तो दुभाषिया बस कार्यक्रम के शीर्ष पर शुरू होता है।यदि कोई
GO TO,GO SUBयाRUNकमांड एक गैर-मौजूद रेखा का संदर्भ देता है, तो यह बजाय अगली परिभाषित रेखा पर कूद जाएगा। आपकी प्रविष्टि को इससे निपटने की आवश्यकता है और यह सुनिश्चित करना है कि इस तरह की कोई भी रेखा संदर्भ तय हो, इसलिए वे सही रेखा की ओर इशारा करते हैं। यदि प्रोग्राम के अंत के बाद एक पंक्ति संख्या इन आदेशों में दी गई है, तो व्यवहार अपरिभाषित हो सकता है।लाइन नंबर हमेशा सकारात्मक पूर्णांक 1 से 9999 (मैनुअल के अनुसार) होगा। इसका मतलब है कि इनपुट प्रोग्राम में कभी भी 999 से अधिक लाइनें नहीं होंगी।
इनपुट लाइनों को हमेशा संख्यात्मक रूप से आरोही क्रम में क्रमांकित किया जाएगा।
इस चुनौती के प्रयोजनों के लिए, इनपुट लिस्टिंग में केवल मुद्रण योग्य ASCII शामिल होगा। आपको ZX वर्ण सेट के बारे में चिंता करने की आवश्यकता नहीं है। कि कहा है, अगर आपकी प्रविष्टि वास्तव में ZX बुनियादी में लिखा है या विधानसभा मशीन कोड Z80 उचित / (और देखते हैं emulators बाहर वहाँ ), तो आप के लिए अपने इनपुट में एन्कोड करने के लिए चुन सकते ZX वर्ण सेट के बजाय।
आप किसी भी रेंबरी लाइब्रेरी या उपयोगिताओं का उपयोग नहीं कर सकते हैं जो विशेष रूप से इस उद्देश्य के लिए सिलवाया गया है।
उदाहरण इनपुट:
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"
उदाहरण आउटपुट:
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"
मैं एक ZX BASIC मैनुअल से लिंक करना चाहता था। मुझे जो सबसे अच्छा लगता है वह है http://www.worldofspectrum.org/ZXBasicManual/index.html। लेकिन यह एक मृत कड़ी प्रतीत होती है। Wayback मशीन की एक प्रति है ।
GOTO 100 + A*10 , और एक संख्यात्मक अभिव्यक्ति (स्थिरांक के लिए कोई प्रतिबंध नहीं) के रूप में ZX स्पेक्ट्रम मैनुअल सूचियों के परिशिष्ट C। GO TOयहाँ ZX80 और ZX81 पर गणना के गुणों की चर्चा है GOTO। BTW, मुझे पता नहीं क्यों अंतरिक्ष स्पेक्ट्रम संस्करण में जोड़ा गया था।