Skip to main content

पाठ 4: नेस्टेड लूप्स का उपयोग करना

पिछले पाठ में, आपने वीआर रोबोट को डिस्क मूवर प्लेग्राउंड में सभी तीन नीली डिस्क को नीले गोल में ले जाने, उठाने और ले जाने का निर्देश देने के लिए एक प्रोजेक्ट बनाया था। इस पाठ में, आप नेस्टेड लूप्स का उपयोग करके डिस्क मूवर प्लेग्राउंड में प्रत्येक रंग की एक डिस्क को उठाकर उसके संगत रंगीन लक्ष्य में ले जाने के लिए एक प्रोजेक्ट बनाएंगे!

डिस्क मूवर प्लेग्राउंड का ऊपर से नीचे का दृश्य, जिसमें प्रत्येक रंग की पहली डिस्क मिलान रंग लक्ष्य में है। वी.आर. रोबोट हरे गोल के किनारे, निचले दाएं कोने में दाईं ओर की दीवार की ओर मुंह करके खड़ा है।

सीखने के परिणाम

  • पहचानें कि लूप्स को कैसे नेस्ट किया जाए।
  • नेस्टेड लूप्स के माध्यम से किसी परियोजना के प्रवाह का वर्णन करें।
  • समझाइए कि किसी परियोजना में नेस्टेड लूप का उपयोग क्यों किया जाएगा।

नेस्टेड लूप्स क्या हैं?

इस पाठ्यक्रम की पिछली इकाइयों और पाठों में, आपने व्यवहारों को दोहराने के लिए नियंत्रण श्रेणी से लूप का उपयोग किया है, जैसे कि for लूप, while लूप, और अनंत whileलूप। एक लूप को दूसरे लूप के अन्दर रखने को 'नेस्टिंग' कहा जाता है। नेस्टेड लूप उन परियोजनाओं में सहायक होते हैं जहां VR रोबोट एक ही व्यवहार को एक से अधिक बार दोहराता है, जैसे कि प्लेग्राउंड पर कई डिस्क को स्थानांतरित करना। नेस्टिंग लूप्स किसी परियोजना को व्यवस्थित और संक्षिप्त कर सकते हैं, जिससे इसे समझना आसान हो जाता है। यह कोड के संदर्भ और उद्देश्य को बेहतर ढंग से समझने में सहायक हो सकता है, साथ ही त्रुटियों की पहचान करना और किसी परियोजना का समस्या निवारण करना भी आसान बना सकता है। 

उदाहरण के लिए, सभी तीन नीली डिस्क को नीले लक्ष्य तक ले जाने के लिए,forलूप का उपयोग करके डिस्क एकत्रित करने की प्रक्रिया को कई बार दोहराया जा सकता है। यहां दिखाया गया प्रोजेक्ट पाठ 3 प्रोजेक्ट को for लूप के अंदर पहली नीली डिस्क को नीले लक्ष्य पर ले जाने के लिए रखता है, जिसमें पैरामीटर 3 पर सेट होता है। ध्यान दें कि पिछले प्रोजेक्ट के चार खंड for लूप के भीतर कैसे इंडेंट किए गए हैं।

def main():
    for repeat_count in range(3):
        #1. पहली डिस्क पर ड्राइव करें
        जब तक down_eye.near_object() न हो:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 2. डिस्क
        magnet.energize(BOOST)

        # 3 उठाओ. लक्ष्य की ओर ड्राइव करें
        drivetrain.turn_to_heading(180, DEGREES)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 4. डिस्क को लक्ष्य में छोड़ें
        magnet.energize(DROP)

        drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)

    wait(5, MSEC)

जब आप लूप को 'नेस्ट' करते हैं, तो बाहरी लूप आंतरिक लूप के निष्पादन की संख्या को नियंत्रित करता है।  इस परियोजना में,forलूप बाहरी लूप है, और लूप में व्यवहार को तीन बार दोहराएगा।

ऊपर से प्रोजेक्ट जिसमें लाल बॉक्स में फॉर लूप हाइलाइट किया गया है। मुख्य परिभाषा के नीचे इंडेंट किया गया, for repeat underscore count in range (3) कोलन लूप की शुरुआत है, और प्रोजेक्ट के चार खंड उसके नीचे इंडेंट किए गए हैं। प्रोजेक्ट के निचले भाग में for loop कमांड के साथ एक wait कमांड संरेखित है, जो यह दर्शाता है कि लूप कहां समाप्त होता है।

आंतरिक लूप वे लूप हैं जो बाहरी लूप के भीतर होते हैं। इस उदाहरण में, प्रत्येकwhileलूप (डिस्क और लक्ष्य तक ले जाने के लिए) 'आंतरिक लूप' हैं, जो हर बार तब निष्पादित होते हैं जब परियोजनाforलूप से गुजरती है।ऊपर से वही प्रोजेक्ट, जिसमें प्रत्येक आंतरिक while लूप को लाल बॉक्स में हाइलाइट किया गया है। परियोजना के पहले और तीसरे टिप्पणी अनुभाग में while लूप्स हैं, जो रोबोट पर लगे सेंसरों का उपयोग करते हुए तब तक चलते हैं जब तक कि डिस्क का पता नहीं लग जाता, फिर जब तक कि दीवार का पता नहीं लग जाता।

आपकी जानकारी के लिए

VEXcode VR पायथन परियोजनाओं में इंडेंटेशन महत्वपूर्ण है। आप लूप्स को नेस्ट करते समय कार्यक्षेत्र में ग्रे संकेतक लाइनों का उपयोग दृश्य सहायता के रूप में कर सकते हैं, ताकि यह सुनिश्चित किया जा सके कि आपका प्रोजेक्ट अपेक्षित रूप से काम करता है। प्रत्येक पंक्ति लूप के आरंभ और अंत को इंगित करती है।

ऊपर से वही परियोजना जिसमें मार्गदर्शक रेखाएं लाल बॉक्स में दर्शाई गई हैं, जो शेष परियोजना के संबंध में प्रत्येक आंतरिक लूप के इंडेंटेशन संरेखण को दर्शाती हैं। फॉर लूप लाइन सीधे अंतिम प्रतीक्षा कमांड तक विस्तारित होती है। और प्रत्येक while लूप लाइन stop कमांड तक विस्तारित होती है।

नेस्टेड लूप परियोजना का प्रवाह 

इस उदाहरण में, प्रत्येक बार जबforलूप दोहराया जाता है, तो एक नीली डिस्क उठाई जाती है और नीले लक्ष्य पर वापस लौट जाती है। 

पहली पुनरावृत्ति के बाद, पहली नीली डिस्क को नीले लक्ष्य पर वापस कर दिया जाता है और वीआर रोबोट को दूसरी डिस्क एकत्र करने के लिए तैयार कर दिया जाता है।

ऊपर से प्रोजेक्ट की एक साथ ली गई छवि, बाईं ओर कार्यक्षेत्र में दिखाई गई है, तथा दाईं ओर खेल का मैदान विंडो दिखाई गई है। परियोजना में संपूर्ण परियोजना के चारों ओर for loop कमांड से एक नारंगी तीर का घेरा बना हुआ है, जो for loop की पहली पुनरावृत्ति को दर्शाता है। खेल के मैदान पर, पहली नीली डिस्क नीले गोल में है, और वी.आर. रोबोट को गोल के सामने के छोर पर शेष नीली डिस्कों के सामने रखा गया है, जो पहले पुनरावृत्ति के बाद रोबोट की स्थिति को दर्शाता है।

दूसरे पुनरावृत्ति के बाद, दूसरी नीली डिस्क एकत्र कर ली जाती है और वीआर रोबोट को तीसरी डिस्क एकत्र करने के लिए तैयार कर दिया जाता है।

ऊपर से प्रोजेक्ट की एक साथ ली गई छवि, बाईं ओर कार्यक्षेत्र में दिखाई गई है, तथा दाईं ओर खेल का मैदान विंडो दिखाई गई है। परियोजना में संपूर्ण परियोजना के चारों ओर for loop कमांड से एक नारंगी तीर लपेटा गया है, जो for loop के दूसरे पुनरावृत्ति को दर्शाता है। खेल के मैदान पर, 2 नीली डिस्क नीले गोल में हैं, और वी.आर. रोबोट को गोल के सामने के छोर पर शेष नीली डिस्क के सामने रखा गया है, जो दूसरे पुनरावृत्ति के बाद रोबोट की स्थिति को दर्शाता है।

तीसरे पुनरावृत्ति के बाद, तीसरी नीली डिस्क एकत्रित हो जाती है, और वी.आर. रोबोट चलना बंद कर देता है। for लूप ने अब अपनी सीमा पूरी कर ली है, अतः परियोजना पूरी हो गई है। 

ऊपर से प्रोजेक्ट की एक साथ ली गई छवि, बाईं ओर कार्यक्षेत्र में दिखाई गई है, तथा दाईं ओर खेल का मैदान विंडो दिखाई गई है। परियोजना में संपूर्ण परियोजना के चारों ओर for loop कमांड से एक नारंगी तीर का घेरा बना हुआ है, जो for loop की तीसरी पुनरावृत्ति को दर्शाता है। खेल के मैदान पर, सभी तीन नीली डिस्कें नीले गोल में हैं, और वी.आर. रोबोट को गोल बॉक्स के ठीक बाहर, गोल से विपरीत दिशा में रखा गया है, जो अंतिम पुनरावृत्ति के बाद रोबोट की स्थिति को दर्शाता है।

 

इस पाठ के शेष भाग को जारी रखने के लिए अगला बटन का चयन करें।