प्रोग्राम क्या है?
एल्गोरिद्म किसी समस्या को हल करने की क्रमवार योजना है। प्रोग्राम वही योजना है जो कंप्यूटर की समझ वाली भाषा (जैसे Python, Scratch, Java या C) में लिखी गई हो। कंप्यूटर ठीक वही करता है जो प्रोग्राम कहता है, उससे ज़्यादा कुछ नहीं।
ज़्यादातर प्रोग्राम इनपुट → प्रक्रिया → आउटपुट चलते हैं: डेटा लो, उस पर काम करो, परिणाम दो। कोड लिखने से पहले स्यूडोकोड (सरल भाषा में कदम) या फ़्लोचार्ट से योजना बनाएँ।
अनुक्रम (sequence) का अर्थ है निर्देश ऊपर से नीचे क्रम में चलते हैं। क्रम बदलने से परिणाम बदल सकता है।
चर और डेटा प्रकार
चर (variable) किसी मान को रखने की नाम वाली जगह है। score = 0 एक असाइनमेंट है: यह score नाम के डिब्बे में 0 रखता है। score = score + 5 पुराना मान पढ़कर 5 जोड़ता है और नया मान रख देता है।
आम डेटा प्रकार:
- पूर्णांक (integer): पूरी संख्याएँ, जैसे 42
- दशमलव (float): जैसे 3.5
- स्ट्रिंग: पाठ, जैसे "Asha"
- बूलियन: True या False
स्थिरांक (constant) वह मान है जो प्रोग्राम चलते समय नहीं बदलता, जैसे हफ़्ते के दिन। अच्छे नाम (total_marks, न कि x) कोड को पढ़ना आसान बनाते हैं।
चयन और पुनरावृत्ति
चयन (if / else)
प्रोग्राम एक शर्त जाँचता है जो True या False होती है, और एक शाखा चलाता है।
if marks >= 33:
print("Pass")
else:
print("Try again")शर्तों में तुलना संकारक (==, !=, <, >, <=, >=) और तार्किक संकारक (and, or, not) आते हैं।
पुनरावृत्ति (लूप)
- गिनती वाला (for): तय संख्या में दोहराता है।
for i in range(1, 5):i = 1, 2, 3, 4 के साथ चलता है। - शर्त वाला (while): जब तक शर्त True है, दोहराता है। अंदर कुछ बदलना ज़रूरी है, नहीं तो लूप कभी नहीं रुकेगा।
फ़ंक्शन और मॉड्यूलर डिज़ाइन
फ़ंक्शन (उप-प्रोग्राम या प्रक्रिया भी कहते हैं) कोड का नाम वाला खंड है। इसे एक बार परिभाषित करते हैं और जब चाहें बुलाते हैं।
def area(length, width):
return length * width
print(area(4, 3)) # 12- पैरामीटर (length, width) फ़ंक्शन के इनपुट हैं; भेजे गए मान (4, 3) आर्ग्युमेंट हैं।
- return परिणाम वापस भेजता है।
- फ़ंक्शन के अंदर बना चर स्थानीय (local) होता है; बाहर नहीं दिखता।
मॉड्यूलर डिज़ाइन यानी बड़ी समस्या को छोटे भागों में तोड़ना (अपघटन), हर भाग को अलग फ़ंक्शन की तरह लिखना और जाँचना। लाभ: कम दोहराव, आसान जाँच, टीम में काम, और एक सुधार से हर जगह सुधार।
टेस्टिंग, डीबगिंग और कोड रखरखाव
तीन तरह की त्रुटियाँ:
- सिंटैक्स त्रुटि: भाषा के नियम टूटे (कोलन या कोष्ठक छूटा)। प्रोग्राम चलेगा ही नहीं।
- रनटाइम त्रुटि: चलते समय होती है, जैसे शून्य से भाग।
- तार्किक त्रुटि: प्रोग्राम चलता है पर उत्तर ग़लत देता है, जैसे लूप का एक बार कम चलना (off-by-one)।
टेस्टिंग में सामान्य डेटा, सीमा वाला डेटा (जैसे ठीक 33 अंक) और अमान्य डेटा (जैसे -5 अंक) इस्तेमाल करते हैं। ट्रेस टेबल हर पंक्ति के बाद हर चर का मान लिखती है, ताकि ग़लती की जगह मिले।
सँभालने लायक कोड में सार्थक नाम, "क्यों" समझाने वाली टिप्पणियाँ, एक जैसा इंडेंटेशन, छोटे फ़ंक्शन और कोई कॉपी-पेस्ट खंड नहीं होते। प्रोग्रामर बदलावों का इतिहास रखने के लिए वर्ज़न कंट्रोल भी इस्तेमाल करते हैं।
करके देखें: बिना कंप्यूटर वाला रोबोट
एक दोस्त को रोबोट बनाइए। काग़ज़ पर केवल इन निर्देशों से लिखें: कदम, बाएँ मुड़ो, दाएँ मुड़ो, n बार दोहराओ और if दीवार: मुड़ो। उसे दरवाज़े से कुर्सी तक पहुँचाइए। क्या रोबोट ने ठीक वही किया जो आपने लिखा? बग ठीक करें और फिर आज़माएँ। फिर 3D फ़्री-प्ले में कुछ दबाने से पहले अनुमान लगाएँ कि रोबोट कहाँ रुकेगा।
मुख्य सूत्र और परिभाषाएँ
- तीन आधार: अनुक्रम, चयन (if/else), पुनरावृत्ति (for/while)
- असाइनमेंट: चर = व्यंजक (दाईं ओर पहले हल होता है)
- for i in range(a, b) कुल b − a बार चलता है (a, a+1, …, b−1)
- फ़ंक्शन: def नाम(पैरामीटर): … return परिणाम
हल किए गए उदाहरण
1. x = 4, फिर x = x * 2, फिर x = x - 3। x क्या है?
पंक्ति दर पंक्ति: x = 4 → x = 8 → x = 5। उत्तर x = 5।
2. यह क्या छापेगा? for i in range(1, 4): print(i * 10)
i = 1, 2, 3, इसलिए 10, 20, 30 छपेगा।
3. age = 15। क्या छपेगा? if age >= 18: print("Adult") else: print("Minor")
15 >= 18 False है, इसलिए else शाखा: Minor।
4. दो संख्याओं में बड़ी लौटाने वाला फ़ंक्शन लिखिए।
def bigger(a, b): if a > b: return a else: return b
5. ट्रेस करें: total = 0; for n in range(1, 4): total = total + n। अंत में total?
n = 1 → 1; n = 2 → 3; n = 3 → 6। अंतिम total = 6।
6. प्रोग्राम को 1 से 5 छापना है पर for i in range(1, 5) लिखा है। कौन सी त्रुटि है और सुधार?
तार्किक (off-by-one) त्रुटि; केवल 1 से 4 छपता है। सुधार: range(1, 6)।
आम गलतियाँ
- = को गणित वाला "बराबर" समझना। कोड में = का अर्थ है "दाईं ओर का मान बाईं ओर रखो"। तुलना के लिए == लिखें।
- भूल जाना कि range(1, 5) 5 से पहले रुक जाता है।
- ऐसा while लूप लिखना जिसकी शर्त कभी False न हो, और वह अनंत चले।
- एक ही कोड खंड को बार-बार कॉपी करना, बजाय एक फ़ंक्शन बनाने के।