यदि सभी INTERCAL-72-स्टाइल के लिए एक एकल रिज्यूम का उपयोग करें, तो वे संरचित हैं
यदि आपको "यदि" कथन के समतुल्य लिखने की आवश्यकता है, तो INTERCAL-72 कोड का उपयोग करने वाली सामान्य विधि NEXT
दो बार है और फिर एक गणना करें RESUME
। (आधुनिक कोड में, अक्सर एक गणना COME FROM
बेहतर होगी, लेकिन यह टिप आपके कोड को पसंद करती है NEXT
।) आपको लगभग निश्चित रूप से पहले के लिए बाइट्स का भुगतान करना होगा NEXT
, क्योंकि यह "यदि" की एक शाखा से दूसरी में कूदता है। NEXT
जब तक आपके पास बहुत सारे "यदि" कथन न हों, तो दूसरे को साझा करना भी निर्विवाद है #1
। हालांकि, RESUME
कार्यक्रम में कहीं भी हो सकता है (क्योंकि नियंत्रण इसे तुरंत कहीं भी छोड़ने जा रहा है)।
इसे संभालने के दो तरीके हैं। यदि आपके पास बहुत सारे "यदि" कथन हैं, तो RESUME
संभवतः एकल-अंक रेखा संख्या को वारंट करता है, ताकि आपका दूसरा NEXT
कथन यथासंभव छोटा हो सके। यदि संभव हो, तो इसे एक गणना बनाने का प्रयास करें जो RESUME
स्वाभाविक रूप से आपके कोड में होगा (स्वाभाविक रूप से, यह मुश्किल है, क्योंकि यह उन लोगों के लिए दुर्लभ है, जो कोड के "सामान्य प्रवाह" में NEXT
एड होने की बजाय दिखाई देते हैं ); फिर, केवल लागत लाइन नंबर है। आपको इन सभी के लिए एक एकल बूलियन चर का उपयोग करना होगा NEXT
; यहां सर्वसम्मति से सर्वसम्मति का उपयोग करना है .5
, ज्यादातर क्योंकि यह चर है जो मानक पुस्तकालय बूलियन रिटर्न मानों के लिए उपयोग करता है।
वैकल्पिक रूप से, यह एक अस्वाभाविक (तकनीकी रूप से अविकसित) का उपयोग करने के लिए संभव है, क्योंकि मैंने मानक पुस्तकालय के फीचर पर इंटरकल डॉक्यूमेंटेशन में एक संकेत दिया है। क्योंकि एक के लिए एक केंद्रीय स्थान RESUME
इतना उपयोगी है, मानक पुस्तकालय आंतरिक रूप से एक का उपयोग करता है। INTERCAL में लाइन नंबर वैश्विक हैं (सम्मेलनों नेमस्पेसिंग साथ है, लेकिन जो यदि आप जानते हैं आप क्या कर रहे टूट किया जा सकता है), तो आप कर सकते हैं NEXT
सही मानक पुस्तकालय internals में अगर आप चाहते हैं, और विशेष रूप से, कर सकते हैं NEXT
करने के लिए अपने केंद्रीय फिर से शुरू स्थान । मौजूदा INTERCAL कोड में यह पर्याप्त रूप से लोकप्रिय है कि मौजूदा लाइब्रेरी ब्रेकडाउन को मौजूदा कार्यक्रमों को तोड़ने से बचाने के लिए इसे लागू करना पड़ता है।
प्रश्न में लाइन या तो (कार्यान्वयन के आधार पर शाब्दिक या प्रभावी रूप से) है:
(1001) DO RESUME .5
इसका उपयोग नहीं करने का मुख्य कारण इसकी लंबी लाइन संख्या है; यदि आपको निर्माणों में बहुत अधिक अंतर-72-शैली करने की आवश्यकता है, तो इसे कम संख्या देने के लिए अपने स्वयं का उपयोग करना बेहतर होगा।
बेशक, आप तकनीकों को जोड़ सकते हैं, कुछ ऐसा लिख सकते हैं
(9)DO(1001)NEXT
जो केवल मामूली से अधिक है
(9)DORESUME.5
और यह लाभ है कि बूलियन बन जाते हैं #2
और #3
(जो पढ़ना मुश्किल है, लेकिन सामान्य रूप से उत्पन्न करना आसान है)। वास्तव में, यह संभाल करने के लिए अतिरिक्त कोड में डालने के लायक भी हो सकता है #0
और #1
यदि आप बहुत अधिक iffing करने जा रहे हैं (लेकिन गणना COME FROM
शायद इस मामले में बेहतर काम करेगी जब तक कि आपकी आवश्यकताएं बहुत अजीब न हों)।