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

पाठ 2: परियोजना के बाद का सारांश

[If then else] ब्लॉक का उपयोग इसलिए किया जाता है ताकि VR रोबोट निर्णय ले सके। यदि बूलियन शर्त सत्य है, तो 'इफ देन' शाखा के अंदर के ब्लॉक चलेंगे। यदि बूलियन कंडीशन FALSE है, तो 'Else' ब्रांच के अंदर के ब्लॉक चलेंगे।

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

इस प्रोजेक्ट में, वीआर रोबोट एक इमारत की ओर तब चला जब डिस्टेंस सेंसर ने एक वस्तु का पता लगाया और <Distance found object> ब्लॉक ने TRUE के रूप में रिपोर्ट किया। इससे प्रोजेक्ट की 'इफ देन' शाखा को चलाने का निर्देश मिला। इस शाखा में [ड्राइव] ब्लॉक शामिल है। इसके बाद वीआर रोबोट प्रोजेक्ट की 'एल्स' शाखा को छोड़ देता है।

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

क्योंकि [If then else] ब्लॉक को [Forever] ब्लॉक के अंदर रखा गया है, इसलिए प्रोजेक्ट [If then else] ब्लॉक की स्थिति की जांच करने के लिए [Forever] ब्लॉक के शीर्ष पर वापस लूप करता है। यह चक्र अनंत काल तक चलता रहेगा, जिससे वीआर रोबोट को प्रति सेकंड सैकड़ों बार [यदि तब अन्यथा] स्थिति की लगातार जांच करने का निर्देश मिलता रहेगा।

ध्यान दें कि [If then else] ब्लॉक के अंदर मौजूद [Drive] और [Turn] ब्लॉक नॉन-वेटिंग ब्लॉक हैं। नॉन-वेटिंग ब्लॉक चलते समय प्रोजेक्ट के प्रवाह को नहीं रोकते हैं।  एक गैर-प्रतीक्षा व्यवहार जो [If then else] ब्लॉक में निष्पादित होता है (जैसे कि वस्तु का पता चलने पर आगे बढ़ना) स्थिति की जाँच होने तक जारी रहेगा, और केवल तभी बदलेगा जब स्थिति बदलेगी।

वही VEXcode VR प्रोजेक्ट जिसमें तीर Forever ब्लॉक के निचले हिस्से से वापस ऊपर की ओर जाते हैं, यह दर्शाता है कि प्रोजेक्ट का प्रवाह Forever लूप के शीर्ष पर वापस जाता है ताकि इसके भीतर के सभी कमांड दोहराए जा सकें।

यदि <Distance found object> ब्लॉक FALSE रिपोर्ट करता है, तो प्रोजेक्ट की 'Else' शाखा निष्पादित होती है। 'Else' शाखा में [Turn] ब्लॉक शामिल है।

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

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

[If then else] ब्लॉक का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि शर्त की जांच करते समय प्रोजेक्ट में केवल एक ही शाखा चले। किसी भी समय केवल एक ही स्थिति या शर्त सत्य हो सकती है। इससे परियोजना अधिक कुशल हो जाती है।

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

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

यूनिट 7 के एक नमूना प्रोजेक्ट के प्रोजेक्ट फ्लो का आरेख जिसमें क्रम में चार इफ देन ब्लॉक हैं। प्रत्येक मामले में, 'इफ' पैरामीटर फ्रंट आई सेंसर का उपयोग करके एक विशिष्ट रंग का पता लगाता है, और पता लगाए गए रंग के आधार पर एक व्यवहार करता है। यदि रंग का पता चल जाता है, तो वह 'यदि' सत्य है, और उसके भीतर का ब्लॉक चलेगा, और यह कोड के प्रत्येक अनुभाग के लिए बार-बार होगा।

जब किसी प्रोजेक्ट को कई [If then] ब्लॉकों के साथ चलाया जाता है, तो यह संभव हो सकता है कि कई शर्तें TRUE रिपोर्ट करें और प्रोजेक्ट [Forever] ब्लॉक में कमांड के माध्यम से चलता रहे। इस प्रोजेक्ट में, एक ही [फॉरएवर] लूप के दौरान दोनों स्थितियां TRUE रिपोर्ट कर सकती हैं। इस तरह के टकराव के कारण परियोजना रुक सकती है या धीमी गति से चल सकती है।

एक ऐसे आरेख में दो अनुक्रमित इफ देन ब्लॉकों को दर्शाया गया है जो एक फॉरएवर लूप के भीतर स्थित हैं। शुरू होने पर, प्रोजेक्ट सबसे पहले कंडीशन 1 की जांच करेगा, जो पहले इफ देन ब्लॉक का पैरामीटर है। यदि यह सच है, तो इसके भीतर 90 ब्लॉक तक दाएँ मुड़ने का रास्ता चलेगा। यदि वह शर्त गलत है, तो प्रोजेक्ट शर्त 2 की जांच करने के लिए अगले if then ब्लॉक पर चला जाता है। यदि शर्त 2 सत्य है, तो इसके भीतर 200 मिमी ब्लॉक के लिए आगे की ओर ड्राइव चलेगी। यदि यह गलत है, तो प्रोजेक्ट प्रक्रिया को फिर से दोहराने के लिए अनंत लूप के शीर्ष पर वापस चला जाएगा।

[If then else] ब्लॉक का उपयोग करने से इस तरह की बग से बचा जा सकता है क्योंकि इस ब्लॉक में किसी भी समय केवल एक ही शर्त सही हो सकती है।

एक फॉरएवर लूप के भीतर इफ देन एल्स ब्लॉक का उपयोग करके प्रोजेक्ट फ्लो का आरेख। शुरू होने पर, if then ब्रांच की स्थिति की जाँच की जाएगी। यदि यह सत्य है, और ड्राइव चल रही है, तो 'इफ' शाखा के भीतर का ब्लॉक चलेगा, और रोबोट 90 डिग्री बाईं ओर मुड़ेगा; अन्यथा, रोबोट 200 मिमी आगे बढ़ेगा। किसी एक शर्त की जांच करने का यह निर्णय लगातार लिया जाता रहेगा क्योंकि परियोजना एक अंतहीन चक्र में फंसी हुई है।

प्रश्न

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

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