Theory
Rows और columns को दो loops चाहिए
Marks program अब 60 students में से loop करता है। नई ज़रूरत: हर student के 4 subjects हैं।
तो दोहराव खुद दोहराता है: हर student के लिए, हर subject के लिए, एक mark पढ़ो। एक loop के अंदर एक loop।
Nested loops उस सवाल को भी चलाते हैं जो हर VNSGU paper को पसंद लगता है: यह star pattern print कीजिए। इस page के अंत तक, patterns एक formula बन जाते हैं, पहेली नहीं।
Theory
घड़ी
एक घड़ी देखिए: hour हाथ को एक कदम चलने के लिए, minute हाथ 60 पूरे कदम पूरे करता है। Outer loop = hour हाथ, inner loop = minute हाथ। Inner loop अपनी पूरी ज़िंदगी, शुरू से अंत तक, outer के हर एक tick के अंदर जीता है। एक hour-tick, 60 minute-ticks; दो hour-ticks, 120। गिनतियाँ गुणा होती हैं।
Theory
Nested loops, औपचारिक रूप से
कोई भी loop किसी दूसरे के अंदर बैठ सकता है (for में for, for में while...)। नियम:
हर outer iteration के लिए, inner loop पूरा चलता है।
for (i = 1; i <= 3; i++) /* students */
for (j = 1; j <= 4; j++) /* subjects */
...read mark...
Body 3 × 4 = 12 बार चलती है: i=1 के साथ j=1,2,3,4; फिर i=2 के साथ j=1,2,3,4; फिर i=3 वैसे ही। सफ़ाई के दो नियम: अलग counters (i और j), और जानिए कौन सा loop कौन सा काम रखता है: outer = rows, inner = columns।
Practical
Exam का क्लासिक: एक star triangle
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 4; i++) { /* rows */
for (j = 1; j <= i; j++) { /* columns */
printf("*");
}
printf("\n"); /* end the row */
}
return 0;
}This example runs in Gri-Learn on the web, where you can edit it and see the output.
Think first
Pattern का अनुमान लगाइए
Code trace कीजिए: 1 से 4 तक हर i के लिए, inner loop stars print करता है जब तक j <= i, फिर एक newline। पहले कागज़ पर ठीक output बनाइए।
Show the answer
*
**
***
****
Row i को ठीक i stars मिलते हैं क्योंकि inner condition j <= i है: row 1 एक star देता है, row 4 चार। हर star-pattern सवाल यही एक कंकाल है एक अलग inner condition के साथ, j की सीमा decode कीजिए और आपने pattern decode कर लिया।
Quiz
nested loops for(i=1; i<=3; i++) { for(j=1; j<=4; j++) { body } } में, body कितनी बार execute होती है?
- 12 बार: 3 outer × 4 inner
- 7 बार: 3 + 4
- 4 बार: inner loop जीतता है
- 3 बार: outer loop जीतता है
Show the answer
12 बार: 3 outer × 4 inner
Inner loop 3 outer rounds में से हर एक के लिए अपने पूरे 4 rounds चलाता है: 3 × 4 = 12। जोड़ना (option B) आम चूक है, घड़ी याद रखिए: दो घंटे 120 minute-ticks हैं, 62 नहीं। गिनतियों का गुणा सबसे ज़्यादा test होने वाला nested-loop तथ्य है।
Quiz
star-triangle code में, printf("\n") inner loop के बाद पर outer loop के अंदर क्यों बैठता है?
- हर row के stars पहले खत्म होते हैं, फिर row एक newline से बंद होता है
- यह एक style choice है; कहीं भी एक जैसा चलता है
- newline को हर star पर एक बार चलना चाहिए
- C हर loop के अंत में \n ज़रूरी करता है
Show the answer
हर row के stars पहले खत्म होते हैं, फिर row एक newline से बंद होता है
Newline का काम "इस ROW को खत्म करो" है, इसलिए यह outer (row) loop का है, हर row पर एक बार चलता। इसे inner loop के अंदर ले जाइए और हर star अपनी अलग line पर आता है; दोनों के बाहर ले जाइए और सारे stars एक line पर भीड़ लगाते हैं। \n की जगह ही ठीक वहाँ है जहाँ pattern जवाब गलत होते हैं।
Watch out
Marks कहाँ कटते हैं
दोनों loops के लिए i दोबारा इस्तेमाल करना: inner loop outer counter बिगाड़ देता है और program अजीब तरह या हमेशा के लिए loop करता है; हमेशा i और j। काम उलटना: outer rows है, inner columns; उन्हें उलटिए और pattern transpose होकर निकलता है। \n की जगह (quiz देखिए)। Trace सवालों में, (i, j) जोड़ियाँ क्रम में लिखिए: (1,1) (1,2)... nesting को इससे तेज़ कुछ नहीं सुलझाता।
Theory
Nesting का फल आगे कहाँ मिलता है
Students × subjects एक grid है, और Unit 3 के two-dimensional arrays ठीक ऐसे ही grids store करते हैं, ठीक इन्हीं दो counters से चले (rows के लिए i, columns के लिए j)। BCA102 में किए matrix operations भी C में nested loops बन जाते हैं। अभी घड़ी में महारत पाइए; grid वाले lessons पहले-से-सीखे लगेंगे। पर पहले: loop के आपातकालीन exits, break और continue।
Summary
Key takeaways
- Nested loop: हर outer iteration के लिए inner loop पूरा चलता है।
- कुल body runs = outer count × inner count (3×4 = 12), गुणा कीजिए, कभी जोड़िए मत।
- Outer loop rows रखता है; inner loop columns।
- अलग counters इस्तेमाल कीजिए (i, j); एक को दोबारा इस्तेमाल करना क्लासिक bug है।
- Star patterns: row i तब print करता है जब j <= i; \n हर row को inner loop के बाद बंद करता है।
- याद रखने का hook: घड़ी, एक hour-tick, 60 minute-ticks।