📘 CodingMarble Learn

कंट्रोल फ्लो: क्रम, चयन और पुनरावृत्ति

प्रोग्राम निर्देशों की एक सूची है। ये निर्देश किस क्रम में चलेंगे, इसे कंट्रोल फ्लो कहते हैं। इसके तीन ही हिस्से हैं: क्रम (sequence, एक के बाद एक), चयन (selection, IF से एक रास्ता चुनना) और पुनरावृत्ति (iteration, लूप से दोहराना)। लूप दो तरह के होते हैं: निश्चित (FOR, गिनती पहले से पता) और अनिश्चित (WHILE / REPEAT UNTIL, शर्त बदलने पर रुकता है)। एक ढाँचे के अंदर दूसरा रख सकते हैं (नेस्टिंग)। मान चर (variable, बदल सकता है) और स्थिरांक (constant, नहीं बदलता) में रखे जाते हैं, और इनके नाम साफ़ मतलब वाले होने चाहिए।

🎬 कदम-दर-कदम कहानी

  1. क्रम (sequence)। लाल गोली कंप्यूटर है। यह हर लाइन बारी-बारी चलाती है: x ← 4, फिर y ← x × 2, फिर y दिखाती है।
  2. चर और स्थिरांक। r एक चर है, इसका मान बदल सकता है। PI स्थिरांक है (बैंगनी): एक बार तय, फिर कभी नहीं बदलता। तीर ← का मतलब है 'इसमें रखो'।
  3. चयन (selection)। पीला हीरा हाँ/नहीं वाला सवाल पूछता है: क्या mark ≥ 50 है? केवल एक रास्ता चुना जाता है। अंक वाला स्लाइडर बदलो और फिर चलाओ।
  4. निश्चित लूप। FOR i ← 1 TO 5 तय बार दोहराता है। चक्कर गिनो: 1, 2, 3, 4, 5, फिर रुक जाता है।
  5. अनिश्चित लूप। WHILE total < 20 हर बार 6 जोड़ता है। गिनती पहले से पता नहीं थी; 4 चक्कर के बाद शर्त False हुई और यह रुक गया।
  6. नेस्टिंग और खुद खेलो। FOR लूप के अंदर IF है, इसलिए हर चक्कर में पूछा जाता है 'सम या विषम?'। n बदलो और 'फिर चलाओ' दबाओ।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

लाइनों का क्रम क्यों ज़रूरी है?

कंप्यूटर को कोई मान तभी पता चलता है जब उसे रखने वाली लाइन चल चुकी हो। चरण 1 में y तभी निकलता है जब x ← 4 चल चुका हो।

तीर ← का क्या मतलब है? क्या यह 'बराबर' है?

इसका मतलब है 'दाईं ओर का मान बाईं ओर वाले नाम में रखो'। यह आदेश है, गणित का समीकरण नहीं, इसलिए x ← x + 1 सही है।

हर जगह 3.14 लिखने के बजाय स्थिरांक क्यों?

बदलना हो तो एक ही जगह बदलो, गलती से बदल नहीं सकता, और PI नाम पढ़ने वाले को बताता है कि संख्या का मतलब क्या है।

क्या IF और ELSE दोनों हिस्से चल सकते हैं?

नहीं। शर्त या तो True है या False, इसलिए गोली एक ही रास्ता लेती है। चरण 3 में 50 से ऊपर और नीचे के अंक आज़माओ।

FOR कब लगाएँ और WHILE कब?

अगर शुरू से पहले कह सकते हो 'ठीक n बार दोहराओ', तो FOR। अगर कहते हो 'जब तक कुछ न हो जाए, दोहराओ', तो WHILE या REPEAT…UNTIL। चरण 4 और 5 की तुलना करो।

WHILE लूप 20 पर नहीं, 24 पर क्यों रुका?

जाँच हर चक्कर से पहले होती है। 18 पर 'total < 20?' का उत्तर हाँ था, तो 6 और जुड़ा और 24 हुआ। फिर जाँच ने नहीं कहा।

लूप के अंदर IF कैसे काम करता है?

हर चक्कर में लूप IF तक पहुँचता है और i के नए मान से सवाल फिर पूछता है। यही नेस्टिंग है। चरण 6 देखो।

चर, स्थिरांक और मान रखना (assignment)

चर (variable) मेमोरी में एक नाम वाली जगह है जिसमें कोई मान रखा जाता है। प्रोग्राम चलते समय यह मान बदल सकता है। स्थिरांक (constant) का भी नाम और मान होता है, पर मान पूरे प्रोग्राम में एक ही रहता है, जैसे CONST GST ← 0.18।

Assignment का मतलब है चर में मान रखना। स्यूडोकोड में score ← 10 लिखते हैं (Python में score = 10)। पहले दाईं ओर का हिसाब होता है, फिर उसे बाईं ओर रखा जाता है, इसलिए score ← score + 1 एक जोड़ देता है।

मतलब वाले नाम (meaningful identifiers)

Identifier वह नाम है जो हम चर, स्थिरांक या सबरूटीन को देते हैं। अच्छा नाम बताता है कि अंदर क्या है: totalPrice, tp या x से बेहतर है। साफ़ नाम से कोड पढ़ना, सुधारना और दूसरों से साझा करना आसान होता है। नाम में स्पेस नहीं होता और आमतौर पर यह अंक से शुरू नहीं होता।

स्थिरांक क्यों? अगर टैक्स की दर बदले तो केवल एक लाइन बदलनी पड़ती है, और गलती से बीच में बदल भी नहीं सकते।

क्रम (sequence): एक के बाद एक

क्रम का मतलब है निर्देश उसी क्रम में चलते हैं जिसमें लिखे गए हैं, ऊपर से नीचे। क्रम बदलने से उत्तर बदल सकता है।

x ← 4
y ← x × 2
OUTPUT y      → 8

अगर पहली दो लाइनें उलट दें, तो x का मान आने से पहले ही y निकालना पड़ेगा, और प्रोग्राम गलत चलेगा।

चयन (selection): IF, ELSE और CASE

चयन से प्रोग्राम फ़ैसला करता है। शर्त (condition) ऐसा सवाल है जिसका उत्तर True या False हो, जैसे mark ≥ 50।

IF mark ≥ 50 THEN
   OUTPUT 'पास'
ELSE
   OUTPUT 'फिर कोशिश'
ENDIF

केवल एक शाखा चलती है। दो से ज़्यादा विकल्प हों तो ELSE IF (Python में elif) या CASE/match का उपयोग करते हैं। शर्तों में तुलना चिह्न (=, ≠, <, >, ≤, ≥) और AND, OR, NOT लगते हैं।

पुनरावृत्ति: निश्चित और अनिश्चित लूप

पुनरावृत्ति (iteration) का मतलब है दोहराना। इससे एक ही लाइन बार-बार लिखनी नहीं पड़ती।

निश्चित (गिनती वाला) लूप

लूप शुरू होने से पहले ही पता होता है कि कितनी बार चलेगा। FOR का उपयोग होता है।

FOR i ← 1 TO 5
   OUTPUT i
ENDFOR        → 1 2 3 4 5

अनिश्चित (शर्त वाला) लूप

लूप तब तक चलता है जब तक शर्त बदल न जाए, इसलिए चक्करों की गिनती पहले से पता नहीं होती।

total ← 0
WHILE total < 20
   total ← total + 6
ENDWHILE
OUTPUT total  → 24

उपयोग: सही पासवर्ड आने तक पूछते रहना, 'stop' लिखने तक इनपुट लेना। ख़तरा: शर्त कभी False न हो तो अनंत लूप (infinite loop) बन जाता है।

नेस्टिंग (nesting)

नेस्टिंग का मतलब है एक ढाँचे के अंदर दूसरा रखना: लूप के अंदर IF, लूप के अंदर लूप, या IF के अंदर IF। इंडेंटेशन (खिसकाकर लिखना) दिखाता है कि क्या किसके अंदर है।

FOR i ← 1 TO 4
   IF i MOD 2 = 0 THEN
      OUTPUT i, ' सम'
   ELSE
      OUTPUT i, ' विषम'
   ENDIF
ENDFOR

लूप के अंदर लूप से काम गुणा हो जाता है: बाहरी लूप 3 बार और अंदर वाला 4 बार हो तो अंदर का हिस्सा 3 × 4 = 12 बार चलता है। पहाड़े की तालिका या 2D ऐरे के हर खाने तक पहुँचने में यही होता है।

करके देखो: घर पर ट्रेस टेबल

एक कागज़ पर हर चर का एक कॉलम बनाओ। इस पेज का WHILE वाला उदाहरण लाइन-दर-लाइन चलाओ और हर नया मान नई पंक्ति में लिखो। फिर अपनी आख़िरी पंक्ति को 3D के चरण 5 से मिलाओ। अब नियम बदलकर total ← total + 7 करो: पहले अनुमान लगाओ कितने चक्कर लगेंगे, फिर किसी मुफ़्त ऑनलाइन Python एडिटर में जाँचो।

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. आउटपुट क्या होगा? a ← 3; b ← a + 4; a ← b × 2; OUTPUT a, b

लाइन-दर-लाइन: a = 3। b = 3 + 4 = 7। a = 7 × 2 = 14। आउटपुट: 14 7।

2. ऐसा स्यूडोकोड लिखो जो उम्र 18 या ज़्यादा हो तो 'वयस्क', वरना 'बच्चा' दिखाए।

INPUT age; IF age ≥ 18 THEN OUTPUT 'वयस्क' ELSE OUTPUT 'बच्चा' ENDIF। केवल एक संदेश दिखेगा, क्योंकि चयन एक ही शाखा लेता है।

3. FOR k ← 2 TO 10 में अंदर का हिस्सा कितनी बार चलेगा?

2 से 10 तक (दोनों शामिल): 10 − 2 + 1 = 9 बार।

4. ट्रेस करो: n ← 1; WHILE n < 50: n ← n × 3। अंत में n क्या है और कितने चक्कर?

1 → 3 (चक्कर 1) → 9 (चक्कर 2) → 27 (चक्कर 3) → 81 (चक्कर 4)। 81 < 50 False है, तो रुक गया। n = 81, 4 चक्कर।

5. नेस्टेड: FOR r ← 1 TO 3, अंदर FOR c ← 1 TO 4, OUTPUT '*'। कितने तारे?

बाहरी 3 चक्करों में से हर एक में अंदर का लूप 4 बार: 3 × 4 = 12 तारे।

6. ऐसा लूप लिखो जो PIN तब तक पूछे जब तक वह 4321 न हो। कौन-सा लूप और क्यों?

REPEAT INPUT pin UNTIL pin = 4321। यह अनिश्चित है (पता नहीं कितनी कोशिशें) और कम से कम एक बार पूछना ही है, इसलिए REPEAT…UNTIL सबसे सही है।

आम गलतियाँ

अभ्यास क्विज़

1. कौन-सा ढाँचा दो रास्तों में से एक चुनता है?
2. जिस लूप की गिनती पहले से पता हो, वह है:
3. जो मान प्रोग्राम चलते समय नहीं बदल सकता:
4. FOR i ← 1 TO 7 कितनी बार चलेगा?
5. कौन-सा लूप कम से कम एक बार ज़रूर चलता है?

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

प्रोग्रामिंग के तीन मूल ढाँचे कौन-से हैं?

क्रम (sequence), चयन (selection) और पुनरावृत्ति (iteration)। कितना भी बड़ा प्रोग्राम हो, इन्हीं तीन से बनता है।

FOR लूप और WHILE लूप में क्या अंतर है?

FOR लूप पहले से पता गिनती जितना चलता है (निश्चित)। WHILE लूप तब तक चलता है जब तक शर्त True है, इसलिए गिनती पता नहीं होती (अनिश्चित)।

अनंत लूप (infinite loop) क्या है?

ऐसा लूप जिसकी रुकने वाली शर्त कभी पूरी नहीं होती, इसलिए वह हमेशा चलता रहता है। अक्सर लूप वाला चर न बदलने से होता है।

यह कहाँ पढ़ाया जाता है

इंग्लैंडYear 103.2 Programming

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ