और क्या मतलब है। एक सशर्त ऑपरेटर क्या है? आवेदन का सामान्य विवरण

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

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

निर्णय कथन चयन निष्कर्ष पुनरावृति कथन जम्प स्टेटमेंट। निम्नलिखित प्रोग्राम जांचता है कि दर्ज संख्या सकारात्मक या नकारात्मक है या नहीं। निम्नलिखित प्रोग्राम दो स्ट्रिंग्स की तुलना यह देखने के लिए करता है कि वे बराबर हैं या नहीं।

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

एक चयन कथन लिखने के लिए वाक्य रचना यदि अन्य है:

यदि (/*परीक्षण की स्थिति*/) ( /*चयन कथन का मुख्य भाग 1*/; ) अन्य ( /*चयन कथन का मुख्य भाग 2*/; )

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

रिलीज स्टेटमेंट: स्विच स्टेटमेंट

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

पिछले विषय की समस्या पर विचार करें, if else का उपयोग करके। मैं आपको समस्या की स्थिति की याद दिलाता हूं: "दो नंबर दिए गए हैं, उनकी तुलना करना आवश्यक है।"

// if_else.cpp: कंसोल एप्लिकेशन के लिए प्रवेश बिंदु को परिभाषित करता है। #शामिल "stdafx.h" #शामिल करें नेमस्पेस एसटीडी का उपयोग करना; int main(int argc, char* argv) ( int a, b; cout<< "Vvedite pervoe chislo: "; cin >>ए; अदालत<< "Vvedite vtoroe chislo: "; cin >>ख; अगर (a >= b) // अगर a, b से बड़ा या उसके बराबर है, तो ( cout<< a << " >= " << b << endl; } else // иначе { cout << a << " <= " << b << endl; } system("pause"); return 0; }

इस कोड में, हम रुचि रखते हैंलाइनें 14-20. ये पंक्तियाँ इस प्रकार पढ़ती हैं: ifएक (पहली संख्या) . से बड़ा या उसके बराबरबी (दूसरा नंबर), फिर आउटपुट स्टेटमेंट को निष्पादित करेंलाइन 16

अदालत<< a << " >= " << b << endl;

अन्यथा आउटपुट स्टेटमेंट निष्पादित करें पंक्ति 19

अदालत<< a << " <= " << b << endl;

इस ife में, हम संबंधपरक संक्रियाओं का उपयोग करते हैं >= तथा<= . Условие перехода не совсем правильно, так как условие будет ложно только в том случае, если первое число будет меньше второго, во всех остальных случаях условие истинно. Значит, पंक्ति 19इस तरह लिखा जाना चाहिए

अदालत<< a << " < " << b << endl; // в кавычках записать не меньше или равно, а просто меньше.

और इस तरह कार्यक्रम ने काम किया (चित्र 1 देखें)।

Vvedite pervoe chislo: 15 Vvedite vtooe chislo: -4 15 >= -4 जारी रखने के लिए कोई भी कुंजी दबाएं। . .

चित्र 1 - यदि अन्य चयन विवरण

मैं अन्य चयन कथनों का उपयोग करने का एक और उदाहरण दिखाऊंगा (तथाकथित नेस्टेड यदि अन्य कथन एकाधिक चयन के लिए)।

काम:
एक एल्गोरिथम लिखें जो y का मान पाता है यदि y=x x . के लिए<0; у=0, при 0<=х<30; у=х 2 , при х>=30;

// inif_else.cpp: कंसोल एप्लिकेशन के लिए प्रवेश बिंदु को परिभाषित करता है। #शामिल "stdafx.h" #शामिल करें नेमस्पेस एसटीडी का उपयोग करना; int main(int argc, char* argv) ( int x, y; cout<< "Vvedite x: "; cin >> एक्स; अगर (एक्स< 0) { y = x; // выполняется, если х меньше нуля } else { if ((x >= 0) && (एक्स< 30)) { y = 0; // выполняется, если х больше либо равно нуля и меньше 30 } else { if (x >= 30) (y = x * x; // निष्पादित अगर x 30 से अधिक या उसके बराबर है)))<< "y=" << y << endl; system("pause"); return 0; }

इस समस्या में तीन संभावित मामले हैं:
पहला मामला: एक्स< 0 ;
दूसरा मामला: x 0 (0 सहित) और 30 के बीच है;
तीसरा मामला: x 30 से बड़ा या उसके बराबर है।

नवाचार पर ध्यान दें !! पर पंक्ति 17इस तरह: अगर ((x >= 0) && (x .)< 30)) , मैंने && वर्णों का उपयोग किया - यह है। बूलियन ऑपरेशन औरकई सरल स्थितियों को एक यौगिक स्थिति में संयोजित करने के लिए && की आवश्यकता होती है। हमारे मामले में, दो स्थितियों की सच्चाई की जाँच करना आवश्यक है: पहला - x >= 0, दूसरा - x< 30 . Все проверяемое условие будет истинно, если истинны два простых условия. В математике правильной записью считается такая запись: 0 <= x < 30 , а в С++ правильной записью считается вот такая запись: (x >= 0) && (एक्स< 30) или такая 0 <= x && x < 30 . Кстати круглые скобочки () && () не обязательны, так как условия простые, но для уверенности, я прописываю, всегда, данные скобочки и вам советую.

किसी विशेष मामले का विश्लेषण:

मान लें कि उपयोगकर्ता ने 31 नंबर दर्ज किया है। से शुरू हो रहा है पंक्ति 12, शर्तों की जाँच की जाती है। यह इस तरह पढ़ता है: "यदि x (हमारे मामले में 31)< 0, то выполнить оператор в पंक्ति 14". लेकिन चूंकि 31> 0 की स्थिति झूठी है, हम दूसरे शब्द पर जाते हैं (अन्यथा) लाइन 15. इसके बाद, हम जांचते हैं कि संख्या 31 दिए गए अंतराल में शामिल है या नहीं। यह इस तरह पढ़ता है: अगर x>=0 और x<30फिर पंक्ति 19 . पर कथन निष्पादित करें . लेकिन चूंकि संख्या 31 दिए गए अंतराल में शामिल नहीं है, इसलिए शर्त गलत है। विस्तार से पंक्ति 17: प्रोग्राम पहले पहली साधारण स्थिति की जाँच करेगा x>= 0 - यह सत्य है, और यदि पहला सत्य है, तो प्रोग्राम दूसरी साधारण स्थिति x की जाँच करने के लिए आगे बढ़ेगा< 30 – оно ложно. Следовательно всё составное условие ложно, ведь в составном условии у нас используется логическая операция && , а это значит, что все составное условие истинно только в том случае, когда истинны оба простых условия. Переходим к else (иначе), здесь у нас последний if , (लाइन 22) परीक्षण x >= 30 है। यह इस तरह पढ़ता है: यदि x >= 30 तो पंक्ति 24 . पर कथन निष्पादित करें . अंत में शर्त सत्य है, इसलिए कथन में लाइन 24. और लाइन 28परिणामी मूल्य प्रिंट करता है। खैर, बस इतना ही, हमने कार्यक्रम को सबसे छोटे विवरण में देखा है। कार्यक्रम का परिणाम, यदि उपयोगकर्ता ने 31 नंबर दर्ज किया है (चित्र 2 देखें)

Vvedite x: 31 y=961 जारी रखने के लिए कोई भी कुंजी दबाएं। . .

चित्र 2 - यदि अन्य चयन कथन

इनपुट-आउटपुट और कार्यान्वयन के संगठन पर विचार करें मुख्य शासी संरचनाएं।किसी भी विशेष एल्गोरिदम को प्रोग्रामिंग भाषा में लिखा जा सकता है जो केवल तीन नियंत्रण संरचनाओं का उपयोग करता है: अनुक्रमिक निष्पादन, शाखाकरण और पुनरावृत्ति।
अनुक्रमिक निष्पादन इतना सामान्य है कि हम इसे शायद ही कभी एक नियंत्रण संरचना के रूप में सोचते हैं। बयानों के अनुक्रम को कार्यक्रम में उनके प्राकृतिक स्थान के क्रम में निष्पादित किया जाता है, बाहरी खंड (फ़ंक्शन) को कॉल करने के लिए संभावित विचलन के साथ, लेकिन कॉल के बिंदु पर अनिवार्य वापसी के साथ।
सशर्त ऑपरेटर का उपयोग करके सी भाषा में सरलतम मामले में ब्रांचिंग का वर्णन किया गया है। फॉर्म होना:
अगर (अभिव्यक्ति)
ऑपरेटर_1;
वरना
ऑपरेटर_2;

जहां भाग वरनाअनुपस्थित हो सकता है। सबसे पहले, "अभिव्यक्ति" का मूल्यांकन किया जाता है कोष्ठक के भीतर; अगर यह सच है तो इसे अंजाम दिया जाता है ऑपरेटर_1. यदि एक " अभिव्यक्ति"असत्य (शून्य के बराबर - शून्य), फिर ऑपरेटर_1छोड़ दिया और निष्पादित ऑपरेटर_2. यदि सशर्त रूप से निष्पादित कथनों के स्थान पर कई भाषा कथनों के समूह को रखा जाना चाहिए, तो वे घुंघराले ब्रेसिज़ में संलग्न हैं - { }. अक्सर, कोष्ठक में "अभिव्यक्ति" संबंधपरक और तार्किक संचालन का उपयोग करके निर्दिष्ट एक शर्त का प्रतिनिधित्व करता है। संबंधपरक संक्रियाओं को C में निम्नानुसार दर्शाया गया है:

= = बराबर; ! = बराबर नहीं;< меньше; >अधिक;
< = меньше или равно; >= से बड़ा या उसके बराबर।

चिन्ह, प्रतीक ! सी भाषा में तार्किक निषेध के लिए खड़ा है। दो और तार्किक संचालन हैं: || मतलब या, और && - तार्किक और. रिलेशनल ऑपरेशंस अंकगणितीय परिचालनों पर प्राथमिकता लेते हैं, इसलिए फॉर्म की अभिव्यक्ति कश्मीर > n%iके रूप में गणना की जाती है के > (एन% मैं)।प्राथमिक्ता && से अधिक ||, लेकिन दोनों तार्किक संक्रियाएं संबंधपरक और अंकगणितीय संक्रियाओं के बाद की जाती हैं। संदिग्ध मामलों में कोष्ठक लगाना बेहतर होता है।

सशर्त ऑपरेटर के उपयोग को स्पष्ट करने के लिए, तीन संख्याओं में से सबसे बड़ी संख्या निर्धारित करने के लिए एक प्रोग्राम पर विचार करें। सबसे पहला यदिऑपरेटर दूसरे मामले में पूर्ण सशर्त का प्रतिनिधित्व करता है वरनागुम। ध्यान दें कि असाइनमेंट स्टेटमेंट को समाप्त करने वाला अर्धविराम अधिकतम = एक्स,एकता नहीं तोड़ता यदि- ऑपरेटर। यदि एक वरना- नेस्टेड स्थितियों में शाखा को छोड़ दिया जाता है, उनकी व्याख्या अस्पष्ट हो सकती है। अस्पष्टता से बचने के लिए, निम्नानुसार निर्णय लें: वरनानिकटतम से मेल खाती है यदि,उसका नहीं होना वरना.

उदाहरण 1.3।

एक उदाहरण प्रोग्राम पर विचार करें जो एकाधिक नेस्टेड सशर्त कथनों का उपयोग करता है। इस कार्यक्रम में एक पंक्ति फ्लोट ए, बी, एक्सइन तीन चरों को वास्तविक मान घोषित करता है। फ़ंक्शन प्रारूप स्ट्रिंग स्कैनफदो वास्तविक संख्याओं को दर्ज करने का निर्देश देता है जो चर के मान बन जाएंगे ए और बीक्रमश।

उदाहरण 1.4

/*समीकरण का समाधान AX=B*/
#शामिल
मुख्य()
{

फ्लोट ए, बी, एक्स;
प्रिंटफ ("एंटर ए, बी \ n");
स्कैनफ ("% एफ% एफ", और ए, और बी);
अगर (ए! = 0)
प्रिंटफ ("समाधान:% f \ n", बी / ए);
वरना
अगर (बी == 0)
प्रिंटफ ("एक्स-कोई भी संख्या \ n");
वरना
प्रिंटफ ("कोई समाधान नहीं \ n");
}

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