Header Ads

ad728
  • New Updates

    Nesting of for Loop


    Nesting of for Loop

    For Loop की जब Nesting की जाती है तब हमेशा Outer Loop , Inner Loop को Control करता है | Outer Loop Row के लिए व Inner Loop Column के लिए लिखा जाता है | इसका Syntax निम्नानुसार होता है |

    जब Program Control , Outer for Loop पर आता है तब Check करता है कि Outer For Loop की Condition सत्य है या नहीं | यदि Outer For Loop की Condition सत्य होती है , तो Program Control Inner Loop में प्रवेश करता है | यहां Program Control को एक और for Loop मिलता है और प्रोग्राम Control इस for की Condition को Check करता है |

    यदि Inner for Loop की Condition सत्य होती है तो Inner for Loop Iterate होता रहता है जब तक कि Inner Loop की Condition सत्य होती है | जैसे ही inner Loop की Condition असत्य होती है , प्रोग्राम Control वापस Outer Loop को check करता है |

    यदि वापस Outer Loop की Condition सत्य हो जाती है तो Program Control पुनः Inner Loop में प्रवेश करता है और पुनः Inner Loop का तब तक Iteration होता है जब तक कि Inner Loop की Condition असत्य नहीं हो जाती |

    Program Control इन्हीं दोनों Loops के बीच तब तक Iterate होता रहता है जब तक कि दोनों Loops की Condition असत्य ना हो जाए | यदि Outer Loop की Condition पहली बार में ही असत्य हो जाए तो Inner Loop का Execution ही नहीं होता है |

    Inner Loop का Execution तभी होता है जब Outer Loop की Condition सत्य हो | Loop की Nesting को समझने के लिए आगे एक प्रोग्राम बनाया गया है | इससे for Loop की nesting व उसके काम करने के तरीके को अच्छी तरह से समझाया गया है |

    Example

    एक ऐसा प्रोग्राम बनाओ जो निम्न Format को print करें |

     

    इस प्रोग्राम में दो for Loop चलाए गए है और Condition इस प्रकार की रखी गई है कि Inner Loop उतनी ही बार चले जितना बहार का Loop चलाने वाले Variable का मान हो | प्रोग्राम निम्नानुसार है |

     

      
    /*Example of Nested For Loop */
    
    #include<stdio.h>
    main()
    {
         int l,k;
    	
         for(k=1; k<=5; k++)
             {
                  for(l=1; l<=k; l++)
                     {
                                printf("*");
                        }
                            printf("\n");
          }
       getch();
    }
    
    

    जैसे ही प्रोग्राम का Execution होता है तो Program Control को for Loop मिलता है | k का प्रारम्भिक मान 1 दिया गया है , इसलिए Condition सत्य हो जाती है और Program Control , Outer Loop के Statement Block में जात है | यहां Program Control को एक और for Loop मिलता है जिसके Variable का प्रारम्भिक मान 1 है और Condition के रूप में ये शर्त दी गई है कि Inner Loop तब तक Execute होना चाहिये , जब तक कि Inner Loop के Variable का मान , बाहरी Loop के Variable के मान से कम या बराबर हो |

    चुंकि बाहरी Loop के Variable  k का मान 1 हो | यहां k का मान 1 Variable j का मान भी एक ही है | इसलिए Condition तो सत्य हो गई लेकिन दोनों का मान समान होने से Inner Loop एक ही बार चलता है |

    Inner Loop की Condition के सत्य होते ही Program Control Inner Loop के Statement Block में जाता है | यहां एक printf() Function द्वारा * को Print किया जाता है | अब Inner Loop का मान पुनः Check किया जाता है , तो Condition असत्य हो जाती है , क्योंकि Inner Loop में l का मान Incremented होकर 2 हो गया है , जबकि k का मान 1 ही है व Condition तभी सत्य होती है , जब l का मान k के मान से कम या बराबर हो |

    अब दोबारा Outer For Loop Check होती है | पिछले Increment के कारण यहां भी k का मान अब 2 हो चूका होता है | 2 का मान 5 से कम है इसलिए Outer Loop की Condition पुनः सत्य हो जाती है व Program Control पुनः Inner Loop में प्रवेश करता है | Inner Loop में पुनः वही सारी प्रक्रिया होती है जो पिछले Iteration में हुई थी , यानी पुनः b का मान 0 Initialize होता है | पुनः Condition सत्य हो जाती है और साथ ही पुनः b का मान बढ़ कर 2 हो जाता है |

    इस बार Condition 1<= k यानि 1 <= 2 हो जाती है , इसलिए Inner Loop अब दो बार चलता है | पहली बार में l का मान 1 होता है इसलिए Condition सत्य होता है और Program Control , Statement Block में प्रवेश करता है | यहां पर एक * print होता है | पुनः Inner Condition check होती है | इस Iteration में l का मान Increment होकर 2 हो जाता है | पुनः Condition check होने पर l<=2 होने से Condition सत्य हो जाती है |

    Condition सत्य होने के साथ ही l का मान एक और बढ़ जाता है और बढ़ कर 3 हो जाता है | Condition सत्य होने से पुनः एक * Print होता है | यह * पिछले * के पास में ही Print होता है , क्योंकि हमने Printf() Function में New Line के लिए कोई Character Constant Use नहीं किया है | इस प्रकार दूसरी पंक्ति में दो * Print हो जाते हैं |

    अब वापस Inner Loop की Condition check होती है | चुंकि अब l का मान बढ़ कर 3 हो चूका है इसलिए 1 <= K Condition असत्य हो जाती है क्योंकि l का का मान अब 3 है जबकि K का मान 2 है इस कारण से यदि गणितीय रूप में इस Expression को देखें तो 3 <= 2 Expression बनती है , जो कि सही नहीं है | इसलिए Condition असत्य है |

    Condition असत्य होने से Program Control Inner Loop से बाहर निकल कर वापस Outer Loop में प्रवेश करता है | पिछले Iteration के बाद K के मान का अब 3 है |

    Outer Loop की Condition के अनुसार Condition तभी सत्य होगी जब k का मान 5 से कम या बराबर हो | यहां k का मान 3 है इसलिए Condition पुनः सत्य होती है और Program Control पुनः Inner Loop में प्रवेश करता है |  इस प्रकार ये क्रम तब तक चलता रहता है जब तक कि k का मान 6 नहीं हो जाता है और k का मान पांचवे Iteration के बाद 6 हो जाता है |

    जैसे ही k का मान 6 होता है Outer Loop की Condition असत्य हो जाती है | Outer Loop की Condition असत्य होने से Program Control , Inner Loop में प्रवेश नहीं करता बल्कि सीधे ही getch() Function पर जा कर उपरोक्त Format Print कर देता है |

    No comments

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728