कंडीशनल :
if() Statement:
if statement हमारे लिए एक मुख्य तरीका होता है जिसके द्वारा हम यह निर्धारित कर सकते है कि इंस्ट्रक्शन का सेट मतलब कि स्टेटमेंट्स तभी एक्सीक्यूट हो , जब दी गई कंडीशन true हो |
किसी भी स्टेटमेंट को आप चेकिंग के बाद एक्सीक्यूट करने के लिए if() स्टेटमेंट का प्रयोग कर सकते है बस इसके लिए आपको करना क्या होगा की जिस स्टेटमेंट को चेकिंग के बाद एक्सीक्यूट करना है उसके पहले if(expression) लगा दीजिये |
if() statement उदाहरण
#include <stdio.h>
int main()
{
int x = 5;
if(x>2) printf("x, 2 से बड़ा है");
return 0;
}
आउटपुट देखें =>
if(x>2) के बाद स्थित sub-statement ((printf("x, 2 से बड़ा है");) तभी एक्सीक्यूट होगा जब कंट्रोलिंग एक्सप्रेशन अर्थात x>2 true होगा |
हमने ऊपर दिए उदाहरण में sub-statement उसी लाइन में लिखा है आप conventional आमतौर पर जो लोग करते है तरीके से indent देते हुए भी लिख सकते है ताकि स्टेटमेंट्स स्पस्ट दिखे|
if() indentation उदाहरण
#include <stdio.h>
int main()
{
int x = 5;
if(x>2)
printf("x, 2 से बड़ा है");
return 0;
}
आउटपुट देखें =>
जैसे कि आपने पहले ही नोटिस कर लिया होगा , हमने if() के बाद semi-colon नही लगाया है | जैसे कि यह पूरा एक स्टेटमेंट हो | हाँ ऐसा है भी अब आइये कुछ छेड़खानी करते है |
ध्यान दे यह आपको आसान दिखेगा लेकिन बड़े बड़े प्रोग्रामर भी इसके जाल में फस जाते है , इसलिए यह बहुत महत्वपूर्ण है |
if() mistake उदाहरण
#include <stdio.h>
int main()
{
int x = 5;
if(x>2); // सूक्ष्म लेकिन भयानक गलती
printf("x, 2 से बड़ा है");
return 0;
}
आउटपुट देखें =>
ऊपर दिए bug से infested code में if() statement semi-colon के बाद टर्मिनेट हो जायेगा जिसका मतलब की printf() statement मनमौजी हो जायेगा | और निश्चित तौर पर रन करेगा , क्योकि उसे किसी टेस्टिंग से नही गुजरना नही पड़ेगा |
लेकिन ध्यान दें , indentation का कोड में कोई फर्क नही पड़ेगा , यह केवल हमें कोड आसानी से समझ में आये इसके लिए प्रयोग किया गया है
if() में प्रयोग किया गया > (greater than) वही आपका मैथ वाला है , साथ ही <(less than ) ,>=(greater than equal to) , <=( less than equal to) आदि का भी प्रयोग किया जा सकता है , ध्यान दें की>= और <=म ें स्पेस नही है |
else
else word का मतलब , आप अन्यथा
से समझ सकते है |
अब आइये उदाहरण से स्पष्ट करते है :
else उदाहरण
#include <stdio.h>
int main()
{
int x = 5;
if(x<0)
printf(" x , 2 से छोटा है ");
else
printf("x, 2 से बड़ा है ");
return 0;
}
आउटपुट देखें =>
ऊपर दिए कोड से आप आसानी से अनुमान लगा सकते है कि आखिर else का प्रयोग क्यों किया जाता है|
else if() Ladder
अगर आपके पास ऐसी कोई समस्या है जहाँ आपके पास एक से ज्यादा कंडीशन है तथा जिनके अलग अलग स्टेटमेंट है, जिन्हें आप क्रमशः चेक करके प्रिंट करना करना चाहते है अर्थात अगर पहली कंडीशन if() true न होतो तो नेक्स्ट कंडीशन else if() चेक की जाये, तो else if() का प्रयोग कर सकते है| और अगर सभी else if() की कंडीशन false होती है तो आप अंत में पिछले उदाहरण की तरह else का प्रयोग करके एक अन्य स्टेटमेंट अपनी आवश्यकता अनुसार प्रिंट करा सकते है जो की हर स्थति में प्रिंट होगा
else if() उदाहरण
#include <stdio.h>
int main()
{
int x = 10;
if(x<1)
printf(" x, 1 से बड़ा है | ");
else if(x<3)
printf("x, 1 से बड़ा है, लेकिन 3 से छोटा है");
else if(x<6)
printf("x, 3 से बड़ा है, लेकिन 6 से छोटा है ");
else if(x<11)
printf("x, 6 से बड़ा है, लेकिन 11 से छोटा है");
else
printf("x, 11 से बड़ा है ");
return 0;
}
आउटपुट देखें =>
ऊपर दिए कोड में हमने x=10 के लिए अलग अलग कंडीशन दी हुई जो भी कंडीशन मैच करेगी वही स्टेटमेंट प्रिंट हो जायेगा और execution वहीं रुक जायेगा| मतलब कि अगर पहली कंडीशन if() की true हुई तो अन्य को चेक नही किया जायेगा|
else if() एक्सप्रेशन का प्रयोग आप , विकल्प के रूप में करते है की अगर पहली जाँच सत्य नही हुई तो अन्य विकल्प भी हों |
कृपया ध्यान दें =>
- else if में else और if के बीच में स्पेस है
- अगर आप कई else if का प्रयोग करते है तो हो सकता है , बीच में किसी में else लगाना भूल जाएँ जिसका परिणाम होगा की एक से ज्यादा प्रिंट आपको प्राप्त होंगे , जो आप बिलकुल नही चाहते होंगे अन्यथा else if का प्रयोग ही क्यों करेंगे |
if()... else if के बजाय कई if :
पिछले उदाहरण में गौर करें तो आप पाएंगे कि अगर आपने प्रोग्राम लिखने में मिस्टेक नही किया तो हर स्थित में केवल एक ही आउटपुट (printf()) प्राप्त होगा या एक्शन हो सकता है , लेकिन अगर आपको एक से ज्यादा कंडीशन देना हो (evaluation करना हो ) और एक से ज्यादा एक्शन (जैसे printf() के द्वारा आउटपुट ) परफॉर्म करवाना होतो आप सिम्पली क्या कर सकते है कि
सभी else if() को if() से बदल दीजिये अब इससे होगा क्या की जितने भी इवैल्यूएशन ट्रू होंगे उतने एक्शन परफॉर्म होंगे , जबकि if else के केस में जिस किसी भी स्टेटमेंट का इवैल्यूएशन true हो जाता था उस पर एक्शन परफॉर्म हो जाता था और और शेष सभी स्टेटमेंट इगनोर कर दिए जाते थे |
else if() उदाहरण
#include <stdio.h>
int main()
{
int x = 10;
if(x<1)
printf(" x, 1 से बड़ा है | ");
if(x>3)
printf("x, 1 से बड़ा है, लेकिन 3 से छोटा है \n");
if(x<6)
printf("x, 3 से बड़ा है, लेकिन 6 से छोटा है ");
if(x>11)
printf("x, 6 से बड़ा है, लेकिन 11 से छोटा है");
else
printf("x, 11 से बड़ा है ");
return 0;
}
आउटपुट देखें =>
उपरोक्त दोनों उदाहरण को बेहतर तरीके से समझने के लिए आप स्वयं से विभिन्न एक्सरसाइज बना सकते है , मतलब की आप अलग अलग तरीके से एक्शन परफॉर्म कराएँ और दोनों के बीच अंतर को समझे |
Relational Operators
Truth क्या है ?
C प्रोग्रामिंग में अलग से कंडीशनल एक्सप्रेशन के लिए "logical" या "Boolean" class मतलब की true/false का प्रयोग नही किया जाता है | इसकी जगह में c programming में expression जो की if statement में लिया जाता वह एक arithmetic expression होता है , जिसे तभी true माना जाता है जब यह 0 के अतिरिक्त कुछ भी होता है | अर्थात 0 होने पर false माना जायेगा |
अब आपके मन में एक प्रश्न उठ सकता है कि क्या -1 या -0.001 आदि में भी क्या true होगा | तो उत्तर है हाँ |कहने की जरूरत नही आपको ये प्रिंसिपल बिलकुल भी अच्छा न लगा होगा| लेकिन फिर भी याद करने के दृष्टि से इंट्रेस्टिंग हो सकता है
नीचे दिए उदाहरण में पहले if ... else statement में आउटपुट false होगा प्राप्त ऐसा इसलिए क्योकि एक्सप्रेशन में दी गई वैल्यू 0 है अर्थात false , जिससे पहला स्टेटमेंट प्रिंट नही होगा और वह else स्टेटमेंट में जम्प करेगा और हमें false होगा प्राप्त होगा |
तथा दूसरे if ... else Statement में आउटपुट true होगा प्राप्त ऐसा इसलिए क्योकि एक्सप्रेशन में दी गई वैल्यू 1 है अर्थात true , जिससे पहला स्टेटमेंट प्रिंट होगा और program वहीं टर्मिनेट हो जायेगा else स्टेटमेंट में में जायेगा ही नही |boolean उदाहरण
#include <stdio.h>
int main()
{
if(0)
printf(" true होगा \n ");
else
printf("false होगा \n ");
if(1)
printf("true होगा ");
else
printf("false होगा");
return 0;
}
आउटपुट देखें =>
अब आइये रिलेशनल ऑपरेटर्स देखते है | जो किसी भी स्थित में int में वैल्यू 0 मतलब की false और 1 मतलब की true return करेगा |
Operator | विवरण |
---|---|
expression1 > expression2 | expression 1, expression 2 से बड़ा है | |
expression1 < expression 2 | expression1 , expression 2 से छोटा है |
expression1 >= expression2 | expression1 , expression2 से बड़ा या बराबर है | |
expression1 <=e xpression2 | expression1 , expression2 से छोटा या बराबर है | |
expression1 == expression2 | expression1 , expression2 से बराबर है | |
expression1 == expression2 | expression1 , expression2 के बराबर नही है | |
expression1 और expression2 के रूप में आप कोई भी एक्सप्रेशन ले सकते है , प्रारंभ में आप कोई integer वैल्यू से भी try कर सकते है , और विभिन्न प्रकार से ऑपरेशन परफॉर्म करवा सकते है|
आपके तरकश में कुछ ऐसे भी एक्सप्रेशन होंगे जिसके द्वारा आप C compiler को कंफ्यूज करने कि कोशिश करेंगे जैसे कि double > int (0.0001 > 0 ) तो हम आपको बता दें कि जैसा आप सोचते है वैसा C भी इस केस में (true) सोचता है
यह हमेशा ध्यान रखे जो कि हमेशा बिगिनर के एरर का कारन बनता है कि C programming में == (double equal) मतलब equal to होता है जबकि single का मतलब assignment operator होता है जिसका प्रयोग variable में वैल्यू assign करते समय आप आलरेडी कर चुके है |
अन्य नोटिस करने वाली चीजो कि बात करें तो == ,!=, <= या >= के बीच कोई स्पेस नही है , जिसके बारे में हम आलरेडी आपको सावधान कर चुके है इसी लेसन में |
लॉजिकल ऑपरेटर्स (logical operators)
C प्रोग्रामिंग में logical operations के लिए हमें निम्नलिखित ऑपरेटर्स भी प्रदान किये गये है |
ऑपरेटर | अर्थ |
---|---|
&& | AND |
|| | OR |
() | Parenthesis |
! | Negation |
उदाहरण | परिणाम |
---|---|
2 > 1 && 3 > 5 | 0 |
2 > 1 || 3 > 5 | 1 |
( 2 > 1 || 3 < 5 ) && 2 == 5 | 0 |
!2 | 0 |
उदाहरण | परिणाम |
---|---|
2 > 1 && 3 < 5 | 1 |
2 > 1 && 2 <5 | 1 |
2 > 1 || ( 3 < 5 && 2==5 ) | 1 |
!( 2 > 1 || 3 < 5 ) && 2 == 5 | 1 |
&&(AND) operator
AND operator &&
केवल तभी true evaluate होता जब दोनों operands शून्य के अतिरिक्त कुछ भी होता है , अर्थात दोनों ओपेरंड्स अगर true हैं तभी AND operator true evaluate होता है | अब operands कोई रिलेशनल operator के साथ expression
हो सकता है या रिलेशनल operator के साथ कोई वैल्यू |
|| (OR) operator
OR operator ||
केवल तभी true evaluate होता जब दोनों operands में से कोई भी एक 0 के अतिरिक्त कुछ भी होता है , अर्थात एक ओपेरंड्स अगर true हैं तो OR operator true evaluate होता है | अब operands कोई रिलेशनल operator के
साथ expression हो सकता है या रिलेशनल operator के साथ कोई वैल्यू |
! (Negation)
! (Negation) operator अगर कोई इवैल्यूएशन अगर true है तो उसे false बनाने के लिए किया जाता है |
() (Parenthesis) का उपयोग आप मैथ की तरह ही कर सकते है , इसके द्वारा जैसे आप मैथ के जैसे विभिन्न expression(3+5) का ग्रुप बनाने के लिए किया जा सकता है , जो की मैथ कि तरह ही फिर वर्क करता है |
&& और || किस क्रम में अपने argument को evaluate करते है ?
आमतौर पर जब हम कोई नार्मल expression लिखते है जैसे की "x + y" तो कम्पाइलर किसी भी क्रम में दोनों आर्गुमेंट को evaluate कर सकता है |
OR (|| ) : OR (|| ) के case compiler हमेशा बाएं साइड से evaluate करना शुरू करता है | ऐसा इसलिए करता क्योंकि जैसे की आप जानते है OR (|| ) के केस चाहे कितने भी एक्सप्रेशन हो , अगर कोई भी एक एक्सप्रेशन true (zero के अतिरिक्त ) हो जाता है तो कम्पाइलर चाहे अन्य expression false ही क्यों हो true ही देता है , इसलिए अगर पहला एक्सप्रेशन ट्रू हो जाता है तो अन्य को चेक करने की जरूरत ही नही पड़ती है |
OR (|| ) के case में जब सभी एक्सप्रेशन false होते है तभी false अर्थात 0 देता है
Blocks
{ ... } (ब्लॉक्स) का उपयोग आप blocks के अन्दर आप मल्टीप्ल स्टेटमेंट को ग्रुप करने के लिए करते है |
हालाँकि आप सिंगल स्टेटमेंट को भी ब्लाक के अन्दर रख सकते है |
ध्यान रखे } (closing block) के बाद () (Parenthesis) की तरह semi-colon (;) न लगायें |
Nested if
हम एक if() स्टेटमेंट के अन्दर दूसरा if() स्टेटमेंट रख सकते है | ऐसा करना कई परिस्थियों में उपयोग हो सकता है जैसे एक से ज्यादा शर्त पूरी करने पर किसी स्टेटमेंट को प्रिंट करना आदि | आप नीचे दिए उदाहरण से अपने लिए कोई भी रियल वर्ल्ड प्रॉब्लम लेकर टेस्ट कर सकते है |Nested if
#include
int main(){
int i = 1;
if ( i > 0 ) {
if ( i % 2 == 0 )
printf("i सम और जीरो से बड़ा है\n");
else
printf("i विषम और जीरो से बड़ा है \n");
}
else { // i <= 0
if ( i % 2 == 0 )
printf("i ऋणात्मक और सम है \n");
else
printf("i ऋणात्मक और विषम है\n");
}
return 0;
}
आउटपुट देखें =>
ऊपर दिए उदारहण से आपको क्लियर हो गया होगा कि आखिर Nested if कैसे उपयोगी हो सकता है | आप अपने से उदाहरण सोचे और उसका प्रैक्टिकल करें | सभी टाइप के लिए कि कौन सा उदाहरण किसके साथ बेहतर हो सकता है |
ऊपर दिए उदाहरण को आप else if कि मदद से इस प्रकार से लिख सकते है | जिसमे हम लॉजिकल && (AND) ऑपरेटर का प्रयोग कर रहे है | आप अन्य तरीके से भी इस प्रोग्राम को लिख सकते है |
if else if else
#include <stdio.h>
int main(){
int i = 1;
if ( i > 0 && i % 2 == 0 ){
printf("i सम और जीरो से बड़ा है\n");
}
else if ( i > 0 && i % 2 != 0 ){
printf("i विषम और जीरो से बड़ा है\n");
}
else if ( i <= 0 && i % 2 == 0 ){
printf("i ऋणात्मक और सम है\n");
}
else if ( i <= 0 && i % 2 != 0 ){
printf("i ऋणात्मक और विषम है\n");
}
else
printf("मुझे लगता है अपने कहीं गलती की है !\n");
return 0;
}
आउटपुट देखें =>
switch statement
switch() statement के प्रयोग से बहुत से विकल्प में से किसी एक को चुनने का आप्शन मिल जाता है, जहाँ default एक ऑप्शनल विकल्प होता है , जो कि किसी भी विकल्प के न चुने जाने पर हर स्थित में आउटपुट देता है | और यह सब प्रक्रिया integer controlling expression के आधार पर होता है |
कई विकल्प में से किसी एक सेलेक्ट करने का कार्य हमे किसी भी एप्लीकेशन में देखने को मिल जाता है , या आप कुछ भी बनाये उसमे यह काम अवश्य देखने को मिल जाता है|
जो कि अगर आप प्रैक्टिस के लिए कोई छोटा सा प्रोग्राम बना रहे होतो if स्टेटमेंट के द्वारा आसानी से बना सकते है |
लेकिन अगर आप किसी एप्लीकेशन आदि में गौर करे तो वहां बहुत ज्यादा विकल्प देखने को मिलते है, जिसे आप if statement के द्वारा बना तो सकते है लेकिन यहाँ आपको बहुत बड़े if स्टेटमेंट लिखें होंगे, लेकिन क्या हो अगर आपके पास अन्य विकल्प के रूप switch() स्टेटमेंट हो जो इस काम को आसां बना देतो तो क्या आप if() statement के साथ यह आनाडी काम करेंगे |
विभिन्न स्थितियों से निपटने के लिए c हमें switch() statement देता है , जिसको प्रॉपर प्रयोग करने के लिए कम से कम इन दो शर्तो को ध्यान रखना आवश्यक है :
वह एक्सप्रेशन जो switch() के विकल्प को नियंत्रित करता है वह हमेशा integer में होना चाहिए |
switch() statement के सभी option integer constants होने चाहिए |
ऊपर दिए दोनों point से डरने की जरूरत नही आगे आप उदाहरण से खुद समझ जायेंगे |
if else if else
#include <stdio.h>
int main() {
int num = 1;
//scanf("%d", &num);
switch (num) {
case 0:
printf("यह पहला विकल्प है \n");
break;
case 1:
printf("यह दूसरा विकल्प है.\n");
break;
case 2:
printf("यह तीसरा विकल्प है.\n");
break;
default:
printf("आपके द्वारा चुना गया विकल्प : %d नही है ", num);
}
return 0;
}
आउटपुट देखें =>
जैसे कि आप if() स्टेटमेंट को इसी पोस्ट में देख चुके है ,switch statement का आउटसाइड भी उसी तरह होता है मतलब की पहले switch keyword फिर Parenthesis में integer-expression , अंतर केवल यह है की if में डिफ़ॉल्ट रूप से if के ब्लाक में क्या लिखना है निर्धारित नही था, लेकिन switch के block के लिए हमें पहले से बनी बनाई चीजे देखने को मिलती है
case labels
जैसे कि case जिससे एक स्पेस देकर हम label: के रूप में integer constant देते है जो कि switch के integer controlling expression के सामान होने पर पिक किया जाता है , तथा उससे सम्बंधित स्टेटमेंट परफॉर्म होते है | जैसे की कुछ प्रिंट करना आदि
switch में label unique होना चाहिए अर्थात एक से ज्यादाबार सामान लेबल नही दिया जाना चाहिए |
break का प्रयोग
प्रत्येक case label: अंत में या उसके बाद वाले case label: के पहले break का प्रयोग आमतौर पर किया जाता है |
ऐसा करना अनिवार्य नही है आप अपने अनुसार ब्रेक का प्रयोग कर सकते है जो बहुत केस में करना आवश्यक भी होता है |
अगर भूल बस कहीं पर ब्रेक लगाना भूल जाते है तो यह एक बहुत बड़ा bug हो सकता है |
क्योंकि switch का integer controlling expression जिस लेबल को pick नही किया है वह भी साथ में परफॉर्म हो जायेगा |
अर्थात आप break का प्रयोग ऐसे स्थान पर कर सकते है जहाँ पर आप किसी विकल्प को एक्सीक्यूट करना चाहते है और स्विच से बाहर आना चाहते है |
if else if else
#include <stdio.h>
int main() {
int num = 1;
//scanf("%d", &num);
switch (num) {
case 0:
printf("यह पहला विकल्प है \n");
break;
case 1:
printf("यह दूसरा विकल्प है.\n");
case 2:
printf("यह तीसरा विकल्प है.\n");
break;
default:
printf("आपके द्वारा चुना गया विकल्प : %d नही है ", num);
}
return 0;
}
आउटपुट देखें =>
default का प्रयोग
या फिर किसी भी विकल्प के न मिलने पर अगर defult, switch में प्रयोग किया गया है तो उसके statement को परफॉर्म कर स्विच से बाहर निकलने में |
switch में default का if else के else या if else ifelse
के else कि तरह किया जाता है |if else if else
#include <stdio.h>
int main() {
int num = 3;
//scanf("%d", &num);
switch (num) {
case 0:
printf("यह पहला विकल्प है \n");
break;
case 1:
printf("यह दूसरा विकल्प है.\n");
break;
case 2:
printf("यह तीसरा विकल्प है.\n");
break;
default:
printf("आपके द्वारा चुना गया विकल्प : %d नही है ", num);
}
return 0;
}
आउटपुट देखें =>
0 टिप्पणियाँ
आपके सुझाव सादर आमंत्रित है