Skip to main content

पाठ 2: परियोजना का निर्माण और परीक्षण करें

परियोजना का निर्माण जारी रखना 

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

    def main():
    	# क्या दूरी सेंसर किसी महल का पता लगाता है?
    	
    	यदि front_distance.found_object():
    		# दूरी सेंसर द्वारा क्रैश महल का पता लगाया गया
    		पास
    		
    	अन्यथा:
    		# दूरी सेंसर का उपयोग करके महल खोजने के लिए मुड़ें
    		पास
  • यदि दूरी सेंसर को कोई वस्तु मिल जाती है, तो वीआर रोबोट को महल को गिराने के लिए आगे बढ़ना चाहिए। if else कथन की 'if' शाखा में driveकमांड जोड़ें, और VR रोबोट को आगे बढ़ाने के लिए पैरामीटर सेट करें। (यह आदेश 'pass'को प्रतिस्थापित करेगा). 

    def main():
    	# क्या दूरी सेंसर किसी महल का पता लगाता है?
    	
    	यदि front_distance.found_object():
    		# दूरी सेंसर द्वारा क्रैश महल का पता लगाया गया
    		drivetrain.drive(FORWARD)
    		
    	अन्यथा:
    		# दूरी सेंसर का उपयोग करके महल खोजने के लिए मुड़ें
    		पास
  • जब found_object कमांड गलत रिपोर्ट करता है, तो 'else' शाखा चलेगी, इसलिए VR रोबोट को खेल के मैदान पर एक महल खोजने के लिए मुड़ना होगा। 'else' शाखा के अंदर turn कमांड जोड़ें, और VR रोबोट को दाईं ओर मोड़ने के लिए पैरामीटर सेट करें। 

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

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

if elseकथन की 'else' शाखा किसी प्रोजेक्ट में केवलif elseकथन के भाग के रूप में कार्य करती है। जबकि आपके पासifकथन अकेले हो सकता है, VEXcode VR पायथन में 'else' कथन नहीं है। 'else' शाखा तब चलाई जाती है जब 'if' शाखा की शर्त पूरी नहीं होती। बिना किसी परिभाषित शर्त ('यदि' शाखा) के, 'अन्यथा' शाखा कभी नहीं चलेगी। पायथन में सशर्त कथनों को प्रदर्शित करने वाले तीन कोड स्निपेट, जिनमें से प्रत्येक में एक if कथन के साथ एक शर्त और उसके बाद pass कीवर्ड होता है। पहले दो स्निपेट के ऊपर हरे रंग के चेकमार्क हैं, जो सही उपयोग को दर्शाते हैं। पहले स्निपेट में केवल if स्टेटमेंट शामिल है, जबकि दूसरे में if और else दोनों स्टेटमेंट शामिल हैं, जिनमें से प्रत्येक में pass कीवर्ड है। लाल क्रॉस से चिह्नित तीसरे स्निपेट में केवल एक else कथन है, जिसमें pass है, जो गलत उपयोग को दर्शाता है, क्योंकि else कथन को if कथन के बाद आना चाहिए।

लूप जोड़ें और प्रोजेक्ट का परीक्षण करें

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

      def main():
      
      	while True:
      		# क्या दूरी सेंसर किसी महल का पता लगाता है?
      	
      		यदि front_distance.found_object():
      			# दूरी सेंसर द्वारा क्रैश महल का पता लगाया गया
      			drivetrain.drive(FORWARD)
      		
      		अन्यथा:
      			# दूरी सेंसर का उपयोग करके महल खोजने के लिए मुड़ें
      			drivetrain.turn(RIGHT)
      		
      		wait(5, MSEC)
  • यदि प्लेग्राउंड विंडो पहले से खुली नहीं है तो उसे खोलें। सुनिश्चित करें किडायनेमिक कैसल क्रैशर प्लेग्राउंडखुलता है, और प्रोजेक्ट चलाएं। डायनामिक कैसल क्रैशर खेल के मैदान का ऊपर से नीचे का दृश्य यह दर्शाता है कि केवल कुछ ही महल ढहे हैं। खेल के मैदान में घूमते हुए वीआर रोबोट खेल के मैदान के ऊपरी दाहिने हिस्से में दिखाई देता है।
  • एक बार जब वीआर रोबोट कम से कम दो महलों को गिरा देता है, तो खेल के मैदान को पुनः लोड करें और डायनामिक कैसल क्रैशर खेल के मैदान के दूसरे लेआउट पर प्रोजेक्ट चलाएं। खेल के मैदान के इंटरफेस के साथ डायनामिक कैसल क्रैशर का ऊपर से नीचे का दृश्य। प्लेग्राउंड इंटरफ़ेस के नीचे बाईं ओर स्थित रीसेट बटन को लाल बॉक्स से हाइलाइट किया गया है।
  • परियोजना के प्रत्येक रन पर, वीआर रोबोट तब तक घूमता रहेगा जब तक कि दूरी सेंसर द्वारा किसी महल का पता नहीं लग जाता, फिर वह उस इमारत की ओर बढ़ेगा और उसे गिरा देगा।डायनेमिक कैसल क्रैशर खेल के मैदान का एक कोणीय दृश्य जिसमें वीआर रोबोट एक महल के टुकड़े को लाल सीमा रेखा के पार तथा खेल के मैदान के किनारे से धकेलता हुआ दिखाई दे रहा है।
  • परियोजना के दौरान, वीआर रोबोट महल के किसी टुकड़े को किनारे तक धकेल सकता है और उसे खेल के मैदान से नीचे गिरा सकता है। ऐसा इसलिए है क्योंकि found_objectकमांड अभी भी रिपोर्ट कर रहा है कि VR रोबोट के सामने एक ऑब्जेक्ट है। जब यह आदेश सत्य बताता है, तो वीआर रोबोट आगे बढ़ता है, जिससे वीआर रोबोट खेल के मैदान से नीचे गिर जाता है।

यदि अन्यथा कथन के साथ परियोजना प्रवाह

if else कथन का उपयोग इसलिए किया जाता है ताकि VR रोबोट निर्णय ले सके। यदि बूलियन शर्त सत्य है, तो 'if' शाखा के अंदर के आदेश चलेंगे। यदि बूलियन स्थिति गलत है, तो 'else' शाखा के अंदर के आदेश चलेंगे।

उदाहरण के लिए, डायनेमिक कैसल क्रैशर प्लेग्राउंड के इस पुनरावृत्ति में, जब प्रोजेक्ट शुरू होता है तो डिस्टेंस सेंसर एक ऑब्जेक्ट का पता लगाता है -found_objectकमांड की स्थिति True रिपोर्ट करती है। अब परियोजना की 'if'शाखा चलेगी, और VR रोबोट आगे बढ़ेगा। VR रोबोट परियोजना की 'else' शाखा को छोड़ देगा।बाईं ओर परियोजना का वर्तमान कोड स्निपेट है। दाईं ओर डायनामिक कैसल क्रैशर खेल के मैदान का ऊपर से नीचे का दृश्य है, जिसमें खेल के मैदान का इंटरफ़ेस दिखाई दे रहा है। खेल के मैदान के इंटरफेस पर दूरी सेंसर का माप 568 मिमी है और इसे लाल बॉक्स से हाइलाइट किया गया है। इससे पता चलता है कि खेल के मैदान के बीच में स्थित महल वीआर रोबोट से 568 मिलीमीटर दूर है।

  • ध्यान दें कि दूरी सेंसर डेटा भी डैशबोर्ड में रिपोर्ट किया गया है। जब किसी वस्तु का पता लगाया जाएगा, तो दूरी का मान प्रदर्शित किया जाएगा।

हालाँकि, डायनामिक कैसल क्रैशर प्लेग्राउंड के इस पुनरावृत्ति में, जब प्रोजेक्ट शुरू किया जाता है तो डिस्टेंस सेंसर किसी ऑब्जेक्ट का पता नहीं लगाता है -found_object कमांड की स्थिति गलत रिपोर्ट करती है। अब VR रोबोट परियोजना की 'if' शाखा को छोड़ देगा, और परियोजना की 'else' शाखा चलेगी, इसलिए VR रोबोट दाईं ओर मुड़ जाएगा।बाईं ओर परियोजना का वर्तमान कोड स्निपेट है। दाईं ओर डायनामिक कैसल क्रैशर खेल के मैदान का ऊपर से नीचे का दृश्य है, जिसमें खेल के मैदान का इंटरफ़ेस दिखाई दे रहा है। खेल के मैदान के इंटरफेस पर दूरी सेंसर का माप 1354 मिमी है और इसे लाल बॉक्स से हाइलाइट किया गया है। इससे पता चलता है कि खेल के मैदान के शीर्ष पर स्थित महल वीआर रोबोट से 1354 मिलीमीटर दूर है।

  • ध्यान दें कि डैशबोर्ड में दूरी सेंसर का मान > 3000 मिमी बताया गया है। दूरी सेंसर 3000 मिलीमीटर (मिमी) सीमा के भीतर वस्तुओं का पता लगा सकता है, इसलिए जब किसी वस्तु का पता नहीं चलता है, तो मान (>) 3000 मिमी से अधिक के रूप में रिपोर्ट किया जाता है। 

क्योंकि if else कथन अनंत while लूप के अंदर है, इसलिए प्रोजेक्ट if else कथन की स्थिति को बार-बार जांचने के लिए अनंतwhile लूप के शीर्ष पर वापस लूप करता है। यह लूप हमेशा के लिए जारी रहेगा, और वीआर रोबोट को निर्देश देगा कि वह if elseस्थिति को प्रति सेकंड सैकड़ों बार जांचे।This is the project's code snippet surrounded by an orange arrow that begins and ends on the while True: statement at the top of the code snippet. There is a note on the arrow that says Loops continuously, showing that anything nested in the while True loop will repeat forever.

  • ध्यान दें कि if elseकथन के अंदर drive और turn कमांड गैर-प्रतीक्षा कमांड हैं। गैर-प्रतीक्षा आदेश किसी परियोजना के प्रवाह को तब तक नहीं रोकते जब तक वह चल रही हो।  एक गैर-प्रतीक्षा व्यवहार जो if else कथन में निष्पादित होता है (जैसे कि 'यदि ऑब्जेक्ट का पता चला है तो आगे बढ़ें') स्थिति की जाँच होने तक जारी रहेगा, और केवल तभी बदलेगा जब स्थिति बदलेगी।

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

if elseकथन का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि शर्त की जाँच होने पर परियोजना में केवल एक शाखा ही चले। किसी भी समय केवल एक ही उदाहरण या स्थिति सत्य हो सकती है। इससे परियोजना अधिक कुशल हो जाती है।

पायथन प्रोजेक्ट कोड जिसमें if और else कथनों की ओर संकेत करने वाले तीर हैं। तीरों के शीर्ष पर दूरी सेंसर की स्थिति की जाँच लिखा है, जो यह दर्शाता है कि यदि कथन स्थिति की जाँच करता है तो distance.found_object. यदि ऑब्जेक्ट का पता लगाया जाता है, तो if स्टेटमेंट के अंतर्गत कमांड निष्पादित किया जाएगा, लेकिन यदि कोई ऑब्जेक्ट नहीं पाया जाता है, तो else स्टेटमेंट के अंतर्गत कमांड निष्पादित किया जाएगा।

वर्तमान परियोजना की तुलना इकाई 7 में बनाई गई परियोजना से करें।  यूनिट 7 परियोजना चार यदि कथनों का उपयोग करती है।

यूनिट 7 से प्रोजेक्ट कोड, जिसमें पूरे कोड के चारों ओर एक बड़ा नारंगी तीर है, जो while True कथन से शुरू और समाप्त होता है। नारंगी तीर पर एक नोट लिखा है कि अनंत while लूप में निहित If कथनों की बार-बार जांच की जाती है। while True कथन के अंदर हरे तीर परियोजना के प्रवाह को दर्शाते हैं, जो अलग-अलग if कथनों से शुरू होता है, यदि कोई निश्चित रंग दिखाई देता है और उसके अनुसार जो व्यवहार किया जाना चाहिए, चाहे वह कोई व्यवहार करना हो या अंत तक अगले if कथन पर जाना हो, जहां सब कुछ एक बार फिर लूप में चला जाता है।

जब एक प्रोजेक्ट को कई if कथनों के साथ चलाया जाता है, तो यह संभव हो सकता है कि कई स्थितियाँ True (या False) रिपोर्ट करें क्योंकि प्रोजेक्ट अनंत while लूप में कमांड के माध्यम से चलता है। इस तरह के टकराव के कारण परियोजना रुक सकती है या धीमी गति से चल सकती है। 

दूसरे शब्दों में, किसी परियोजना में एकाधिक यदिकथन एकाधिक निकास रैंप वाली सड़क पर यात्रा करने के समान है। आप जहां जाना चाह रहे हैं, उसके आधार पर आपको अलग-अलग स्थानों पर मुड़ना पड़ेगा। उदाहरण के लिए,यदिआप स्कूल जा रहे हैं, तो आप बाएं मुड़ेंगे; यदि आप दुकान जा रहे हैं, तो आप दाएं मुड़ेंगे। लेकिन क्या होगा यदि आप स्कूल या दुकान नहीं जा रहे हों? दोनों ही स्थितियाँ झूठी रिपोर्ट करेंगी, और आप सीधे रास्ते पर बने रहेंगे। या फिर यदि आप स्कूल और दुकान दोनों जा रहे हों तो क्या होगा? दोनों स्थितियाँ सत्य रिपोर्ट करेंगी, लेकिन आप एक ही समय में दो स्थानों पर मुड़ नहीं सकते। एक आरेख जिसमें तीन दिशात्मक तीरों के साथ एक ग्रे टी-आकार का चौराहा दिखाया गया है - एक बाईं ओर, एक सीधे ऊपर की ओर, और एक दाईं ओर। चौराहे के केंद्र में एक वी.आर. रोबोट है। आरेख के दाईं ओर कोड प्रारूप में दो सशर्त कथन हैं: यदि स्कूल जा रहे हैं: बाएं मुड़ें और यदि स्टोर जा रहे हैं: दाएं मुड़ें। यदि कथन काले और नीले रंग में लिखे गए हैं, यदि नीले रंग में है और दिशा निर्देश नीले रंग में हैं।

 

इस सादृश्य को जारी रखते हुए, if elseकथन सड़क पर एक दोराहे पर यात्रा करने जैसा है - यह आपको निर्णय लेने के लिए मजबूर करता है। आप स्कूल जाहैंबायें मुड़ें;आप स्कूल मुड़ें। चाहे आप कहीं भी जा रहे हों, या तो बायें मुड़ें या दायें। if elseकथन का उपयोग करने से ऊपर बताई गई त्रुटियों से बचा जा सकेगा, क्योंकि यह आपको निर्णय लेने के लिए बाध्य करेगा, क्योंकि किसी निश्चित समय पर केवल एक ही शर्त सत्य हो सकती है।A diagram showing a gray Y-shaped intersection with two directional paths - one leading left and one leading right. In the center of the intersection is the VR Robot. Above the diagram is code showing conditional statements in code format: if going to school: Turn left and else: Turn right. The if and else statements are written in black and blue text, with if and else in blue and the directional instructions in lighter blue.

प्रश्न

कृपया पाठ प्रश्नोत्तरी तक पहुंचने के लिए नीचे दिए गए लिंक का चयन करें।

गूगल डॉक / .docx / .pdf