मुख्य सामग्री पर जाएं

पाठ 2: इफ एल्स स्टेटमेंट

इस पाठ में, आप एक प्रोजेक्ट बनाएंगे जिसमें वीआर रोबोट डायनेमिक कैसल क्रैशर प्लेग्राउंड पर कम से कम दो महल गिराएगा। लूप और सेंसर फीडबैक का उपयोग करके इस चुनौती को हल करने के लिए एक एल्गोरिदम की आवश्यकता होगी क्योंकि प्लेग्राउंड का लेआउट प्रत्येक रीसेट के साथ बदल जाता है।

कैसल क्रैशर प्लेग्राउंड लेआउट के उदाहरण:

डायनामिक कैसल क्रैशर प्लेग्राउंड के तीन टॉप-डाउन दृश्य, जिनमें से प्रत्येक में महलों की अलग-अलग यादृच्छिक व्यवस्थाएं प्रदर्शित होती हैं, और एक वीआर रोबोट लगातार निचले शुरुआती बिंदु पर स्थित होता है।

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

  • पहचानें कि if elseस्टेटमेंट रिपोर्ट किए गए बूलियन मान के आधार पर 'if' या 'else' शाखा के अंदर कमांड चलाता है।
  • पहचानें कि if else स्टेटमेंट का उपयोग आमतौर पर forयाwhile लूप के साथ किया जाता है ताकि स्थिति को एक से अधिक बार जांचा जा
  • पहचानें और वर्णन करें कि लूप के साथ if elseस्टेटमेंट का उपयोग क्यों किया जाता है।
  • बताइए कि if elseस्टेटमेंट वाले प्रोजेक्ट में 'if' ब्रांच या 'else' ब्रांच को चलाने का कारण क्या होगा।

इफ एल्स स्टेटमेंट का उपयोग क्यों करें?

डायनामिक कैसल क्रैशर चैलेंज, यूनिट 2 में मौजूद कैसल क्रैशर चैलेंज से अलग है। यूनिट 2 की चुनौती में एक स्थिर खेल के मैदान पर बने किलों को गिराने के लिए सरल अनुक्रमण और ड्राइवट्रेन कमांड का उपयोग किया गया था।

def main():
	ड्राइवट्रेन.सेट_ड्राइव_वेलोसिटी(100, प्रतिशत)
	ड्राइवट्रेन.सेट_टर्न_वेलोसिटी(100, प्रतिशत)
	ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 1550, मिमी)
	ड्राइवट्रेन.टर्न_फॉर(राइट, 180, डिग्री)
	ड्राइवट्रेन.ड्राइव_फॉर(फॉरवर्ड, 700, मिमी)
	ड्राइवट्रेन.टर्न_फॉर(राइट, 90, डिग्री)

, डायनामिक कैसल क्रैशर प्लेग्राउंड के बदलते लेआउट के कारण,ड्राइवट्रेन कमांड अकेले वीआर रोबोट को दो या अधिक महल गिराने के लिए पर्याप्त नहीं होंगे। ड्राइवट्रेन कमांड का एक सेट एक प्लेग्राउंड में काम कर सकता है, लेकिन दूसरे में नहीं। एक ऐसे एल्गोरिदम की आवश्यकता होगी जो सेंसर और चयन का उपयोग पुनरावृति के माध्यम से करे। इस प्रोजेक्ट में सशर्त कथनों के साथ चयन जोड़कर एक एल्गोरिदम बनाने के लिए if elseकथनों का उपयोग किया जाएगा।

डायनामिक कैसल क्रैशर प्लेग्राउंड का ऊपर से लिया गया दृश्य दिखाता है कि केवल कुछ ही किले गिराए गए हैं। वीआर रोबोट खेल के मैदान में घूमने के बाद उसके ऊपरी दाएं कोने में है।

इफ एल्स स्टेटमेंट

if else कथन एक ऐसा कथन है जो बूलियन शर्तों को स्वीकार करता है। if elseकथन एक सशर्त कथन है जो किसी परियोजना के प्रवाह को नियंत्रित करता है। if elseकथन आदेशों के एक विशेष अनुक्रम को निष्पादित करेगायदि शर्त पूरी होती है, अन्यथा(जब शर्त नहीं है) आदेशों का एक और सेट निष्पादित किया जाता है - जिससे परियोजना प्रवाह 'शाखा' बन जाता है। if elseमें केवल एक ही शाखा एक समय में निष्पादित होगी।

यदि शर्त मान्य है:
	उत्तीर्ण
अन्यथा:
	उत्तीर्ण
  • यदि शर्त को सत्य बताया जाता है, तो 'if' शाखा के भीतर के कमांड चलाए जाते हैं।
  • यदि स्थिति को False के रूप में रिपोर्ट किया जाता है, तो 'else' शाखा के अंदर के कमांड चलाए जाते हैं।
  • एक बार किसी एक शाखा के भीतर सभी कमांड चल जाने के बाद, प्रोजेक्टif elseस्टेटमेंट के बाहर अगले कमांड पर चला जाएगा।

आप संभवतः अपने रोजमर्रा के कार्यों में अक्सरif elseतर्क का उपयोग करते हैं। उदाहरण के लिए, जब आप बाहर के मौसम के आधार पर घर से निकलते समय क्या ले जाना है, यह तय करते हैं, तो आपयदि अन्यथातर्क का उपयोग कर सकते हैं। यदिबारिश हो रही है, तो छाता ले लो; अन्यथाधूप का चश्मा ले लो।

'यदि' शाखा -

  • इस परिदृश्य में, 'बारिश' की स्थिति पूरी हो जाती है, इसलिए 'यदि'शाखा निष्पादित होगी, और आप छाता ले लेंगे। बाईं ओर एक कोड उदाहरण है जिसमें लिखा है: यदि बारिश हो रही है, तो छाता ले लें। if स्टेटमेंट के बाद else में लिखा होता है: धूप का चश्मा ले लो। कोड के ऊपर बारिश की बूंदों वाला एक बादल बना हुआ है। दाईं ओर एक रंगीन छतरी है जिस पर पानी की बूँदें हैं। नियमों के अनुसार, यदि बारिश हो रही है तो व्यक्ति छाता लेगा; अन्यथा, वह धूप का चश्मा लेगा।

'एल्स' शाखा -

  • इस परिदृश्य में, 'बारिश हो रही है' की स्थिति नहीं बल्कि है, इसलिए 'एल्स' शाखा निष्पादित होगी, और आप धूप का चश्मा पहन लेंगे। बाईं ओर एक कोड उदाहरण है जिसमें लिखा है: यदि बारिश हो रही है, तो छाता ले लें। if स्टेटमेंट के बाद else में लिखा होता है: धूप का चश्मा ले लो। कोड के ऊपर एक चमकीला सूरज है। दाईं ओर लाल रंग का धूप का चश्मा है। नियमों के अनुसार, यदि बारिश हो रही है तो व्यक्ति छाता लेगा; अन्यथा, वह धूप का चश्मा लेगा।

 

इफ एल्स स्टेटमेंट और डायनामिक कैसल क्रैशर प्रॉब्लम

डायनामिक कैसल क्रैशर प्लेग्राउंड पर वीआर रोबोट द्वारा महलों को सफलतापूर्वक गिराने के लिए दो मुख्य चरण हैं। संक्षेप में, वीआर रोबोट को खेल के मैदान में मौजूद किलों का पता लगाने और उन्हें गिराने में सक्षम होना चाहिए। if elseकथन के संदर्भ में, इसे इस प्रकार व्यक्त किया जा सकता है:

  1. यदि वीआर रोबोट एक महल का पता लगाता है, तो उसे गिराने के लिए उसकी ओर आगे बढ़ें।डायनामिक कैसल क्रैशर प्लेग्राउंड का ऊपर से लिया गया दृश्य। इस खेल के मैदान के बीच में स्थित महल को एक लाल बॉक्स से हाइलाइट किया गया है और वीआर रोबोट की शुरुआती स्थिति से उसकी ओर इशारा करते हुए एक तीर बनाया गया है, जो दर्शाता है कि वीआर रोबोट महल की ओर बढ़ेगा।
  2. अन्यथा,(जब वीआर रोबोट महल का पता नहीं लगाता है), मुड़ें और खेल के मैदान पर किसी अन्य स्थान पर महल की जाँच करें।डायनामिक कैसल क्रैशर प्लेग्राउंड का ऊपर से लिया गया दृश्य, जिसमें केंद्र में स्थित महल को लाल बॉक्स से हाइलाइट किया गया है। वीआर रोबोट के चारों ओर बने तीर दक्षिणावर्त दिशा में घूमने को दर्शाते हैं, जिससे पता चलता है कि रोबोट तब तक घूमेगा जब तक उसे कोई दूसरा महल दिखाई नहीं देता।

वीआर रोबोट पर लगे डिस्टेंस सेंसर का उपयोग इस प्लेग्राउंड पर किलों का पता लगाने के लिए किया जा सकता है।अन्य सभी प्लेग्राउंड के विपरीत, डायनामिक कैसल क्रैशर प्लेग्राउंड दीवारें नहीं हैं। क्योंकि डायनामिक कैसल क्रैशर प्लेग्राउंडपर केवल महल ही वस्तुएं हैं, जब दूरी सेंसर किसी वस्तु का पता लगाता है, तो वह वस्तु एक महल होगी। वीआर रोबोट को डिस्टेंस सेंसर की स्थिति की बार-बार जांच करनी होगी, ताकि एक बार ये दो बुनियादी चरण पूरे होके बाद, वीआर रोबोट वापस जाकर डिस्टेंस सेंसर का उपयोग करके अगले किले को ढूंढ सके जिसे वह गिरा सके।

इफ एल्स स्टेटमेंट का उपयोग करके प्रोजेक्ट की योजना बनाना

  • एक नया प्रोजेक्ट शुरू करें और संकेत मिलने पर डायनामिक कैसल क्रैशर प्लेग्राउंडका चयन करें। VEXcode VR में नया प्लेग्राउंड चुनते समय दिखाई देने वाले Dynamic Castle Crasher प्लेग्राउंड का थंबनेल।
  • परियोजना का नाम दें यूनिट 9 पाठ 2.
    VEXcode VR टूलबार में प्रोजेक्ट का नाम लाल रंग में हाइलाइट किया गया है। इस प्रोजेक्ट का नाम यूनिट 9 लेसन 2 है।
  • ऊपर बताए गए चरणों के आधार पर, परियोजना के उद्देश्य को रेखांकित करते हुए, कार्यक्षेत्र में टिप्पणियाँ जोड़ें। पहली टिप्पणी if elseकथन की स्थिति को समझाती है, और अगली दो टिप्पणियाँ if elseकथन की प्रत्येक शाखा की क्रियाओं को समझाती हैं। ध्यान रखें कि पायथन में कमेंट # (पाउंड) चिह्न से शुरू होते हैं। आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:

    def main():
    	# क्या दूरी सेंसर किसी किले का पता लगाता है?
    	
    	# डिस्टेंस सेंसर द्वारा क्रैश कैसल का पता लगाया गया
    	
    	# डिस्टेंस सेंसर का उपयोग करके कैसल खोजने के लिए मुड़ें
  • ऊपर उल्लिखित प्रत्येक क्रिया को ट्रिगर करने के लिए इफ एल्स स्टेटमेंट का उपयोग किया जा सकता है। प्रत्येक क्रिया इस बात पर निर्भर करती है कि if elseकथन में बूलियन स्थिति सत्य या असत्य के रूप में रिपोर्ट करती है या नहीं। टिप्पणियों के बाद if elseकथन जोड़ें। अब आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:

    def main():
    	# क्या दूरी सेंसर किसी किले का पता लगाता है?
    	
    	# डिस्टेंस सेंसर द्वारा क्रैश कैसल का पता चला
    	
    	# डिस्टेंस सेंसर का उपयोग करके कैसल खोजने के लिए मुड़ें
    	
    	यदि शर्त:
    		पास
    	अन्यथा:
    		पास
  • if else कथन की प्रत्येक शाखा को टिप्पणियों का उपयोग करके परिभाषित किया जा सकता है। यदिदूरी सेंसर एक महल का पता लगाता है, तो वीआर रोबोट को महल को गिराने के लिए ड्राइव करना चाहिए; अन्यथाइसे महल का पता लगाने के लिए मुड़ना चाहिए। प्रोजेक्ट की if और else शाखाओं को संबंधित कार्यों का वर्णन करने वाली टिप्पणियों के साथ संरेखित करने के लिए स्थानांतरित करें। अब आपका प्रोजेक्ट कुछ इस तरह दिखना चाहिए:

    def main():
    	# क्या दूरी सेंसर किसी किले का पता लगाता है?
    	
    	यदि स्थिति:
    		# दूरी सेंसर द्वारा क्रैश कैसल का पता चला
    		पास
    		
    	अन्यथा:
    		# दूरी सेंसर का उपयोग करके कैसल खोजने के लिए मुड़ें
    		पास

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