C भाषा में सशर्त कथन: उदाहरण सहित If, Else और नेस्टेड If

⚡ स्मार्ट सारांश

सी में सशर्त कथन किसी प्रोग्राम के प्रवाह को नियंत्रित करते हैं, जिससे कोड के ब्लॉक केवल तभी निष्पादित होते हैं जब परीक्षण की गई शर्त सत्य साबित होती है, और इस प्रकार if, if-else, नेस्टेड और else-if लैडर संरचनाओं के माध्यम से निर्णय लेने में मदद मिलती है।

  • 🔤 यदि कथन: एक इफ स्टेटमेंट अपने ब्लॉक को तभी चलाता है जब कंडीशन का मान शून्य के अलावा सही हो, जबकि शून्य का मतलब गलत होता है।
  • 🔀 यदि-अन्यथा: इफ-एल्स संरचना एक झूठी शाखा जोड़ती है, जो शर्त सही होने पर एक ब्लॉक और गलत होने पर दूसरा ब्लॉक चलाती है।
  • ️ संबंधपरक संकारक: छह ऑपरेटर (<, <=, >, >=, ==, !=) बूलियन एक्सप्रेशन बनाते हैं जिनका परीक्षण प्रत्येक शर्त करती है।
  • 🪜 एल्स-इफ लैडर: एक नेस्टेड एल्स-इफ लैडर कई अभिव्यक्तियों की ऊपर से नीचे तक जांच करता है और पहली सही शाखा, या एक डिफ़ॉल्ट एल्स को चलाता है।
  • ❓ टर्नरी ऑपरेटर: ?: सशर्त अभिव्यक्ति एक संक्षिप्त if-else स्टेटमेंट लिखती है जो एक ही पंक्ति में दो मानों में से एक को लौटाती है।
  • 🤖 एआई सहायता: GitHub Copilot if-else लॉजिक का ड्राफ्ट तैयार करता है और उसकी समीक्षा करता है, अनुपस्थित ब्रैकेट को चिह्नित करता है और बेहतर स्थितियों का सुझाव देता है।

C में सशर्त कथन: IF, IF Else और नेस्टेड IF Else

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

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

विपरीत C में लूप उस कोड को दोहराने पर, सशर्त कथन एक मार्ग चुनते हैं।

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

  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 निर्माण के उपयोग को दर्शाता है।

C में if स्टेटमेंट का फ्लोचार्ट

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

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

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

  • < - से कम
  • <= — से कम या बराबर
  • > - से अधिक
  • >= — से बड़ा या बराबर
  • == - के बराबर
  • != - असमान

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

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

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

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

C इफ-एल्स स्टेटमेंट फ्लोचार्ट

इफ-एल्स स्टेटमेंट, इफ स्टेटमेंट का विस्तारित रूप है। इफ-एल्स का सामान्य रूप इस प्रकार है:

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

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

निम्नलिखित प्रोग्राम 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

C में if-Els स्टेटमेंट का उदाहरण आउटपुट

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

C में नेस्टेड इफ-एल्स स्टेटमेंट

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

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

नोट: नेस्टेड इफ-एल्स में, इंडेंटेशन का विशेष ध्यान रखना आवश्यक है क्योंकि इसमें कई इफ-एल्स संरचनाएं शामिल होती हैं, इसलिए प्रत्येक संरचना को समझना मुश्किल हो जाता है। सही इंडेंटेशन से प्रोग्राम को पढ़ना आसान हो जाता है।

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

C में नेस्टेड एल्स-इफ लैडर

नेस्टेड 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;

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

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

#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 लैडर कंस्ट्रक्ट का उपयोग किया है।

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

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

अक्सर पूछे जाने वाले प्रश्न

एक इफ-एल्स कंपोजिशन किसी भी बूलियन एक्सप्रेशन का परीक्षण करता है, जिसमें रेंज और रिलेशनल चेक शामिल हैं। स्विच…केस यह एक चर की तुलना निश्चित स्थिरांक मानों से करता है और अक्सर कई मामलों में एक तेज़ जंप टेबल में संकलित हो जाता है।

डैंगलिंग एल्स प्रॉब्लम तब उत्पन्न होती है जब बिना कर्ली ब्रेसेस के नेस्टेड इफ स्टेटमेंट्स में यह स्पष्ट नहीं हो पाता कि कौन सा इफ स्टेटमेंट किस इफ स्टेटमेंट से संबंधित है। सी में, एक एल्स स्टेटमेंट हमेशा निकटतम अनमैच्ड इफ स्टेटमेंट के साथ पेयर होता है। कर्ली ब्रेसेस लगाने से यह भ्रम दूर हो जाता है।

जी हाँ। तार्किक ऑपरेटर शर्तों को जोड़ते हैं: && के लिए दोनों पक्षों का सत्य होना आवश्यक है, || के लिए कम से कम एक सत्य होना चाहिए, और ! परिणाम को उलट देता है। उदाहरण के लिए, if (age > 18 && citizen) एक ही if स्टेटमेंट में दो शर्तों का एक साथ परीक्षण करता है।

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

परिणाम ज्ञात होते ही शॉर्ट-सर्किट मूल्यांकन रुक जाता है। && के साथ, गलत बायां पक्ष दाएं पक्ष को छोड़ देता है। || के साथ, सही बायां पक्ष दाएं पक्ष को छोड़ देता है। इससे अनावश्यक कार्य और असुरक्षित संक्रियाओं से बचा जा सकता है।

जी हाँ। एक एल्स-इफ लैडर का मूल्यांकन ऊपर से नीचे की ओर किया जाता है और यह पहली सही स्थिति पर रुक जाता है। व्यापक स्थितियों को संकीर्ण स्थितियों से पहले रखने से संकीर्ण मामले छिप सकते हैं, इसलिए परीक्षणों को सबसे विशिष्ट से सबसे सामान्य क्रम में व्यवस्थित करें।

जी हां। एआई कोडिंग सहायक एक टिप्पणी से सशर्त ब्लॉक तैयार करते हैं, लंबी इफ-एल्स श्रृंखलाओं को सरल संरचनाओं में परिवर्तित करते हैं, और == के स्थान पर = का उपयोग जैसी संभावित त्रुटियों को चिह्नित करते हैं। उत्पन्न लॉजिक पर भरोसा करने से पहले हमेशा उसका परीक्षण करें।

गिटहब कोपिलॉट यह आपके कमेंट्स या आसपास के कोड से if, else-if और नेस्टेड कंडीशंस को ऑटो-कंप्लीट करता है। यह रिलेशनल और लॉजिकल एक्सप्रेशंस का सुझाव देता है और छूटे हुए ब्रैकेट्स को भी जोड़ सकता है, हालांकि आपको हर सुझाव की समीक्षा करनी चाहिए।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: