सी कंडीशनल स्टेटमेंट: IF, IF Else और नेस्टेड IF Else उदाहरण के साथ

सी भाषा में सशर्त कथन क्या है?

सी में सशर्त विवरण प्रोग्रामिंग का उपयोग शर्तों के आधार पर निर्णय लेने के लिए किया जाता है। जब कथनों के आसपास कोई शर्त नहीं होती है, तो सशर्त कथन क्रमिक रूप से निष्पादित होते हैं। यदि आप कथनों के ब्लॉक के लिए कुछ शर्त रखते हैं, तो शर्त द्वारा मूल्यांकन किए गए परिणाम के आधार पर निष्पादन प्रवाह बदल सकता है। इस प्रक्रिया को 'सी' में निर्णय लेना कहा जाता है।

'सी' प्रोग्रामिंग में सशर्त कथन निम्नलिखित दो संरचनाओं की सहायता से संभव हैं:

1. यदि कथन

2. यदि-अन्यथा कथन

इसे ब्रांचिंग भी कहा जाता है क्योंकि प्रोग्राम मूल्यांकित स्थिति के परिणाम के आधार पर निर्णय लेता है कि किस कथन को निष्पादित करना है।

यदि कथन

यह शक्तिशाली सशर्त कथनों में से एक है। यदि कथन किसी प्रोग्राम के निष्पादन के प्रवाह को संशोधित करने के लिए जिम्मेदार है। यदि कथन का उपयोग हमेशा एक शर्त के साथ किया जाता है। यदि कथन के अंदर किसी भी कथन को निष्पादित करने से पहले शर्त का मूल्यांकन किया जाता है। यदि कथन के लिए वाक्यविन्यास इस प्रकार है:

 if (condition) 
     instruction;

शर्त का मूल्यांकन सत्य या असत्य के रूप में किया जाता है। सत्य हमेशा एक गैर-शून्य मान होता है, और असत्य वह मान होता है जिसमें शून्य होता है। निर्देश एकल निर्देश या घुंघराले ब्रेसिज़ { } द्वारा संलग्न कोड ब्लॉक हो सकते हैं।

निम्नलिखित प्रोग्राम 'C' प्रोग्रामिंग में if कंस्ट्रक्ट के उपयोग को दर्शाता है:

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

आउटपुट:

num1 is smaller than num2

उपरोक्त प्रोग्राम दो संख्याओं की समानता की जांच करने के लिए if निर्माण के उपयोग को दर्शाता है।

अगर स्टेटमेंट

  1. उपरोक्त प्रोग्राम में, हमने दो वेरिएबल्स को num1, num2 के साथ क्रमशः 1, 2 मान के साथ आरंभीकृत किया है।
  2. फिर, हमने परीक्षण-अभिव्यक्ति के साथ if का उपयोग किया है ताकि यह जांचा जा सके कि कौन सी संख्या सबसे छोटी है और कौन सी संख्या सबसे बड़ी है। हमने if निर्माण में एक संबंधपरक अभिव्यक्ति का उपयोग किया है। चूँकि num1 का मान num2 से छोटा है, इसलिए शर्त का मूल्यांकन true होगा।
  3. इस प्रकार यह कथन को If के ब्लॉक के अंदर प्रिंट करेगा। उसके बाद, नियंत्रण ब्लॉक के बाहर चला जाएगा और प्रोग्राम सफल परिणाम के साथ समाप्त हो जाएगा।

संबंधपरक Operaमरोड़

सी में छह संबंधपरक ऑपरेटर हैं जिनका उपयोग निर्णय लेने और स्थितियों का परीक्षण करने के लिए बूलियन अभिव्यक्ति तैयार करने के लिए किया जा सकता है, जो सत्य या असत्य लौटाता है:

<से कम

<= इससे कम या बराबर

> से बड़ा

>= इससे बड़ा या बराबर

== बराबर

!= बराबर नहीं

ध्यान दें कि बराबर परीक्षण (==) असाइनमेंट ऑपरेटर (=) से भिन्न है क्योंकि यह सबसे आम समस्याओं में से एक है जिसका सामना प्रोग्रामर को उन्हें मिलाने पर करना पड़ता है।

उदाहरण के लिए:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

आउटपुट:

 You succeed

ध्यान रखें कि जो शर्त शून्य से भिन्न मान पर मूल्यांकन की जाती है उसे सत्य माना जाता है।

उदाहरण के लिए:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

आउटपुट:

There is someone present in the classroom

यदि-अन्यथा कथन

यदि-अन्यथा कथन

if-else is कथन If का विस्तारित संस्करण है। if-else का सामान्य रूप इस प्रकार है:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

इस प्रकार के निर्माण में, यदि परीक्षण-अभिव्यक्ति का मान सत्य है, तो कथनों का सत्य ब्लॉक निष्पादित किया जाएगा। यदि परीक्षण-अभिव्यक्ति का मान असत्य है, तो कथनों का असत्य ब्लॉक निष्पादित किया जाएगा। किसी भी स्थिति में, निष्पादन के बाद, नियंत्रण स्वचालित रूप से If के ब्लॉक के बाहर दिखाई देने वाले कथनों में स्थानांतरित हो जाएगा।

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


हम किसी चर को किसी मान से आरंभ करेंगे तथा यह निर्धारित करने के लिए एक प्रोग्राम लिखेंगे कि मान दस से कम है या दस से अधिक।

चलो शुरू करो।

#include<stdio.h>
int main()
{
	int num=19;
	if(num<10)
	{
		printf("The value is less than 10");
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

आउटपुट:

The value is greater than 10

यदि-अन्यथा कथन

  1. हमने 19 मान वाले एक वैरिएबल को इनिशियलाइज़ किया है। हमें 'C' प्रोग्राम का उपयोग करके यह पता लगाना है कि संख्या 10 से बड़ी है या छोटी। ऐसा करने के लिए, हमने if-else निर्माण का उपयोग किया है।
  2. यहां हमने शर्त num<10 इसलिए रखी है क्योंकि हमें अपने मान की तुलना 10 से करनी है।
  3. जैसा कि आप देख सकते हैं कि पहला ब्लॉक हमेशा एक सत्य ब्लॉक होता है, जिसका अर्थ है, यदि परीक्षण-अभिव्यक्ति का मान सत्य है तो पहला ब्लॉक जो कि If है, निष्पादित किया जाएगा।
  4. दूसरा ब्लॉक else ब्लॉक है। इस ब्लॉक में वे कथन होते हैं जो तब निष्पादित होंगे जब परीक्षण-अभिव्यक्ति का मान गलत हो जाता है। हमारे प्रोग्राम में, num का मान दस से अधिक है इसलिए परीक्षण-स्थिति गलत हो जाती है और else ब्लॉक निष्पादित होता है। इस प्रकार, हमारा आउटपुट else ब्लॉक से होगा जो "मान 10 से अधिक है"। if-else के बाद, प्रोग्राम एक सफल परिणाम के साथ समाप्त हो जाएगा।

'सी' प्रोग्रामिंग में हम एक दूसरे के भीतर कई if-else संरचनाओं का उपयोग कर सकते हैं जिन्हें if-else कथनों की नेस्टिंग कहा जाता है।

सशर्त अभिव्यक्तियाँ

if-else कथन को व्यक्त करने का एक और तरीका है, ?: ऑपरेटर। एक सशर्त अभिव्यक्ति में ?: ऑपरेटर में if और else के साथ केवल एक ही कथन जुड़ा होता है।

उदाहरण के लिए:

#include <stdio.h>
int main() {
  int y;
  int x = 2;
   y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */
   printf("y =%d ",y);
  return 0;}

आउटपुट:

y =2

नेस्टेड If-else कथन

जब निर्णय की एक श्रृंखला की आवश्यकता होती है, तो नेस्टेड if-else का उपयोग किया जाता है। नेस्टिंग का अर्थ है एक if-else संरचना के भीतर दूसरे if-else संरचना का उपयोग करना।

आइए नेस्टेड if-else के उपयोग को दर्शाने के लिए एक प्रोग्राम लिखें।

#include<stdio.h>
int main()
{
	int num=1;
	if(num<10)
	{
		if(num==1)
		{
			printf("The value is:%d\n",num);
		}
		else
		{
			printf("The value is greater than 1");
		}
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

आउटपुट:

The value is:1

उपरोक्त प्रोग्राम यह जांचता है कि कोई संख्या 10 से कम है या अधिक, तथा नेस्टेड if-else संरचना का उपयोग करके परिणाम प्रिंट करता है।

नेस्टेड If-else कथन

  1. सबसे पहले, हमने 1 मान के साथ एक चर num घोषित किया है। फिर हमने if-else निर्माण का उपयोग किया है।
  2. बाहरी if-else में, प्रदान की गई शर्त यह जाँचती है कि कोई संख्या 10 से कम है या नहीं। यदि शर्त सत्य है, तभी और केवल तभी यह निष्पादित होगा आंतरिक फंदेइस मामले में, स्थिति सत्य है इसलिए आंतरिक ब्लॉक संसाधित किया जाता है।
  3. इनर ब्लॉक में, हमारे पास फिर से एक शर्त है जो जाँचती है कि हमारे चर में मान 1 है या नहीं। जब कोई शर्त सत्य होती है, तो यह If ब्लॉक को प्रोसेस करेगा अन्यथा यह else ब्लॉक को प्रोसेस करेगा। इस मामले में, शर्त सत्य है इसलिए If ब्लॉक निष्पादित होता है और मान आउटपुट स्क्रीन पर प्रिंट होता है।
  4. उपरोक्त प्रोग्राम a का मान प्रिंट करेगा परिवर्तनशील और सफलतापूर्वक बाहर निकलें।

वेरिएबल का मान बदलने का प्रयास करें और देखें कि प्रोग्राम कैसे व्यवहार करता है।

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

नेस्टेड Else-if कथन

नेस्टेड else-if का प्रयोग तब किया जाता है जब मल्टीपाथ निर्णय की आवश्यकता होती है।

'सी' प्रोग्रामिंग में else-if सीढ़ियों का निर्माण कैसे किया जाता है, इसका सामान्य सिंटैक्स इस प्रकार है:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

इस प्रकार की संरचना को else-if सीढ़ी के रूप में जाना जाता है। यह श्रृंखला आम तौर पर एक सीढ़ी की तरह दिखती है इसलिए इसे else-if सीढ़ी भी कहा जाता है। परीक्षण-अभिव्यक्तियों का मूल्यांकन ऊपर से नीचे तक किया जाता है। जब भी कोई सत्य परीक्षण-अभिव्यक्ति पाई जाती है, तो उससे संबंधित कथन निष्पादित किया जाता है। जब सभी n परीक्षण-अभिव्यक्तियाँ झूठी हो जाती हैं, तो डिफ़ॉल्ट else कथन निष्पादित होता है।

आइये एक प्रोग्राम की सहायता से इसकी वास्तविक कार्यप्रणाली देखें।

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

आउटपुट:

First class

उपरोक्त प्रोग्राम टेस्ट में प्राप्त अंकों के अनुसार ग्रेड प्रिंट करता है। हमने उपरोक्त प्रोग्राम में else-if लैडर कंस्ट्रक्ट का उपयोग किया है।

नेस्टेड Else-if कथन

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

मान को संशोधित करने का प्रयास करें और आउटपुट में परिवर्तन देखें।

सारांश

  • निर्णय लेने या शाखा कथनों का उपयोग मूल्यांकित अभिव्यक्ति के परिणाम के आधार पर एक पथ का चयन करने के लिए किया जाता है।
  • इसे नियंत्रण कथन भी कहा जाता है क्योंकि यह प्रोग्राम के निष्पादन के प्रवाह को नियंत्रित करता है।
  • 'सी' निर्णय लेने वाले कथनों के लिए यदि, यदि-अन्यथा संरचना प्रदान करता है।
  • जब एकाधिक पथों का परीक्षण करना हो तो हम if-els को एक दूसरे के भीतर भी रख सकते हैं।
  • else-if सीढ़ी का उपयोग तब किया जाता है जब हमें अभिव्यक्ति के परिणाम के आधार पर विभिन्न तरीकों की जांच करनी होती है।