Skip to main content

पाठ 2: तुलना ऑपरेटरों का उपयोग करना

इस पाठ में, आप तुलना ऑपरेटरों के बारे में जानेंगे, तथा डिस्टेंस सेंसर से प्राप्त डेटा के साथ एक परियोजना में उनका उपयोग करेंगे। फिर आप एक प्रोजेक्ट बनाएंगे जो while लूप और (>) ऑपरेटर के साथ दूरी सेंसर का उपयोग करके वीआर रोबोट को अक्षर 'ए' पर ले जाएगा। मिनी-चैलेंज में, आप दीवार भूलभुलैया की शुरुआत से लेकर संख्या '1' तक नेविगेट करने के लिए इन कौशलों को लागू करेंगे।

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

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

  • पहचानें कि (>) से बड़ा, (<) से छोटा, और (==) के बराबर तुलना ऑपरेटर हैं जो दो मानों की तुलना करते हैं, जिन्हें ऑपरेंड के रूप में जाना जाता है।  
  • पहचानें कि (>) से बड़ा ऑपरेटर दो मानों की तुलना करता है और यदि बायां मान दायां मान से बड़ा है तो सत्य रिपोर्ट करता है।
  • पहचानें कि less than (<) ऑपरेटर दो मानों की तुलना करता है और यदि बायां मान दायां मान से कम है तो True रिपोर्ट करता है।
  • पहचानें कि (>) से अधिक या (<) से कम ऑपरेटर whileलूप में एक शर्त के रूप में उपयोग किए जाने पर सत्य या असत्य मान की रिपोर्ट करते हैं।
  • वर्णन करें कि एक ऐसा प्रोजेक्ट कैसे बनाया जाए जिसमें VR रोबोट तब तक आगे बढ़ता रहे जब तक कि दूरी सेंसर का मान एक निश्चित राशि से कम न हो जाए।

तुलना ऑपरेटर

से कम (<), से अधिक (>), और बराबर (==) ऑपरेटर दो मानों की तुलना करते हैं, जिन्हें ऑपरेंड भी कहा जाता है। ऑपरेटर के बाईं ओर का मान पहला ऑपरेंड है, और दाईं ओर का मान दूसरा ऑपरेंड है। ऑपरेटर बूलियन मानों की रिपोर्ट करते हैं और तुलना सही होने पर सत्य मान लौटाते हैं, और तुलना NOTसही होने पर असत्य मान लौटाते हैं।

  • इन उदाहरणों में (<) से कम ऑपरेटर का उपयोग करते हुए, जब कथन संख्यात्मक रूप से सही होता है, तो यह सत्य की रिपोर्ट करेगा।कम से कम ऑपरेटरों की पंक्तियों के लिए - शीर्ष पंक्ति 25 से 50 कम पढ़ती है और इसे 'गलत रिपोर्ट' के रूप में लेबल किया जाता है। नीचे की पंक्ति में 50 से 25 कम लिखा है तथा इसे 'रिपोर्ट सत्य' के रूप में लेबल किया गया है।
  • इसी तरह, इन उदाहरणों में (>) से अधिक ऑपरेटर का उपयोग करते हुए, संख्यात्मक रूप से सही कथन सत्य की रिपोर्ट करेगा।से अधिक ऑपरेटरों की पंक्तियों के लिए - शीर्ष पंक्ति 25 से 50 अधिक पढ़ती है और इसे 'सत्य रिपोर्ट' के रूप में लेबल किया जाता है। नीचे की पंक्ति में 25, 50 से अधिक लिखा है तथा इसे 'झूठी रिपोर्ट' के रूप में लेबल किया गया है।
  • जब दो मान बिल्कुल समान होते हैं तो equal to (==) ऑपरेटर सत्य रिपोर्ट करता है, और जब वे समान नहीं होते हैं तो असत्य रिपोर्ट करता है।बराबर ऑपरेटरों की पंक्तियों के लिए - शीर्ष पंक्ति 50 = = 50 पढ़ती है और इसे 'सत्य रिपोर्ट' के रूप में लेबल किया जाता है। नीचे की पंक्ति में 25 = = 50 लिखा है तथा इसे 'रिपोर्ट गलत' के रूप में लेबल किया गया है।
    • ध्यान दें कि दोहरे बराबर चिह्न का अर्थ "बराबर" है, और यह दो मानों की तुलना करता है। एकल बराबर चिह्न एक असाइनमेंट ऑपरेटर है जो किसी चर को एक मान निर्दिष्ट करता है।

तुलना ऑपरेटर दशमलव, पूर्णांक या संख्यात्मक रिपोर्टिंग कमांड की तुलना कर सकते हैं।

दूरी सेंसर डेटा के साथ तुलना ऑपरेटरों का उपयोग करना

तुलना ऑपरेटर विशेष रूप से तब उपयोगी होते हैं जब आप वीआर रोबोट को निर्णय लेने के लिए किसी सेंसर, जैसे कि डिस्टेंस सेंसर, से संख्यात्मक डेटा का उपयोग कर रहे हों। पिछली इकाई में, बम्पर सेंसर को दबाने पर VR रोबोट को घुमाने के लिए बम्पर सेंसर से प्राप्त डेटा का उपयोग किया गया था। हालाँकि, एक तुलना ऑपरेटर के साथ, हम दूरी सेंसर से डेटा का उपयोग करके वीआर रोबोट को अधिक सटीक स्थान पर घुमा सकते हैं। यह दीवारों से टकराने से बचने के लिए, या वीआर रोबोट को खेल के मैदान पर किसी विशिष्ट स्थान पर ले जाने के लिए उपयोगी है। 

दूरी सेंसर से प्राप्त डेटा का उपयोग तुलना ऑपरेटर में मानों में से एक के रूप में किया जा सकता है।

front_distance.get_distance(MM) > 50

उदाहरण के लिए, यदि हम चाहते हैं कि वीआर रोबोट किसी वस्तु, जैसे दीवार, की ओर बढ़े, और फिर उस वस्तु के करीब पहुंचने पर रुक जाए, तो हम तुलना ऑपरेटर और get _distance फ़ंक्शन का उपयोग करके ऐसा कर सकते हैं। मूलतः, हम वीआर रोबोट को तब ड्राइव करने के लिए कह रहे हैं जब रोबोट और वस्तु के बीच की दूरी एक सीमा मान, जैसे 50 मिलीमीटर (मिमी) से अधिक हो।दीवार भूलभुलैया खेल के मैदान के निचले केंद्र का नज़दीक से दृश्य, जिसमें शुरुआती वर्ग पर वीआर रोबोट है। एक हरा तीर रोबोट के सामने से पहली दीवार के सामने लगभग 50 मिमी तक फैला हुआ है, जो दर्शाता है कि 50 मिमी से अधिक दूरी पर पहुंचने पर यह सही माना जाता है। हरे तीर के सामने से दीवार तक एक लाल तीर फैला हुआ है, जो यह दर्शाता है कि 50 मिमी से अधिक दूरी की रिपोर्ट गलत है।

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

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

किस तुलना ऑपरेटर का उपयोग करना है, इसका चयन एक शैलीगत विकल्प हो सकता है। उपरोक्त उदाहरण में प्रोजेक्ट को यथासंभव स्पष्ट और पठनीय बनाने के लिए greater than (>) ऑपरेटर का उपयोग किया गया था। जब वीआर रोबोट 50 मिलीमीटर से अधिक दूरी पर हो, तो आगे बढ़ें। आप ऑपरेटर में मानों के क्रम को उलट कर और (<) से कम ऑपरेटर का उपयोग करके समान लक्ष्य को प्राप्त कर सकते हैं।

जबकि 50 > front_distance.get_distance(MM):

यहां, वीआर रोबोट तब ड्राइव करेगा जब दूरी सेंसर द्वारा बताए गए मान से 50 मिलीमीटर अधिक होगी। वी.आर. रोबोट भी यही व्यवहार करेगा, हालांकि, यह परियोजना थोड़ी कम स्पष्ट और पठनीय है। 

आपके द्वारा उपयोग किए जा रहे सेंसर डेटा के आधार पर, (==) ऑपरेटर के बराबर वीआर रोबोट आपके इच्छित प्रदर्शन को नहीं कर सकता है। उदाहरण के लिए, यदि लक्ष्य वीआर रोबोट को किसी वस्तु से 50 मिलीमीटर दूर रोकना है, तो आप इसके लिए बराबर (==) ऑपरेटर का उपयोग करने के बारे में सोच सकते हैं।

जबकि front_distance.get_distance(MM) == 50:

हालांकि, उदाहरण के लिए, वॉल भूलभुलैया में, डिस्टेंस सेंसर के साथ (==) ऑपरेटर का उपयोग करने के लिए सेंसर से इतनी सटीक रीडिंग की आवश्यकता होगी, जो कि=50 मिलीमीटर होगी, कि वीआर रोबोट की गति वास्तविक समय में सटीकता के उस स्तर को प्राप्त करना लगभग असंभव बना देगी। इस प्रकार, वीआर रोबोट संभवतः सीमा से आगे ड्राइविंग जारी रखेगा क्योंकि चाहे वह 100 मिलीमीटर या 25 मिलीमीटर का मान रिपोर्ट कर रहा हो, उनमें से कोई भी 50 मिमीके बराबर नहीं है, इसलिए ऑपरेटर कभी भी सत्य के रूप में रिपोर्ट नहीं करता है। 

तुलना ऑपरेटर और दीवार भूलभुलैया समस्या

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

def main():
    while front_distance.get_distance(MM) > 50:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

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

वीडियो फाइल

यह छवि उपरोक्त परियोजना के प्रवाह को समझाती है:

  • जब दूरी सेंसर दीवार से 50 मिलीमीटर (मिमी) से अधिक दूरी पर होता है, तो ऑपरेटर सत्य रिपोर्ट करता है और while लूप में रहता है
  • जब यह दीवार से 50 मिलीमीटर (मिमी) से कम दूरी पर होता है, तो ऑपरेटर गलत रिपोर्ट करता है, औरwhileलूप से बाहर निकल जाता है।

उपरोक्त परियोजना में while लूप का परियोजना प्रवाह आरेख। जब दीवार से दूरी 50 मिमी से अधिक होगी, तो while लूप चलता रहेगा, और यह स्थिति सत्य रिपोर्ट करेगी, जिससे रोबोट आगे बढ़ेगा। जब दीवार से दूरी 50 से अधिक नहीं होती है, तो स्थिति गलत रिपोर्ट करती है, और प्रोजेक्ट while लूप में मौजूद रहता है, जिससे रोबोट ड्राइविंग बंद कर देता है।

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