Nested while, do-while and for loops

Nested loop एक loop के अंदर एक loop है: outer के हर एक कदम पर inner अपने सारे rounds पूरे करता है, ठीक घड़ी की minute हाथ की तरह, और यह tables, grids और exam के प्यारे star patterns को चलाता है।

11 min read · 10 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


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 होती है?

  1. 12 बार: 3 outer × 4 inner
  2. 7 बार: 3 + 4
  3. 4 बार: inner loop जीतता है
  4. 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 के अंदर क्यों बैठता है?

  1. हर row के stars पहले खत्म होते हैं, फिर row एक newline से बंद होता है
  2. यह एक style choice है; कहीं भी एक जैसा चलता है
  3. newline को हर star पर एक बार चलना चाहिए
  4. 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।

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Decision Making and Iterative statements

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Nested while, do-while and for loops · Computer Programming and Programming Methodology (CPPM) · Gri-Learn