WABAC मशीन , शर्मन सेट करें । यह प्रश्न सामान्य रूप से BASIC और विशेष रूप से Microsoft के BASIC-80 के बारे में है। पुराना स्कूल बेसिक। लाइन नंबरों के साथ।
पुराने स्कूल-बेसिक दुभाषियों के लिए कैसे (या, बल्कि) किया गया था ... लूप बॉडी को निष्पादित नहीं किए जाने पर अगले लूप्स, और NEXT स्टेटमेंट ऑर्डर से बाहर हो गया?
समय से पहले का एक नया आदेश
यहाँ खेल से एक सबरूटीन है Awari से बाहर डेविड एच अहल की "101 बेसिक कंप्यूटर खेल" :
200 K=M:GOSUB 600
205 E=0:IF K>6 THEN K=K-7
210 C=C+1:IF C<9 THEN F(N)=F(N)*6+K
215 FOR I=0 TO 5:IF B(I)<>0 THEN 230
220 NEXT I
225 RETURN
230 FOR I=7 TO 12:IF B(I)<>0 THEN E=1:RETURN
235 GOTO 220
और यहाँ यह प्रवाह नियंत्रण को छोड़कर सब कुछ के साथ है:
200 GOSUB 600
215 FOR I=0 TO 5:IF ... THEN 230
220 NEXT I
225 RETURN
230 FOR I=7 TO 12:IF ... THEN RETURN
235 GOTO 220
क्या यह याद-शौकीन यादों को वापस नहीं लाता है? क्या आप दीजकस्ट्रा को उसकी कब्र में लुढ़कते हुए सुन सकते हैं ?
यहाँ इस टुकड़े में क्या हो रहा है का दिलचस्प हिस्सा हैं:
- दूसरा लूप, चूंकि यह समान लूप वैरिएबल का उपयोग करता है, पहले लूप को बदल देता है
- दो छोरों के लिए एक ही अगला बयान साझा करें
- दूसरा लूप का NEXT स्टेटमेंट इसके पहले आता है, सोर्स ऑर्डर में, लेकिन इसके बाद, एक्जीक्यूशन ऑर्डर में
आप मान सकते हैं, कि, दुभाषिया ने एक लूप शुरू किया है, बस तब तक बयान चलता है जब तक कि यह नेक्स्ट लूप में न हो जाए। स्रोत में बयान का क्रम इस मामले में कोई फर्क नहीं पड़ता। लेकिन चलो देखते हैं कि बुनियादी 80 मैनुअल में लूप के बारे में क्या कहना है:
बेसिक -80 मैनुअल कहता है "मू ..."
लूप के शरीर को छोड़ दिया जाता है यदि लूप का प्रारंभिक मूल्य चरण का संकेत अंतिम मूल्य चरण के संकेत से अधिक है।
तो, लूप बॉडी को पूरी तरह से छोड़ दिया जा सकता है।
हमारे पास प्रकाशित कार्यक्रमों के रूप में सबूत हैं, कि मूल रूप से कम से कम कुछ संस्करण बेसिक रूप से उनके NEXT कथनों का पता लगा रहे थे। यह करना काफी आसान है जब लूप बॉडी को निष्पादित किया जा रहा है। हालाँकि, उस मामले में जहां फॉर स्टेटमेंट की बॉडी को छोड़ दिया जाना चाहिए, जैसा कि BASIC-80 परमिट, BASIC ने NEXT स्टेटमेंट का पता कैसे लगाया, यह देखते हुए कि यह सोर्स ऑर्डर में फॉर स्टेटमेंट से पहले हो सकता है ?
- क्या "101 बेसिक कंप्यूटर गेम्स" में प्रयुक्त BASIC का संस्करण हमेशा लूप बॉडी को कम से कम एक बार निष्पादित करता है?
- क्या स्रोत के क्रम में, कथन के बाद होने के लिए BASIC-80 को लूप के NEXT विवरण की आवश्यकता थी?
पुनश्च: हाँ, मैं पुराने स्कूल BASIC के लिए एक BASIC दुभाषिया लिख रहा हूँ। यह एक बीमारी है।
NEXT
कथन को लागू करने वाला कोड $ DCF9 से शुरू होता है।