Control Statements in C Language

    Control Statements

    Introduction:-

    Control statement या decision making statement ऐसे स्टेटमेंट से है जो किसी प्रोग्राम का प्रवाह नियंत्रण करते हैं। ऐसे स्टेटमेंट मुख्यत: 3 प्रकार के होते हैं:-
    (1) branching control statement(ब्रांचिंग कंट्रोल स्टेटमेंट)
    (2) looping control statement(लूपिंग कंट्रोल स्टेटमेंट )
    (3) jumping control statement(जंपिंग कंट्रोल स्टेटमेंट)


    वे स्टेटमेंट जो दी गई कंडीशन के आधार पर निर्धारित करते हैं कि उपलब्ध दो या दो से अधिक विकल्पों में से कौन से विकल्प को रन करवाना है इस प्रकार की स्टेटमेंट को ब्रांचिंग स्टेटमेंट कहा जाता है।
    इस प्रकार के स्टेटमेंट के उदाहरण है if, switch आदि।

    लूपिंग से  आशय स्टेटमेंट के किसी समूह को एक से अधिक बार रन कराने की प्रक्रिया से होता है जंपिंग स्टेटमेंट का प्रयोग करके प्रोग्राम के प्रवाह को एक स्थान(स्टेटमेंट) से दूसरे स्टेटमेंट पर भेजा जा सकता है। 

    सी लैंग्वेज में decision making(डिसीजन मेकिंग )के लिए निम्नांकित control statement(कंट्रोल स्टेटमेंट) का प्रयोग किया जाता है। 

    • Branching statements
      • if
      • switch
      • conditional operators
    • looping statements
      • while
      • do..while
      • for(....) operators
    • looping statements
      • break
      • continue



    इस अध्याय में हम ब्रांचिंग स्टेटमेंट(branching statement) के if statementको समझेंगे।

    If statement in C Language

    इस statement के माध्यम से हम यह निर्धारित कर सकते हैं कि प्रोग्राम के किस भाग को रन करवाया जाए। यह कार्य किसी कंडीशन के आधार पर किया जाता है।

     उदाहरण के लिए यदि हमें यह निश्चित करना है कि कोई विद्यार्थी pass है या fail तो इसके लिए हमें यह condition देनी होगी कि विद्यार्थी के कुल अंक 36% या अधिक है अथवा 36% से कम है।


    If statement को program की आवश्यकता के के आधार पर निम्न प्रकार से कार्यों में किया जा सकता है

    (i) normal if statement 
    (ii) if.....else statement 
    (iii) nested if....else statement 
    (iv) else if ladder

    (i) Normal if statement

    यह statement दी गई condition  सही होने की स्थिति में  कुछ कमांड(statement) को रन कराने के लिए प्रयोग किया जाता है। 
    सामान्य स्टेटमेंट का प्रारूप निम्न प्रकार होता है:- 

    if(test condition)

            Statement 1; 
            Statement 2;
            
            
            
            
            Statement n;
    }

    Example:-


       #include <stdio.h>
       #include <conio.h>
       void main()
       {
       int a;
          printf("Enter a Number : ");
          scanf("%d",&a);
          if(a==0){
             printf("you Entered ZERO");
          }
          getch();
       }

    Output:-

    Enter a Number : 0
    you Entered ZERO

    Explain Example:-

    प्रोग्राम में एक संख्या यूजर इनपुट लेने के बाद जब if(a==0) statement Run हुआ तो उस समय a का मान 0 ही था। क्योंकि 0==0 का परिणाम true होगा अतः प्रोग्राम if block में प्रवेश करते हुए You entered ZERO संदेश प्रिंट करा देगा। 
    वही इनपुट देते समय यदि वैल्यू क्या 4 होती तो कंडीशन 4 == 0 का परिणाम false होता और प्रोग्राम if ब्लॉक में प्रवेश नहीं करता। इससे कोई भी संदेश स्क्रीन पर प्रिंट नहीं होता।


    ध्यान रखें कि यदि इसके बाद ब्लॉक में एक ही स्टेटमेंट हो तो {} का प्रयोग करना आवश्यक नहीं होता है। इसे समझने के लिए उपरोक्त उदाहरण को नीचे फिर से प्रिंट किया गया है। 

    Example:-


       #include <stdio.h>
       #include <conio.h>
      void main()
       {
       int a;
          printf("Enter a Number : ");
          scanf("%d",&a);
          if(a==0)
             printf("you Entered ZERO");
          getch();
       }

    Output:-

    Enter a Number : 0
    you Entered ZERO


    (ii) if....else statement

    यह statement दी गई कंडीशन के true या false होने की स्थिति में अलग-अलग statement   को run कराने के लिए प्रयोग किया जाता है।

     
    if..... else statement का निम्न प्रारूप होता है

    if(test condition){
            Statement 1;
            Statement 2;
            .
            .
            .
            .
            Statement n;
    } else{
            Statement 1;
            Statement 2;
            .
            .
            .
            .
            Statement n;
    }

    Example:-

    नीचे दिए गए उदाहरण में एक संख्या यूजर से भेजी गई है तथा यदि व संख्या शून्य है तो (You Entered Zero) अन्यथा (You Entered NONZERO) संदेश प्रिंट कराया गया है। 


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
           int a;
           printf("Enter a Number : ");
           scanf("%d"      &a);
           if (a == 0)
           {
              printf("you Entered ZERO");
           }
           else {
               printf("you Entered NONEZERO");
           }
           getch();
        }

    Output:-

    Enter a Number : 12
    you Entered NONEZERO

    Explain Example:-

    प्रोग्राम में एक संख्या यूजर इनपुट लेने के बाद जब if(a==0) स्टेटमेंट रन हुआ तो उस समय a का मान 12 था। चूंकि 12==0 का परिणाम false होगा अतः प्रोग्राम if ब्लॉक में प्रवेश नहीं करेगा, else वाले ब्लॉक में प्रवेश करते हुए you Entered NONEZERO संदेश प्रिंट कर देगा।


    (iii) nested if....else statement:-

    यदि किसी कंडीशन के true या false होने की स्थिति में अन्य कंडीशन को  भी check  करना हो तो नेस्टेड  if...else का प्रयोग किया जाता  है।
    नेस्टेड if...else स्टेटमेंट का प्रारूप निम्न प्रकार होता है।

    if(test condition){
            if(test condition){
                    statement block;  
            }
            else{
                    statement  block;
            }
    }
    else{
            statement block;
    }

    Example:-

    User ऐसी तीन संख्या का इनपुट लेकर सबसे बड़ी संख्या को प्रिंट करवाने का प्रोग्राम।


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
           int a, b, c;
           printf("Enter 1st Number : ");
           scanf("%d"&a);
           printf("Enter 2nd Number : ");
           scanf("%d"&b);
           printf("Enter 3rd Number : ");
           scanf("%d"&c);
           if (a > b)
           {
              if (a > c)
              {
                 printf("Largest Number is : %d", a);
              }
              else
              {
                 printf("Largest Number is : %d", c);
              }
           }
           else
           {
              if (b > c)
              {
                 printf("Largest Number is : %d", b);
              }
              else
              {
                 printf("Largest Number is : %d", c);
              }
           }
           getch();
        }

    Output:-

    Enter 1st Number : 3
    Enter 2nd Number : 4
    Enter 3rd Number : 1
    Largest Number is : 4

    Explain Example:-

    ऊपर दिए गए प्रोग्राम में तीन संख्या है इनपुट में लेने के बाद जब if(a>b) स्टेटमेंट रन हुआ तो उस समय a का मान 3 तथा b का मान 4 था। चूंकि 3>4 का परिणाम false होगा अतः प्रोग्राम if ब्लॉक में जाने की बजाए else ब्लॉक में प्रवेश कर गया।
    else ब्लॉक में वापस (b>c) स्टेटमेंट अर्थात 4>1 की गणना हुई। इसका परिणाम चूंकि true रहा, अतः इस if ब्लॉक में लिखे हुए printf() फंक्शन के कारण संदेश   Largest Number is : 4   प्रिंट हो गया।


    (iv) else....if ladder:-

    नेस्टेड if else का प्रयोग निम्न प्रकार से भी किया जा सकता है जिसे else if ladder कहते हैं।
    इसका प्रयोग करने का फायदा यह है कि एक सीमा तक इसके प्रयोग से नेस्टिंग की जटिलता से बचा जा सकता है।

    if(condition 1){
            statement block;
    }
    else if(condition 2){
            statement block;
    }
    else if(condition 3){
            statement block;
    }
    else {
            statement block;
    }

    Example:-

    यूजर से उसके द्वारा प्राप्त प्रतिशत अंको का इनपुट लेकर प्रतिशत अंकों के आधार पर श्रेणी प्रिंट करवाने का प्रोग्राम:-


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
           int per;
           printf("Enter your percentage : ");
           scanf("%d"&per);
           if (per>=60)
           {
              printf("1st Div.");
           }
           else if (per>=45)
           {
              printf("2nd Div.");
           }
           else if (per>=36)
           {
              printf("3rd Div.");
           }
           else{
              printf("Fail");
           } 
           getch();
        }

    Output:-

    Enter your percentage : 49
    2nd Div.

    Explain Example:-

    प्रोग्राम में यूजर से प्रतिशत इनपुट लेने के बाद जब if(per>=60) स्टेटमेंट रन हुआ तो उस समय per का मान 49 था।
    चूंकि 49>=60 का परिणाम false होगा अच्छा प्रोग्राम if ब्लॉक में प्रवेश करने की बजाय else ब्लॉक में प्रवेश कर गया इस ब्लॉक में फिर से if(per>=45) का प्रयोग हुआ।
    यहाँ 49>=45 पानी का परिणाम चूंकि true रहा और था प्रोग्राम के इस ब्लॉक में प्रवेश करते हुए 2nd Div. संदेश प्रिंट कर दिया।


    (v) switch statement:-

    यदि 2 से अधिक विकल्पों में से किसी एक विकल्प को चुनना हो तो उसके लिए switch statement का भी प्रयोग किया जा सकता है। अन्य शब्दों में यह कहा जा सकता है कि दी गई condition या फिर Expression के आधार पर उपलब्ध विभिन्न ब्लॉकों में से किसी एक ब्लॉक को रंग कराने के लिए इसका प्रयोग किया जा सकता है। कुछ स्थितियों में नेस्टेड if की जगह इसका प्रयोग किया जा सकता है इसका प्रयोग इंटीरियर या कैरेक्टर डाटा पर भी किया जा सकता है।

    switch(expression)
    {
        case value-1:
            block-1;
            break;
        case value-2:
            block-2;
            break;
        case value-2
            block-3;
            break-3;
        .........
        .........
        .........
        default:
            default block;
            break;
    }

    प्रोग्राम रन होते समय दिए गए एक्सप्रेशन की value की विभिन्न  values(value-1, value-2,value-3...) से तुलना की जाएगी तथा जहां यह वैल्यू समान मिलेगी उसके आगे के statement रन हो जाएंगे। यदि एक्सप्रेशन की वैल्यू किसी भी वैल्यू से मिला नहीं करती है तो Default ब्लॉक वाले स्टेटमेंट रन हो जाएंगे। 

    ध्यान दें कि प्रत्येक विकल्प  ब्लॉक के बाद यहां break स्टेटमेंट दिया गया है। यदि यह break स्टेटमेंट नहीं दिया जाएगा तो प्रोग्राम का प्रवाह अगले ब्लॉक में प्रवेश कर जाएगा, जो कि गलत हो सकता है।  


    Example:-


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
           int a;
           printf("\nEnter a Number : ");
           scanf("%d",&a);
           switch (a)
           {
           case 1:
              printf("One");
              break;
           case 2:
              printf("Two");
              break;
           case 3:
              printf("Three");
              break;
           default:
              printf("Not Between 1 and 3 ");
              break;
           }
           getch();
        }

    Output:-

    Enter a Number : 2
    Two

    Explain Example:-

    प्रोग्राम में यूजर से एक संख्या इनपुट लेने के बाद जब switch(a) स्टेटमेंट रन हुआ तो उस समय a का मान 2 था। इसलिए प्रोग्राम का प्रवाह case 2 में प्रवेश कर गया और इसमें लिखें printf(..) स्टेटमेंट के कारण Two प्रिंट कर दिया। इसके बाद लिखे गए break को यदि हटा दिया जाए तो Two प्रिंट करने के बाद अगले case में भी प्रवेश कर जाएगा और Three भी प्रिंट कर देगा।


    उपरोक्त उदाहरण को यदि बिना break स्टेटमेंट के बनाया जाए तो ऐसी स्थिति में किसी case के रन होने के बाद उसके बाद के सभी स्वतः ही रन हो जाएंगे यह निम्नांकित उदाहरण में समझाया गया है। 


        #include <stdio.h>
        #include <conio.h>
        void main()
        {
           int a;
           printf("\nEnter a Number : ");
           scanf("%d",&a);
           switch (a)
           {
           case 1:
              printf("One");
           case 2:
              printf("Two");
           case 3:
              printf("Three");
           default:
              printf("Not Between 1 and 3 ");
           }
           getch();
        }

    Output:-

    Enter a Number : 2
    TwoThreeNot Between 1 and 3

    Post a Comment

    0 Comments