Friday, February 28, 2020

C-switch case statement, goto statement in hindi


स्विच केस स्टेटमेंट का उपयोग तब किया जाता है जब हमारे पास कई विकल्प होते हैं और हमें प्रत्येक विकल्प के लिए एक अलग कार्य करने की आवश्यकता होती है।

सी - स्विच केस स्टेटमेंट (Switch Case Statement)


इससे पहले कि हम यह देखें कि C प्रोग्राम में स्विच केस स्टेटमेंट कैसे काम करता है, चलिए इसका सिंटैक्स चेक करते हैं।

switch (variable or an integer expression)
{
     case constant:
     //C Statements
     ;
     case constant:
     //C Statements
     ;
     default:
     //C Statements
     ;
}

Flow Diagram of Switch Case

C switch case

Flow Diagram of Switch Case


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

C प्रोग्राम में स्विच केस स्टेटमेंट के काम को समझने के लिए एक सरल उदाहरण लेते हैं।

#include <stdio.h>
int main()
{
     int num=2;
     switch(num+2)
     {
         case 1:
           printf("Case1: Value is: %d", num);
         case 2:
           printf("Case1: Value is: %d", num);
         case 3:
           printf("Case1: Value is: %d", num);
         default:
           printf("Default: Value is: %d", num);
    }
    return 0;
} 

Output:
Default: value is: 2
 


स्पष्टीकरण: स्विच में मैंने एक अभिव्यक्ति दी, आप चर भी दे सकते हैं। मैंने num + 2 दिया, जहाँ num value 2 है और इसके अलावा एक्सप्रेशन 4 है। चूंकि कोई मान 4 के साथ परिभाषित नहीं है, इसलिए डिफ़ॉल्ट केस निष्पादित किया गया है।

एक कहानी में ट्विस्ट - पेश है ब्रेक स्टेटमेंट

इससे पहले कि हम ब्रेक स्टेटमेंट के बारे में अधिक चर्चा करें, इस सी प्रोग्राम के आउटपुट का अनुमान लगाएं।

#include <stdio.h>
int main()
{
     int i=2;
     switch (i)
     {
        case 1:
           printf("Case1 ");
        case 2:
           printf("Case2 ");
        case 3:
           printf("Case3 ");
        case 4:
           printf("Case4 ");
        default:
           printf("Default ");
     }
    return 0;
}

Output:
Case2 Case3 Case4 Default


मैंने स्विच करने के लिए एक चर पारित किया, चर का मान 2 है इसलिए नियंत्रण 2 मामले में कूद गया, हालांकि उपरोक्त कार्यक्रम में ऐसे कोई बयान नहीं हैं जो मामले के निष्पादन के बाद प्रवाह को तोड़ सकते हैं। यही कारण है कि मामले के बाद 2, बाद के सभी मामले और डिफ़ॉल्ट बयान निष्पादित हो गए।

इस स्थिति से कैसे बचें?

हम प्रत्येक केस ब्लॉक के बाद नियंत्रण के प्रवाह को तोड़ने के लिए ब्रेक स्टेटमेंट का उपयोग कर सकते हैं।

स्विच केस में बयान तोड़ो (Break statement in Switch Case)


ब्रेक स्टेटमेंट तब उपयोगी होते हैं जब आप चाहते हैं कि आपका प्रोग्राम-फ्लो स्विच बॉडी से बाहर आए। जब भी स्विच बॉडी में ब्रेक स्टेटमेंट आता है, तो स्विच केस स्टेटमेंट से कंट्रोल निकलता है।

ब्रेक के साथ स्विच केस का उदाहरण

मैं वही ऊपर ले जा रहा हूं जो हमने ऊपर देखा है लेकिन इस बार हम ब्रेक का उपयोग कर रहे हैं।

#include <stdio.h>
int main()
{
     int i=2;
     switch (i)
     {
          case 1:
             printf("Case1 ");
             break;
          case 2:
             printf("Case2 ");
             break;
          case 3:
             printf("Case3 ");
             break;
          case 4:
             printf("Case4 ");
             break;
          default:
             printf("Default ");
     }
     return 0;
}

Output:
Case 2

मैंने डिफ़ॉल्ट रूप से ब्रेक स्टेटमेंट का उपयोग क्यों नहीं किया?

नियंत्रण स्वयं डिफ़ॉल्ट के बाद स्विच से बाहर आ जाएगा, इसलिए मैंने इसका उपयोग नहीं किया है, हालांकि यदि आप डिफ़ॉल्ट के बाद ब्रेक का उपयोग करना चाहते हैं तो आप इसका उपयोग कर सकते हैं, ऐसा करने में कोई नुकसान नहीं है।

स्विच केस के संबंध में कुछ महत्वपूर्ण बिंदु

 1) केस को हमेशा ऑर्डर 1, 2, 3 और इसी तरह की आवश्यकता नहीं होती है। केस कीवर्ड के बाद उनका कोई भी पूर्णांक मान हो सकता है। साथ ही, मामला हमेशा बढ़ते क्रम में होने की आवश्यकता नहीं है, आप उन्हें कार्यक्रम की आवश्यकता के अनुसार किसी भी क्रम में निर्दिष्ट कर सकते हैं।

2) आप स्विच केस में अक्षरों का भी उपयोग कर सकते हैं। उदाहरण के लिए -

#include <stdio.h>
int main()
{
     char ch='b';
     switch (ch)
     {
         case 'd':
            printf("CaseD ");
            break;
         case 'b':
            printf("CaseB");
            break;
         case 'c':
            printf("CaseC");
            break;
         case 'z':
            printf("CaseZ ");
            break;
         default:
            printf("Default ");
    }
    return 0;
}

Output:
CaseB

3) स्विच में प्रदान की गई अभिव्यक्ति में निरंतर मूल्य होना चाहिए अन्यथा यह मान्य नहीं होगा।
उदाहरण के लिए:


स्विच के लिए वैध भाव (Valid expressions for switch )–

switch(1+2+23)
switch(1*2+3%4)

अमान्य स्विच भाव (Invalid switch expressions)-

switch(ab+cd)
switch(a+b+c)

4) स्विच स्टेटमेंट्स की नेस्टिंग की अनुमति है, जिसका अर्थ है कि आप किसी अन्य स्विच के अंदर स्विच स्टेटमेंट रख सकते हैं। हालांकि नेस्टेड स्विच स्टेटमेंट से बचना चाहिए क्योंकि यह प्रोग्राम को अधिक जटिल और कम पठनीय बनाता है।
5) डुप्लीकेट केस वैल्यू की अनुमति नहीं है। उदाहरण के लिए, निम्न प्रोग्राम गलत है:
यह कार्यक्रम गलत है क्योंकि हमारे यहां दो केस is ए ’हैं जो गलत है क्योंकि हमारे पास डुप्लिकेट केस वैल्यू नहीं हो सकती है।

#include <stdio.h>
int main()
{
     char ch='B';
     switch (ch)
     {
         case 'A':
            printf("CaseA");
            break;
         case 'A':
            printf("CaseA");
            break;
         case 'B':
            printf("CaseB");
            break;
         case 'C':
            printf("CaseC ");
            break;
         default:
            printf("Default ");
    }
    return 0;
}

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


सी - उदाहरण के साथ गोटो स्टेटमेंट (C – goto statement with example)

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

सी - गोटो बयान (C – goto statement)


 जब एक सी कार्यक्रम में एक गोटो स्टेटमेंट का सामना करना पड़ता है, तो नियंत्रण सीधे गोटो स्टेटेमेंट में उल्लिखित लेबल पर कूदता है

C में गोटो स्टेटमेंट का सिंटैक्स

goto label_name;
..
..
label_name: C-statements

Flow Diagram of goto

C goto statement

Flow Diagram of goto


गोटो स्टेटमेंट का उदाहरण

#include <stdio.h>
int main()
{
   int sum=0;
   for(int i = 0; i<=10; i++){
 sum = sum+i;
 if(i==5){
    goto addition;
 }
   }

   addition:
   printf("%d", sum);

   return 0;
}
 
Output:
15

 

 

स्पष्टीकरण: इस उदाहरण में, हमारे पास एक लेबल जोड़ है और जब i (लूप के अंदर) का मान 5 के बराबर है तो हम इस लेबल पर गोटो का उपयोग करके कूद रहे हैं। यही कारण है कि योग 5 से 10 तक की संख्या प्रदर्शित कर रहा है, भले ही लूप 0 से 10 तक चलने के लिए निर्धारित हो।


Next Chapter : - C-switch case statement, goto statement in Hindi


0 Comments:

Post a Comment