चर, स्थिरांक और मान रखना (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
अनिश्चित (शर्त वाला) लूप
लूप तब तक चलता है जब तक शर्त बदल न जाए, इसलिए चक्करों की गिनती पहले से पता नहीं होती।
WHILE … ENDWHILEशर्त को शुरू में जाँचता है। शुरू में ही False हो तो एक बार भी नहीं चलता।REPEAT … UNTILशर्त को अंत में जाँचता है, इसलिए कम से कम एक बार ज़रूर चलता है।
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 एडिटर में जाँचो।
मुख्य सूत्र और परिभाषाएँ
- Assignment: नाम ← मान (Python: नाम = मान)
- चयन: IF शर्त THEN … ELSE … ENDIF
- निश्चित लूप: FOR i ← 1 TO n … ENDFOR (n बार)
- अनिश्चित लूप: WHILE शर्त … ENDWHILE (0 या ज़्यादा बार)
- REPEAT … UNTIL शर्त (1 या ज़्यादा बार)
- नेस्टेड लूप: कुल चक्कर = बाहरी गिनती × अंदर की गिनती
हल किए गए उदाहरण
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 सबसे सही है।
आम गलतियाँ
- जब दोहराने की गिनती पता न हो (जैसे 'stop' लिखने तक), तब FOR लगाना। वहाँ WHILE या REPEAT…UNTIL चाहिए।
- WHILE लूप के अंदर लूप वाला चर न बदलना, जिससे अनंत लूप बन जाता है।
- यह सोचना कि IF…ELSE की दोनों शाखाएँ चलती हैं। हर बार केवल एक चलती है।
- एक की गिनती में गलती: FOR i ← 1 TO 10 दस बार चलता है, पर FOR i ← 0 TO 10 ग्यारह बार।