यदि आप गणितीय पृष्ठभूमि से प्रोग्रामिंग में आ रहे हैं, तो यह सूक्ष्म विवरण आपको आसानी से पकड़ सकता है।
C++ व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषा है, लेकिन इसमें प्रोग्रामिंग त्रुटियां सबसे आम हैं। इनमें से कई त्रुटियां तार्किक त्रुटियों के कारण हैं। विशेष रूप से, तुलना संचालन के दौरान की गई त्रुटियां आपके कोड की सटीकता और विश्वसनीयता को प्रभावित कर सकती हैं।
C++ भाषा में एक विशेष तुलना त्रुटि है जिसे कई नए डेवलपर अनदेखा कर देते हैं। यह त्रुटि इस बात की गलत समझ के कारण होती है कि कई तुलना करते समय ऑपरेटर कैसे काम करते हैं। पता लगाएँ कि इस सामान्य गलती से कैसे बचा जाए और पहली बार में ऐसा क्यों होता है।
सी ++ में तुलना
C++ प्रोग्रामिंग लैंग्वेज तुलना ऑपरेटरों जैसे बुनियादी संचालन के साथ-साथ कई अलग-अलग सुविधाएँ और उपकरण प्रदान करती है। तुलना ऑपरेटर प्रोग्रामिंग भाषाओं में विशेष ऑपरेशन होते हैं जिनका उपयोग आप एक दूसरे के साथ डेटा की तुलना करने के लिए कर सकते हैं। डेवलपर्स अक्सर इन ऑपरेटरों का उपयोग करते हैं, खासकर एल्गोरिदम बनाते समय।
आप दैनिक जीवन में कई अलग-अलग उदाहरणों में तुलना संचालकों को देख सकते हैं। उदाहरण के लिए, जब आप किराने की दुकान पर खरीदारी करते हैं, तो आप कीमतों की तुलना करने के लिए इन ऑपरेटरों को ध्यान में रखते हैं। यदि एक उत्पाद की कीमत दूसरे से कम है, तो आप उस उत्पाद को चुनते हैं।
आप तुलना ऑपरेटरों को इसमें देख सकते हैं अगर-अन्य बयान अक्सर। तुलना ऑपरेटर वह स्थान है जहां यह जांच की जाती है कि क्या एक मान दूसरे मान से अधिक, उससे कम या उसके बराबर है। एक बहुत छोटा लेकिन महत्वपूर्ण विवरण है जिसे आपको नजरअंदाज नहीं करना चाहिए। तुलना भावों के परिणाम सही या गलत लौटाते हैं, जो बूलियन मान हैं। ये मान प्रोग्रामिंग में नियंत्रण संरचना के मूल घटकों में से एक हैं।
उदाहरण के लिए, C++ प्रोग्रामिंग भाषा में, "=="ऑपरेटर जाँचता है कि क्या दो मान समान हैं। यदि मान समान हैं, तो परिणाम सही होता है। अन्यथा, परिणाम झूठा होगा।
अगर (ए == बी)
{
वापस करनासत्य;
}
अन्य
{
वापस करनाअसत्य;
}
तुलना समस्या का एक उदाहरण
सी ++ शुरुआती लोगों द्वारा की जाने वाली सामान्य गलतियों में से एक तुलना ऑपरेटरों का उपयोग है। ये ऑपरेटर प्रोग्रामर को दो मानों की तुलना करने और उस तुलना के परिणाम के आधार पर अलग-अलग ऑपरेशन करने की अनुमति देते हैं। हालाँकि, इन ऑपरेटरों का गलत तरीके से उपयोग करने से अनपेक्षित त्रुटियाँ हो सकती हैं।
उदाहरण के लिए, हालाँकि व्यंजक 3 < 15 < 10 गणितीय रूप से गलत है, C++ इसके परिणाम को सत्य मानता है। आप निम्न सरल परीक्षण कार्यक्रम लिखकर इसे प्रदर्शित कर सकते हैं।
सबसे पहले नाम की एक फाइल बनाएं परीक्षण.सीपीपी. इस फाइल को अपने पसंदीदा कोड संपादक और इसमें निम्न कोड जोड़ें।
#शामिल करना
int यहाँ एक = 15;int यहाँमुख्य()
{
अगर (3 10)
{
कक्षा::अदालत << "फू" << कक्षा::endl;
}
अन्य
{
कक्षा::अदालत << "बू" << कक्षा::endl;
}
वापस करना0;
}
कोड को संकलित करने और चलाने के लिए आप इस आदेश का उपयोग कर सकते हैं:
g++ test.cpp -o Test
अब आपके पास नाम का एक प्रोग्राम है परीक्षा. प्रोग्राम को चलाएं और इसके आउटपुट की जांच करें।
इस प्रोग्राम को चलाते समय C++ ने 3 <15 <10 को सत्य माना। परिणाम इस तरह से क्यों निकल सकता है, जबकि यह गणितीय रूप से गलत कथन है?
C++ में तुलना समस्या के कारण
अधिकांश प्रोग्रामिंग भाषाओं की तरह, C++ कोड को बाएं से दाएं पढ़ता है। प्रत्येक तुलना ऑपरेटर एक बूलियन मान उत्पन्न करता है। बूलियन मूल्यों का अर्थ केवल सत्य और असत्य नहीं है; उनके पास गणितीय समकक्ष है।
ए. का कार्य सिद्धांत कंप्यूटर इकाई और शून्य पर निर्भर करता है. कंप्यूटर के लिए, किसी चीज का परिणाम या तो सत्य या असत्य होता है। कंप्यूटर प्रोग्राम आमतौर पर नंबर 1 को सही और नंबर 0 को गलत मानते हैं।
तुलना समस्या की फिर से जाँच करें और कथन को बाएँ से दाएँ पढ़ें; आप देखेंगे कि दो अलग-अलग तुलनाएँ हैं। पहली तुलना संख्या 3 और 15 के बीच है। यह एक सही मान है क्योंकि 3 15 से कम है।
दूसरी तुलना उस परिणाम और संख्या 10 के बीच है। चूंकि इसे संख्यात्मक तुलना करने की आवश्यकता है, सी ++ चुपचाप बूलियन सच्चे मान को 1 में परिवर्तित कर देता है। 1 10 से कम है, इसलिए समग्र परिणाम सत्य है।
अंत में, हालांकि यह एक गणितीय भ्रम की तरह लगता है, यह कथन C++ और कंप्यूटरों के लिए सही है।
C++ में तुलना संबंधी समस्याओं को कैसे हल करें
सी ++, अधिकांश अन्य प्रोग्रामिंग भाषाओं के साथ, पारंपरिक गणित की तुलना में तार्किक तुलना के लिए एक अलग सिंटैक्स का उपयोग करता है। गणितीय व्यंजक 3 और a 15 से कम है।" हालाँकि, जैसा कि आपने देखा है, C ++ उस अभिव्यक्ति की अलग तरह से व्याख्या करता है।
प्रतिनिधित्व करने के लिए और सी ++ में, && ऑपरेटर का उपयोग करें। फिर आप बूलियन एक्सप्रेशंस को एक साथ जोड़ सकते हैं और जैसे ऑपरेटरों का उपयोग करके तर्क बना सकते हैं && प्रतिनिधित्व करने के लिए और, || OR का प्रतिनिधित्व करने के लिए, और ! प्रतिनिधित्व करने के लिए नहीं। भाषाएँ पसंद हैं जावा समान तार्किक ऑपरेटरों का उपयोग करता है.
सही लॉजिकल ऑपरेटर का उपयोग करके, आप पिछले उदाहरण में बग को ठीक कर सकते हैं:
#शामिल करना
int यहाँ एक = 15;int यहाँमुख्य()
{
अगर (3 10)
{
कक्षा::अदालत << "फू" << कक्षा::endl;
}
अन्य
{
कक्षा::अदालत << "बू" << कक्षा::endl;
}
वापस करना0;
}
अब यह कोड परीक्षण करेगा कि क्या मान 3 से अधिक है और क्या मान 10 से कम है। प्रोग्राम को संकलित करें और चलाएं और परिणाम देखें।
पिछले उदाहरण में "फू" छपा था, लेकिन कार्यक्रम अब "बू" को प्रिंट करता है। तुलना के बाईं ओर का बूलियन मान (3 सही और गलत हमेशा से रहा है असत्य, समग्र अभिव्यक्ति गलत का मूल्यांकन करती है, जिससे कि स्थिति विफल हो जाती है और अन्य ब्लॉक चलता है।
AND स्विच करने का प्रयास करें (&&) ऑपरेटर से OR (||) और अलग परिणाम देख रहे हैं।
सी ++ में तार्किक जांच का महत्व
सी ++ में तार्किक तुलना में बूलियन मूल्यों और तुलना ऑपरेटरों का उपयोग शामिल है। सुनिश्चित करें कि आप अपने प्रोग्राम के संचालन को नियंत्रित करने के लिए सही बूलियन मान और तुलना ऑपरेटर का उपयोग करते हैं। बुरी तरह से बने भावों को पहचानना मुश्किल हो सकता है क्योंकि C++ पूरी तरह से विफल होने के बजाय अक्सर अलग व्यवहार करेगा।
अब आप जानते हैं कि कैसे संकलक इस मुद्दे को अनदेखा करते हैं और बाएं से दाएं पढ़ते समय प्रत्येक तुलना को बूलियन के रूप में मानते हैं। आपके द्वारा उपयोग की जाने वाली किसी भी भाषा में इस समस्या से सावधान रहें, और इसके प्रभावों को पहचानना सीखें ताकि आप एक कदम आगे रह सकें।