switch case statement in c programming examples
इस ट्यूटोरियल में हम कंट्रोल स्टेटमेंट के बारे में जानेंगे। C भाषा हमें एक विशेष नियंत्रण कथन (special control statement) प्रदान करती है जो हमें if statement की एक श्रृंखला का उपयोग करने के बजाय विभिन्न मामलों को प्रभावी ढंग से संभालने की अनुमति देती है। यह नियंत्रण निर्देश इस ट्यूटोरियल का मुख्य फोकस है।
नियंत्रण कथन जो हमें विकल्पों की संख्या से प्रभावी ढंग से निर्णय लेने की अनुमति देता है उसे switch या switch case-default कहा जाता है क्योंकि ये तीन कीवर्ड नियंत्रण कथन बनाने के लिए एक साथ जाते हैं। स्विच में अभिव्यक्ति एक अभिन्न मूल्य देता है, जिसकी तुलना विभिन्न मामलों के साथ की जाती है। स्विच कोड के उस ब्लॉक को निष्पादित( executed) करता है, जो केस वैल्यू से मेल खाता है। यदि मान किसी भी मामले से मेल नहीं खाता है, तो डिफ़ॉल्ट ब्लॉक निष्पादित ( executed) किया जाता है।
स्विच स्टेटमेंट का सिंटैक्स है:
switch ( integer expression )
{
case value 1 :
do this ;
case value 2 :
do this ;
case value 3 :
do this ;
default :
do this ;
}
स्विच स्टेटमेंट के सामान्य रूप की व्याख्या (Explanation)
switch के बाद का (Expression Integer Expression or Character Expression) व्यंजक पूर्णांक व्यंजक या वर्ण व्यंजक हो सकता है। केस वैल्यू 1, 2 केस लेबल हैं जिनका उपयोग प्रत्येक मामले को अलग-अलग पहचानने के लिए किया जाता है। याद रखें कि केस लेबल अलग-अलग होने चाहिए। यदि यह वही है, तो यह किसी प्रोग्राम को निष्पादित (execute)करते समय एक समस्या पैदा (problem create)कर सकता है। केस लेबल के अंत में, हम हमेशा एक कोलन (use a colon)(:) का उपयोग करते हैं। प्रत्येक मामला एक ब्लॉक से जुड़ा है। एक ब्लॉक में कई कथन होते हैं जिन्हें किसी विशेष मामले के लिए समूहीकृत किया जाता है|
जब भी स्विच निष्पादित(execute)किया जाता है, तो परीक्षण-अभिव्यक्ति (test-expression)के मूल्य की तुलना स्विच स्टेटमेंट में मौजूद सभी मामलों से की जाती है। जब मामला (case)पाया जाता है, तो उस विशेष मामले से जुड़े बयानों के ब्लॉक को निष्पादित (execute)किया जाएगा। ब्रेक कीवर्ड किसी विशेष मामले के अंत को इंगित करता है। यदि हम प्रत्येक मामले में ब्रेक नहीं लगाते हैं, तो भले ही विशिष्ट मामले को निष्पादित किया गया हो, सी का स्विच अंत तक पहुंचने तक सभी मामलों को निष्पादित(execute)करना जारी रखेगा। डिफ़ॉल्ट मामला वैकल्पिक(optional) है। जब भी स्विच के अंदर किसी भी मामले के साथ अभिव्यक्ति(Expression)का मूल्य मेल नहीं खाता है, तो डिफ़ॉल्ट निष्पादित(execute) किया जाएगा।
example:-
#include <stdio.h>
int main() {
int i = 2;
switch (i) {
case 1:
printf("i am in case 1\n");
break;
case 2:
printf("i am in case 2\n");
break;
case 3:
printf("i am in case 3\n");
break;
default:
printf("i am in default\n");
break;
}
return 0;
}
Output:-
i am in case 2
--------------------------------
Process exited after 0.02795 seconds with return value 0
Press any key to continue . . .
नोट -: हर केस के बाद ब्रेक कीवर्ड का इस्तेमाल करना जरूरी नहीं है। जब हम उस समय अपना मामला समाप्त नहीं करना चाहते हैं, तो हम ब्रेक कीवर्ड का उपयोग नहीं करेंगे।
Nested Switch in C:- हम नेस्टेड स्विच स्टेटमेंट का भी उपयोग कर सकते हैं यानी, दूसरे स्विच के अंदर स्विच करें। साथ ही, आंतरिक और बाहरी स्विच के केस स्थिरांक में बिना किसी विरोध के सामान्य मान हो सकते हैं।
नेस्टेड स्विच का सिंटैक्स है:-
switch(expression 1)
{
Case 1:
printf(“Switch Statement 1”);
switch(expression 2)
{
Case 1:
printf(“Switch Statement 2”);
Break;
Case 2:
Do this;
}
break;
Case 2:
Do this;
}
example:-
#include <stdio.h>
int main () {
/* local variable definition */
int a = 50;
int b = 120;
switch(a) {
case 50:
printf("This is part of outer switch\n", a );
switch(b) {
case 120:
printf("This is part of inner switch\n", a );
}
}
printf("Exact value of a is : %d\n", a );
printf("Exact value of b is : %d\n", b );
return 0;
}
Output:-
This is part of outer switch
This is part of inner switch
Exact value of a is : 50
Exact value of b is : 120
--------------------------------
Process exited after 0.02981 seconds with return value 0
Press any key to continue . . .
हमें स्विच केस की आवश्यकता क्यों है?
if statement के साथ एक समस्या है| जब भी स्टेटमेंट की संख्या बढ़ती है तो प्रोग्राम की complexity बढ़ जाती है। यदि हम प्रोग्राम में एकाधिक if-else कथनों का उपयोग करते हैं, तो कोड को पढ़ना और समझना मुश्किल हो सकता है। कभी-कभी यह उस developer को भी भ्रमित करता है जिसने खुद प्रोग्राम लिखा था। स्विच स्टेटमेंट का उपयोग करना इस समस्या का समाधान है।
स्विच स्टेटमेंट के नियम :-
1.स्विच की test expression एक int या char होनी चाहिए।
2.केस स्विच स्टेटमेंट के अंदर होने चाहिए।
3.स्विच स्टेटमेंट में ब्रेक कीवर्ड का उपयोग करना आवश्यक नहीं है।
4.केस का मान एक पूर्णांक या वर्ण होना चाहिए।
5.स्विच के अंदर केस लेबल मान अद्वितीय होना चाहिए।
इस पोस्ट में बस इतना ही हम अगले टॉपिक पर नेक्स्ट पोस्ट में बात करेंगे | आप साथ ही साथ पुरानी पोस्ट भी पढ़ कर अपना अब्यास जारी रख सकते है जिससे आपको c language के आने वाले टॉपिक अच्छे से समझ आयेंगे और आपको c language और भी ज्यादा आसान लगेगी | इसी तरह पढ़ते रहे और इस वेबसाइट को follow जरुर कर ले जिससे हमारी आने वाली पोस्ट आप तक सबसे पहले पहुचे |
धन्यवाद |
[…] […]