सी स्विच स्टेटमेंट

सी मधील स्विच स्टेटमेंट आयएफ-एल्से-आयएफ शिडी विधानाचे वैकल्पिक आहे जे आम्हाला स्विच व्हेरिएबल नावाच्या एकाच व्हेरिएबलच्या भिन्न संभाव्य मूल्यांसाठी एकाधिक ऑपरेशन्स कार्यान्वित करण्यास अनुमती देते. येथे, आम्ही एकाच व्हेरिएबलच्या भिन्न मूल्यांसाठी एकाधिक प्रकरणांमध्ये विविध स्टेटमेन्ट परिभाषित करू शकतो.

कसे लिहावे

naivada(ABaivyaKtai){
sYaitai maulyaR1:
//kaed Tu baiEZ AMmalaataRAanalae;
YaaMbavaa; //payaaZyai
sYaitai maulyaR2:
//kaed Tu baiEZ AMmalaataRAanalae;
YaaMbavaa; //payaaZyai
......

dipaflT:
kaed Tu baiEZ AMmalaataRAanalae jar savaZ pzakrnae Aaheta naahi jauQlae;
}

सी भाषेत स्विच स्टेटमेंटचे नियम

स्विच अभिव्यक्ती पूर्णांक किंवा वर्ण प्रकाराचा असणे आवश्यक आहे. केस मूल्य पूर्णांक किंवा वर्ण स्थिर असणे आवश्यक आहे. केस मूल्य केवळ स्विच स्टेटमेंटमध्येच वापरले जाऊ शकते. स्विच प्रकरणातील ब्रेक स्टेटमेंट आवश्यक नाही. ते पर्यायी आहे. या प्रकरणात ब्रेक स्टेटमेंट आढळल्यास, जुळलेल्या प्रकरणानंतर सर्व प्रकरणे उपस्थित केल्या जातील. हे सी स्विच स्टेटमेंटच्या स्थितीत गडी बाद होण्याचे म्हणून ओळखले जाते.

चला उदाहरणांद्वारे हे समजून घेण्याचा प्रयत्न करूया. आम्ही असे गृहीत धरत आहोत की खालील व्हेरिएबल्स आहेत.

paunaZ PKsa,vaaya,Jaed;
Axar A,bai;
ApaunaZ Ppaf;

वैध स्विच अवैध स्विच वैध केस अवैध केस स्विच (एक्स) स्विच (एफ) केस 3; केस 2.5; स्विच (एक्स> वाय) स्विच (एक्स+2.5) केस 'ए'; केस एक्स; स्विच (ए+बी -2) केस 1+2; केस x+2; स्विच (फंक (एक्स, वाय)) केस 'एक्स'> 'वाय'; प्रकरण 1,2,3;

स्विच केस स्टेटमेंटचे कार्य

प्रथम, स्विच स्टेटमेंटमध्ये निर्दिष्ट केलेल्या पूर्णांक अभिव्यक्तीचे मूल्यांकन केले जाते. हे मूल्य नंतर वेगवेगळ्या प्रकरणांमध्ये दिलेल्या स्थिर मूल्यांसह एक एक करून जुळले जाते. जर एखादा सामना आढळला तर त्या प्रकरणात निर्दिष्ट केलेली सर्व विधाने डीफॉल्ट स्टेटमेंटसह त्या प्रकरणानंतर उपस्थित असलेल्या सर्व प्रकरणांसह कार्यान्वित केली जातात. कोणत्याही दोन प्रकरणांमध्ये समान मूल्ये असू शकत नाहीत. जर जुळलेल्या प्रकरणात ब्रेक स्टेटमेंट असेल तर त्यानंतर उपस्थित असलेली सर्व प्रकरणे वगळली जातील आणि नियंत्रण स्विचमधून बाहेर येईल. अन्यथा, जुळलेल्या प्रकरणानंतरची सर्व प्रकरणे कार्यान्वित केली जातील.

सी स्विच स्टेटमेंट कसे कार्य करते?

सी मध्ये स्विच स्टेटमेंट कसे कार्य करते या चरण-दर-चरण प्रक्रियेत जाऊया: खालील स्विच स्टेटमेंटचा विचार करा:

उदाहरण

#vaapara <PsaTidiAayaAae.Pca>

paunaZ mauqya() {
paunaZ saMqyaa = 2;
naivada (saMqyaa) {
sYaitai 1:
laiha("maulya Aahe 1\n");
YaaMbavaa;
sYaitai 2:
laiha("maulya Aahe 2\n");
YaaMbavaa;
sYaitai 3:
laiha("maulya Aahe 3\n");
YaaMbavaa;
dipaflT:
laiha("maulya Aahe naahi 1, 2, kiMvaa 3\n");
YaaMbavaa;
}

vaapasakra 0;
}

आउटपुट

maulya Aahe 2

चरण-दर-चरण प्रक्रिया:

स्विच व्हेरिएबल नंबरचे मूल्यांकन केले जाते. या प्रकरणात, NUM मूल्य 2 सह प्रारंभ केले जाते. मूल्यांकन केलेल्या क्रमांकाची (2) मूल्य स्विच ब्लॉकच्या आत प्रत्येक केस लेबलमध्ये निर्दिष्ट केलेल्या स्थिरतेशी तुलना केली जाते. स्विच स्टेटमेंट दुसर्‍या प्रकरणात निर्दिष्ट केलेल्या स्थिरतेसह मूल्यांकन केलेल्या मूल्याशी (2) जुळते (केस 2). एक सामना असल्याने, प्रोग्राम मॅचिंग केस (केस 2) शी संबंधित कोड ब्लॉकवर उडी मारतो. केस 2 शी संबंधित कोड ब्लॉक कार्यान्वित केला जातो, जो कन्सोलला "मूल्य 2" मुद्रित करतो. "ब्रेक" कीवर्ड केस 2 च्या कोड ब्लॉकमध्ये उपस्थित आहे. परिणामी, कोड ब्लॉक कार्यान्वित झाल्यानंतर प्रोग्राम स्विच स्टेटमेंटमधून बाहेर पडतो. स्विच स्टेटमेंटनंतर प्रोग्राम नियंत्रण चालू आहे आणि स्विच स्टेटमेंटनंतरची कोणतीही विधाने कार्यान्वित केली जातात. या प्रकरणात, स्विच नंतर कोणतीही विधाने नाहीत, म्हणून प्रोग्राम संपुष्टात येतो. स्विच स्टेटमेंटने व्हेरिएबल एनएमच्या मूल्याचे मूल्यांकन केले, केस 2 सह एक सामना आढळला, संबंधित कोड ब्लॉक कार्यान्वित केला आणि नंतर "ब्रेक" स्टेटमेंटच्या उपस्थितीमुळे स्विच ब्लॉकमधून बाहेर पडला.

सी मध्ये स्विच स्टेटमेंटचे उदाहरण

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ kzmaaMk=0;
laiha("pzavaiST kra a kzmaaMk:");
vacaa("%paunaZ",&kzmaaMk);
naivada(kzmaaMk){
sYaitai 10:
laiha("kzmaaMk Aahe baraebari Tu 10");
YaaMbavaa;
sYaitai 50:
laiha("kzmaaMk Aahe samaana Tu 50");
YaaMbavaa;
sYaitai 100:
laiha("kzmaaMk Aahe samaana Tu 100");
YaaMbavaa;
dipaflT:
laiha("kzmaaMk Aahe naahi samaana Tu 10, 50 kiMvaa 100");
}
vaapasakra 0;
}

आउटपुट

pzavaiSTRkra A kzmaaMk:4
kzmaaMk Aahe naahi samaana Tu 10, 50 kiMvaa 100

pzavaiSTRkra A kzmaaMk:50
kzmaaMk Aahe samaana Tu 50

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

#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
paunaZ PKsa = 10, vaaya = 5;
naivada(PKsa>vaaya && PKsa+vaaya>0)
{
sYaitai 1:
laiha("haya");
YaaMbavaa;
sYaitai 0:
laiha("baaya");
YaaMbavaa;
dipaflT:
laiha(" hWlaae baaya ");
}

}

आउटपुट

haya

स्विच स्टेटमेंटमध्ये ब्रेक आणि डीफॉल्ट कीवर्ड

उदाहरण कोड आणि आउटपुटसह स्विच स्टेटमेंटच्या संदर्भात "ब्रेक" आणि "डीफॉल्ट" कीवर्ड स्पष्ट आणि परिभाषित करूया.

1. ब्रेक कीवर्ड:

"ब्रेक" कीवर्ड प्रत्येक प्रकरणाच्या कोड ब्लॉकमध्ये स्विच स्टेटमेंट अकाली वेळेस समाप्त करण्यासाठी वापरला जातो. जेव्हा प्रोग्राम एखाद्या केस ब्लॉकमध्ये "ब्रेक" स्टेटमेंटचा सामना करतो, तेव्हा ते त्वरित स्विच स्टेटमेंटमधून बाहेर पडते, त्यानंतरच्या केस ब्लॉक्सच्या अंमलबजावणीस प्रतिबंध करते. स्विच स्टेटमेन्ट्स "गडी बाद होण्याचा क्रम" वर्तन टाळण्यासाठी "ब्रेक" विधान महत्त्वपूर्ण आहे.

उदाहरण

#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya() {
paunaZ saMqyaa = 3;

naivada (saMqyaa) {
sYaitai 1:
laiha("maulya Aahe 1\n");
YaaMbavaa; // baaherRpada D naivada vaioaana naMtar AMmalabajaavanai he sYaitai blak
sYaitai 2:
laiha("maulya Aahe 2\n");
YaaMbavaa; // baaherRpada D naivada vaioaana naMtar AMmalabajaavanai he sYaitai blak
sYaitai 3:
laiha("maulya Aahe 3\n");
YaaMbavaa; // baaherRpada D naivada vaioaana naMtar AMmalabajaavanai he sYaitai blak
dipaflT:
laiha("maulya Aahe naahi 1, 2, kiMvaa 3\n");
YaaMbavaa; // baaherRpada D naivada vaioaana naMtar AMmalabajaavanai D dipaflT sYaitai blak
}

vaapasakra 0;
}

आउटपुट

maulya Aahe 3

स्पष्टीकरण:

या उदाहरणात, स्विच स्टेटमेंट व्हेरिएबल एनएम (जे 3 आहे) च्या मूल्याचे मूल्यांकन करते आणि केस 3 सह जुळते. केस 3 शी संबंधित कोड ब्लॉक कार्यान्वित केला जातो, कन्सोलला "मूल्य 3" मुद्रित केले जाते. केस 3 मधील "ब्रेक" स्टेटमेंट हे सुनिश्चित करते की हा केस ब्लॉक कार्यान्वित झाल्यानंतर प्रोग्राम स्विच स्टेटमेंटमधून बाहेर पडतो, इतर कोणत्याही प्रकरणांची अंमलबजावणी रोखतो.

2. डीफॉल्ट कीवर्ड:

जेव्हा कोणत्याही प्रकरणातील स्थिरांक मूल्यांकन केलेल्या अभिव्यक्तीशी जुळत नाही, तेव्हा ते कॅच-ऑल केस म्हणून कार्य करते. कोणतेही जुळणारे प्रकरण अस्तित्त्वात नसल्यास आणि "डीफॉल्ट" प्रकरण अस्तित्त्वात नसल्यास, "डीफॉल्ट" प्रकरणाशी संबंधित कोड ब्लॉक चालविला जातो. हे बर्‍याचदा अशा परिस्थितीत हाताळण्यासाठी वापरले जाते जेथे नमूद केलेल्या कोणत्याही परिस्थितीत प्रदान केलेल्या इनपुटवर लागू होत नाही.

उदाहरण

#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya() {
paunaZ saMqyaa = 5;

naivada (saMqyaa) {
sYaitai 1:
laiha("maulya Aahe 1\n");
YaaMbavaa;
sYaitai 2:
laiha("maulya Aahe 2\n");
YaaMbavaa;
sYaitai 3:
laiha("maulya Aahe 3\n");
YaaMbavaa;
dipaflT:
laiha("maulya Aahe naahi 1, 2, kiMvaa 3\n");
YaaMbavaa; // baaherRpada D naivada vaioaana naMtar AMmalabajaavanai D dipaflT sYaitai blak
}

vaapasakra 0;
}

आउटपुट

maulya Aahe naahi 1, 2, kiMvaa 3

स्पष्टीकरण:

या उदाहरणात, स्विच स्टेटमेंट व्हेरिएबल नंबरचे मूल्य (जे 5 आहे) चे परीक्षण करते. कोणतेही प्रकरण संख्येशी जुळत नसल्यामुळे, प्रोग्राम "डीफॉल्ट" प्रकरणाशी संबंधित कोड ब्लॉक करतो. "डीफॉल्ट" प्रकरणातील "ब्रेक" स्टेटमेंट हे सुनिश्चित करते की "डीफॉल्ट" केस ब्लॉक कार्यान्वित केल्यानंतर प्रोग्राम स्विच स्टेटमेंटमधून बाहेर पडतो. स्विच स्टेटमेंटमध्ये अंमलबजावणीचा प्रवाह नियंत्रित करण्यासाठी "ब्रेक" आणि "डीफॉल्ट" कीवर्ड दोन्ही आवश्यक भूमिका निभावतात. "ब्रेक" विधान गडी बाद होण्याचा क्रम वर्तन प्रतिबंधित करते, तर "डीफॉल्ट" प्रकरण अतुलनीय प्रकरणे हाताळण्याचा एक मार्ग प्रदान करते.

#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya() {
paunaZ saMqyaa = 5;

naivada (saMqyaa) {
sYaitai 1:
laiha("maulya Aahe 1\n");
YaaMbavaa;
sYaitai 2:
laiha("maulya Aahe 2\n");
YaaMbavaa;
sYaitai 3:
laiha("maulya Aahe 3\n");
YaaMbavaa;
dipaflT:
laiha("maulya Aahe naahi 1, 2, kiMvaa 3\n");
YaaMbavaa; // baaherRpada D naivada vaioaana naMtar AMmalabajaavanai D dipaflT sYaitai blak
}

vaapasakra 0;
}

आउटपुट

maulya Aahe naahi 1, 2, kiMvaa 3

स्पष्टीकरण:

या उदाहरणात, स्विच स्टेटमेंट व्हेरिएबल नंबरचे मूल्य (जे 5 आहे) चे परीक्षण करते. कोणतेही प्रकरण संख्येशी जुळत नसल्यामुळे, प्रोग्राम "डीफॉल्ट" प्रकरणाशी संबंधित कोड ब्लॉक करतो. "डीफॉल्ट" प्रकरणातील "ब्रेक" स्टेटमेंट हे सुनिश्चित करते की "डीफॉल्ट" केस ब्लॉक कार्यान्वित केल्यानंतर प्रोग्राम स्विच स्टेटमेंटमधून बाहेर पडतो. स्विच स्टेटमेंटमध्ये अंमलबजावणीचा प्रवाह नियंत्रित करण्यासाठी "ब्रेक" आणि "डीफॉल्ट" कीवर्ड दोन्ही आवश्यक भूमिका निभावतात. "ब्रेक" विधान गडी बाद होण्याचा क्रम वर्तन प्रतिबंधित करते, तर "डीफॉल्ट" प्रकरण अतुलनीय प्रकरणे हाताळण्याचा एक मार्ग प्रदान करते.

सी स्विच स्टेटमेंट गडी बाद होण्याचा क्रम आहे

सी भाषेत, स्विच स्टेटमेंटमध्ये पडते; याचा अर्थ असा की आपण स्विच प्रकरणात ब्रेक स्टेटमेंट वापरत नसल्यास, जुळणार्‍या प्रकरणानंतरची सर्व प्रकरणे कार्यान्वित केली जातील. खाली दिलेल्या उदाहरणाद्वारे स्विच स्टेटमेंटच्या स्थितीद्वारे गडी बाद होण्याचा प्रयत्न करूया.

उदाहरण

#vaapara<PsaTidiAayaAae.Pca>
paunaZ mauqya(){
paunaZ kzmaaMk=0;

laiha("pzavaiST kra a kzmaaMk:");
vacaa("%paunaZ",&kzmaaMk);

naivada(kzmaaMk){
sYaitai 10:
laiha("kzmaaMk Aahe samaana Tu 10\n");
sYaitai 50:
laiha("kzmaaMk Aahe samaana Tu 50\n");
sYaitai 100:
laiha("kzmaaMk Aahe samaana Tu 100\n");
dipaflT:
laiha("kzmaaMk Aahe naahi samaana Tu 10, 50 kiMvaa 100");
}
vaapasakra 0;
}

आउटपुट

pzavaiSTRkra A kzmaaMk:10
kzmaaMk Aahe samaana Tu 10
kzmaaMk Aahe samaana Tu 50
kzmaaMk Aahe samaana Tu 100
kzmaaMk Aahe naahi samaana Tu 10, 50 kiMvaa 100

आउटपुट

pzavaiSTRkra A kzmaaMk:50
kzmaaMk Aahe samaana Tu 50
kzmaaMk Aahe samaana Tu 100
kzmaaMk Aahe naahi samaana Tu 10, 50 kiMvaa 100

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

आम्ही स्विच स्टेटमेंटमध्ये पाहिजे तितके स्विच स्टेटमेंट वापरू शकतो. अशा प्रकारच्या विधानांना नेस्टेड स्विच केस स्टेटमेन्ट म्हणतात. खालील उदाहरणाचा विचार करा.

उदाहरण

#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya () {

paunaZ mai = 10;
paunaZ jae = 20;

naivada(mai) {

sYaitai 10:
laiha("D maulya cyaa i maulyaaMkna kelae maoyae baa svaica: %paunaZ\n",mai);
sYaitai 20:
naivada(jae) {
sYaitai 20:
laiha("D maulya cyaa j maulyaaMkna kelae maoyae naesTed svaica: %paunaZ\n",jae);
}
}

laiha("Acauk maulya cyaa i Aahe : %paunaZ\n", mai );
laiha("Acauk maulya cyaa j Aahe : %paunaZ\n", jae );

vaapasakra 0;
}

आउटपुट

D maulya cyaa mai maulyaaMknaRkelae maoyae baa naivada: 10
D maulya cyaa jae maulyaaMknaRkelae maoyae naesTed naivada: 20
Acauk maulya cyaa mai Aahe : 10
Acauk maulya cyaa jae Aahe : 20

स्विच स्टेटमेंटचे फायदे:

सी मध्ये स्विच स्टेटमेंटचे बरेच फायदे आहेत. स्विच स्टेटमेंटचे काही मुख्य फायदे खालीलप्रमाणे आहेत: वाचनीयता आणि स्पष्टता: स्विच स्टेटमेंट कोडमध्ये मल्टीवे ब्रांचिंग व्यक्त करण्यासाठी एक संक्षिप्त आणि सरळ मार्ग प्रदान करते. एकाधिक प्रकरणांशी व्यवहार केल्याने कोड अधिक संघटित आणि एकाधिक नेस्टेड आयएफ-एल्स स्टेटमेन्टपेक्षा वाचण्यास सुलभ होऊ शकतो. कार्यक्षमता: एकाधिक अटींचा व्यवहार करताना स्विच स्टेटमेंट सामान्यत: आयएफ-एलएसई स्टेटमेन्टच्या मालिकेपेक्षा अधिक कार्यक्षम असते. हे थेट जंप टेबल म्हणून कार्य करते, जे अंमलबजावणीच्या वेळेच्या बाबतीत वेगवान आणि अधिक अनुकूलित करते. केस-आधारित लॉजिकः स्विच स्टेटमेंट नैसर्गिकरित्या अशा परिस्थितीत बसते जेथे प्रोग्रामला एकाच व्हेरिएबलच्या विशिष्ट मूल्यांवर आधारित निर्णय घेणे आवश्यक असते. केस-आधारित लॉजिकची अंमलबजावणी करण्याचा हा एक अंतर्ज्ञानी आणि सरळ मार्ग आहे. स्विच स्टेटमेंट डीफॉल्ट केस वापरुन समर्थन देते जे कोणत्याही प्रदान केलेल्या प्रकरणांशी जुळत नाही अशा मूल्यांसाठी कॅच-ऑल पर्याय म्हणून काम करते. हे डीफॉल्ट केस स्पष्टपणे नमूद केलेले नसलेले असामान्य इनपुट किंवा परिस्थिती हाताळते.

स्विच स्टेटमेंटचे तोटे:

सी मध्ये स्विच स्टेटमेंटचे अनेक तोटे आहेत. स्विच स्टेटमेंटचे काही मुख्य तोटे खालीलप्रमाणे आहेत: मर्यादित अभिव्यक्ती: स्विच स्टेटमेंटमध्ये वापरल्या जाणार्‍या अभिव्यक्तीमुळे अविभाज्य मूल्य (चार, इंट, एनम) किंवा सुसंगत डेटा प्रकार असणे आवश्यक आहे. हे अधिक जटिल किंवा नॉन-कॉन्स्टंट अभिव्यक्ती हाताळू शकत नाही, काही परिस्थितींमध्ये त्याची लवचिकता मर्यादित करते. श्रेणींची तुलना करण्यास असमर्थता: आयएफ-एल्स स्टेटमेंट्सच्या विपरीत, स्विच स्टेटमेंट थेट मूल्यांच्या श्रेणी हाताळू शकत नाही. स्विच स्टेटमेंटमधील प्रत्येक प्रकरण विशिष्ट स्थिर मूल्याचे प्रतिनिधित्व करते, ज्यामुळे मूल्यांची श्रेणी कार्यक्षमतेने हाताळणे आव्हानात्मक होते. फ्लोटिंग-पॉईंट नंबरसाठी कोणतेही समर्थन नाही: स्विच स्टेटमेंट केवळ अविभाज्य प्रकार (पूर्णांक) आणि एनममधील मूल्ये स्वीकारते; हे फ्लोटिंग-पॉईंट नंबर स्वीकारत नाही. हे फ्लोटिंग-पॉईंट पूर्णांकांसारखे नॉन-इंटिग्रल डेटा प्रकार हाताळत नाही, जे काही परिस्थितींमध्ये समस्याप्रधान असू शकते. गडी बाद होण्याचा क्रम: स्विच स्टेटमेंट्समध्ये डीफॉल्टनुसार "गडी बाद होण्याचा क्रम" वर्तन आहे ज्याचा अर्थ असा होतो की जर एखाद्या प्रकरणात "ब्रेक" स्टेटमेंट समाविष्ट नसेल तर अंमलबजावणी खालील केस ब्लॉकमध्ये "खाली येईल". योग्यरित्या व्यवस्थापित न केल्यास, यामुळे अवांछित वर्तन होऊ शकते. डुप्लिकेट कोड: स्विच स्टेटमेंटचा वापर केल्यास काही परिस्थितींमध्ये डुप्लिकेट कोड होऊ शकतो, विशेषत: जेव्हा असंख्य प्रकरणे समान क्रियांची मागणी करतात. योग्यरित्या व्यवस्थापित न केल्यास, याचा परिणाम कोड डुप्लिकेशनमध्ये होऊ शकेल. नेस्टेड स्विच जटिल होऊ शकतात: नेस्टेड स्विच स्टेटमेंट्सचा व्यवहार करताना, कोड जटिल आणि कमी वाचनीय होऊ शकतो. अशा नेस्टेड स्ट्रक्चर्स समजून घेण्यासाठी आणि देखरेखीसाठी अतिरिक्त प्रयत्नांची आवश्यकता असू शकते.

◀ मागील पुढील ▶