स्विच…सी में केस (सी में स्विच स्टेटमेंट) उदाहरणों के साथ

सी में स्विच स्टेटमेंट क्या है?

C में स्विच कथन किसी चर के मान का परीक्षण करता है और उसकी तुलना कई मामलों से करता है। एक बार जब मामला मेल खाता है, तो उस विशेष मामले से जुड़े कथनों का एक ब्लॉक निष्पादित किया जाता है।

स्विच के ब्लॉक में प्रत्येक केस का एक अलग नाम/संख्या होती है जिसे पहचानकर्ता कहा जाता है। उपयोगकर्ता द्वारा प्रदान किए गए मान की तुलना स्विच ब्लॉक के अंदर सभी केसों से तब तक की जाती है जब तक मिलान नहीं हो जाता।

यदि केस मिलान नहीं मिलता है, तो डिफ़ॉल्ट कथन निष्पादित होता है, और नियंत्रण स्विच ब्लॉक से बाहर चला जाता है।

स्विच केस सिंटैक्स

'सी' प्रोग्राम में स्विच-केस को कैसे कार्यान्वित किया जाता है, इसका सामान्य सिंटैक्स इस प्रकार है:

switch( expression )
{
	case value-1:
			Block-1;
			Break;
	case value-2:
			Block-2;
			Break;
	case value-n:
			Block-n;
			Break;
	default:
			Block-1;
			Break;
}
Statement-x;
  • अभिव्यक्ति पूर्णांक अभिव्यक्ति या वर्ण अभिव्यक्ति हो सकती है।
  • मान-1, 2, n केस लेबल हैं जिनका उपयोग प्रत्येक केस को अलग-अलग पहचानने के लिए किया जाता है। याद रखें कि केस लेबल एक जैसे नहीं होने चाहिए क्योंकि इससे प्रोग्राम निष्पादित करते समय समस्या हो सकती है। मान लीजिए कि हमारे पास '1' के समान लेबल वाले दो केस हैं। फिर प्रोग्राम निष्पादित करते समय, जो केस पहले दिखाई देता है उसे निष्पादित किया जाएगा, भले ही आप चाहते हों कि प्रोग्राम दूसरा केस निष्पादित करे। इससे प्रोग्राम में समस्याएँ पैदा होती हैं और वांछित आउटपुट नहीं मिलता है।
  • केस लेबल हमेशा कोलन ( : ) से समाप्त होते हैं। इनमें से प्रत्येक केस एक ब्लॉक से जुड़ा होता है।
  • ब्लॉक कुछ और नहीं बल्कि कई कथन होते हैं जिन्हें किसी विशेष मामले के लिए समूहीकृत किया जाता है।
  • जब भी स्विच निष्पादित होता है, तो टेस्ट-एक्सप्रेशन के मान की तुलना उन सभी मामलों से की जाती है जिन्हें हमने स्विच के अंदर परिभाषित किया है। मान लीजिए कि टेस्ट एक्सप्रेशन में मान 4 है। इस मान की तुलना सभी मामलों से की जाती है जब तक कि प्रोग्राम में लेबल चार वाला मामला न मिल जाए। जैसे ही कोई मामला पाया जाता है, उस विशेष मामले से जुड़े कथनों का ब्लॉक निष्पादित हो जाता है और नियंत्रण स्विच से बाहर चला जाता है।
  • प्रत्येक केस में ब्रेक कीवर्ड किसी विशेष केस के अंत को इंगित करता है। यदि हम प्रत्येक केस में ब्रेक नहीं डालते हैं, तो भले ही विशिष्ट केस निष्पादित हो जाए, C में स्विच अंत तक पहुंचने तक सभी केसों को निष्पादित करना जारी रखेगा। ऐसा नहीं होना चाहिए; इसलिए हमें हमेशा प्रत्येक केस में ब्रेक कीवर्ड डालना होगा। ब्रेक केस के निष्पादित होने के बाद उसे समाप्त कर देगा और नियंत्रण स्विच से बाहर हो जाएगा।
  • डिफ़ॉल्ट केस एक वैकल्पिक केस है। जब भी टेस्ट-एक्सप्रेशन का मान स्विच के अंदर किसी भी केस से मेल नहीं खाता है, तो डिफ़ॉल्ट निष्पादित किया जाएगा। अन्यथा, स्विच में डिफ़ॉल्ट लिखना आवश्यक नहीं है।
  • एक बार स्विच निष्पादित हो जाने पर नियंत्रण स्टेटमेंट-x पर चला जाएगा, और प्रोग्राम का निष्पादन जारी रहेगा।

स्विच स्टेटमेंट फ़्लोचार्ट

निम्नलिखित चित्र दर्शाता है कि स्विच केस में केस का चयन कैसे किया जाता है:

स्विच स्टेटमेंट फ़्लोचार्ट
स्विच कैसे काम करता है

सी में स्विच केस का उदाहरण

निम्नलिखित प्रोग्राम स्विच के उपयोग को दर्शाता है:

#include <stdio.h>
    int main() {
        int num = 8;
        switch (num) {
            case 7:
                printf("Value is 7");
                break;
            case 8:
                printf("Value is 8");
                break;
            case 9:
                printf("Value is 9");
                break;
            default:
                printf("Out of range");
                break;
        }
        return 0;
    }

आउटपुट:

Value is 8

सी में स्विच केस का उदाहरण

  1. दिए गए प्रोग्राम में हमने आरंभीकृत को समझाया है परिवर्तनशील मान 8 के साथ संख्या.
  2. स्विच कंस्ट्रक्ट का उपयोग वेरिएबल num में संग्रहीत मान की तुलना करने और मिलान किए गए केस से जुड़े कथनों के ब्लॉक को निष्पादित करने के लिए किया जाता है।
  3. इस प्रोग्राम में, चूंकि चर num में संग्रहीत मान आठ है, इसलिए एक स्विच उस केस को निष्पादित करेगा जिसका केस-लेबल 8 है। केस को निष्पादित करने के बाद, नियंत्रण स्विच से बाहर हो जाएगा और आउटपुट स्क्रीन पर मान को प्रिंट करके सफल परिणाम के साथ प्रोग्राम समाप्त हो जाएगा।

चर num का मान बदलने का प्रयास करें और आउटपुट में परिवर्तन देखें।

उदाहरण के लिए, हम निम्नलिखित प्रोग्राम पर विचार करते हैं जो डिफ़ॉल्ट रूप से:

#include <stdio.h>
int main() {
int language = 10;
  switch (language) {
  case 1:
    printf("C#\n");
    break;
  case 2:
    printf("C\n");
    break;
  case 3:
    printf("C++\n");
    break;
  default:
    printf("Other programming language\n");}}

आउटपुट:

Other programming language

सी में स्विच केस के साथ काम करते समय, आप कई केस को अद्वितीय लेबल के साथ समूहीकृत करते हैं। स्विच स्टेटमेंट के अंत में शाखा बनाने के लिए आपको प्रत्येक केस में ब्रेक स्टेटमेंट पेश करना होगा।

वैकल्पिक डिफ़ॉल्ट केस तब चलता है जब कोई अन्य मिलान नहीं होता है।

हम निम्नलिखित स्विच कथन पर विचार करते हैं:

#include <stdio.h>
int main() {
int number=5;
switch (number) {
  case 1:
  case 2:
  case 3:
    printf("One, Two, or Three.\n");
    break;
  case 4:
  case 5:
  case 6:
    printf("Four, Five, or Six.\n");
    break;
  default:
    printf("Greater than Six.\n");}}

आउटपुट:

Four, Five, or Six.

C में नेस्टेड स्विच

In C, हम एक बाहरी स्विच में एक आंतरिक स्विच एम्बेडेड कर सकते हैं। इसके अलावा, आंतरिक और बाहरी स्विच के केस स्थिरांक में समान मान हो सकते हैं और बिना किसी संघर्ष के।

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

#include <stdio.h>
int main() {
        int ID = 500;
        int password = 000;
        printf("Plese Enter Your ID:\n ");
        scanf("%d", & ID);
        switch (ID) {
            case 500:
                printf("Enter your password:\n ");
                scanf("%d", & password);
                switch (password) {
                    case 000:
                        printf("Welcome Dear Programmer\n");
                        break;
                    default:
                        printf("incorrect password");
                        break;
                }
                break;
            default:
                printf("incorrect ID");
                break;
        }
}

आउटपुट:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

C में नेस्टेड स्विच

  1. दिए गए प्रोग्राम में हमने दो आरंभिक चरों के बारे में बताया है: आईडी और पासवर्ड
  2. बाहरी स्विच निर्माण का उपयोग वैरिएबल आईडी में दर्ज मूल्य की तुलना करने के लिए किया जाता है। यह मिलान किए गए केस (जब आईडी==500) से जुड़े कथनों के ब्लॉक को निष्पादित करता है।
  3. यदि ब्लॉक स्टेटमेंट को मिलान किए गए केस के साथ निष्पादित किया जाता है, तो एक आंतरिक स्विच का उपयोग वेरिएबल पासवर्ड में दर्ज मूल्यों की तुलना करने और मिलान किए गए केस से जुड़े स्टेटमेंट को निष्पादित करने के लिए किया जाता है (जब पासवर्ड == 000)।
  4. अन्यथा, स्विच केस डिफ़ॉल्ट केस को ट्रिगर करेगा और प्रोग्राम रूपरेखा के संबंध में उपयुक्त पाठ प्रिंट करेगा।

हमें स्विच केस की आवश्यकता क्यों है?

इसमें एक संभावित समस्या है अगर-और बयान यानी जब भी वैकल्पिक पथों की संख्या बढ़ती है, तो प्रोग्राम की जटिलता बढ़ जाती है। यदि आप प्रोग्राम में कई if-else संरचनाओं का उपयोग करते हैं, तो प्रोग्राम को पढ़ना और समझना मुश्किल हो सकता है। कभी-कभी यह उस डेवलपर को भी भ्रमित कर सकता है जिसने खुद प्रोग्राम लिखा है।

इस समस्या का समाधान स्विच स्टेटमेंट है।

स्विच स्टेटमेंट के लिए नियम

  • एक अभिव्यक्ति को हमेशा एक परिणाम पर निष्पादित होना चाहिए।
  • केस लेबल स्थिर और अद्वितीय होने चाहिए.
  • केस लेबल को कोलन ( : ) से समाप्त होना चाहिए।
  • प्रत्येक मामले में ब्रेक कीवर्ड मौजूद होना चाहिए।
  • केवल एक ही डिफ़ॉल्ट लेबल हो सकता है.
  • हम कई स्विच स्टेटमेंट्स को नेस्ट कर सकते हैं।

सारांश

  • स्विच एक निर्णय लेने वाली संरचना है 'C'.
  • स्विच का उपयोग ऐसे प्रोग्राम में किया जाता है जहां एकाधिक निर्णय शामिल होते हैं।
  • स्विच में एक निष्पादन योग्य परीक्षण-अभिव्यक्ति होनी चाहिए।
  • प्रत्येक केस में ब्रेक कीवर्ड शामिल होना चाहिए।
  • केस लेबल स्थिर और अद्वितीय होना चाहिए.
  • डिफ़ॉल्ट वैकल्पिक है.
  • एकाधिक स्विच स्टेटमेंट्स को एक दूसरे के भीतर नेस्ट किया जा सकता है।