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