डेटा स्ट्रक्चर: ऐरे, स्टैक, क्यू
डेटा स्ट्रक्चर (आँकड़ा संरचना) बहुत से मानों को साथ रखने का सोचा-समझा तरीका है, ताकि प्रोग्राम उन्हें आसानी से इस्तेमाल करे।
ऐरे (array) एक ही तरह के डिब्बों की कतार है। हर डिब्बे का इंडेक्स होता है और गिनती 0 से शुरू होती है। इसलिए 6 डिब्बों वाले ऐरे के इंडेक्स 0 से 5 हैं। किसी भी डिब्बे तक सीधे पहुँचा जा सकता है: marks[3]।
स्टैक (stack) LIFO है: Last In, First Out यानी आख़िर में आया, पहले गया। Push ऊपर रखता है, Pop ऊपर वाला निकालता है। Undo बटन और ब्राउज़र का Back बटन स्टैक इस्तेमाल करते हैं।
क्यू (queue) FIFO है: First In, First Out यानी पहले आया, पहले गया। Enqueue पीछे जोड़ता है, Dequeue आगे से निकालता है। प्रिंटर की प्रतीक्षा सूची क्यू है।
रिकॉर्ड किसी एक चीज़ के अलग-अलग तथ्य साथ रखता है, जैसे विद्यार्थी: रोल नंबर, नाम, अंक।
प्रोग्राम का मानकीकरण
मानकीकरण का मतलब है कि पूरी टीम एक जैसे नियम माने, ताकि कोई भी प्रोग्राम का कोई भी हिस्सा पढ़ और सुधार सके।
- नाम के नियम:
totalMarksजैसे साफ़ नाम,x1जैसे नहीं। - लेआउट के नियम: एक जैसी इंडेंटेशन, एक पंक्ति में एक कथन।
- टिप्पणियाँ (comments): छोटे नोट जो बताएँ कि क्यों, सिर्फ़ क्या नहीं।
- दोबारा इस्तेमाल: साझा हिस्से (जैसे तारीख़ जाँच) एक लाइब्रेरी में रखकर हर जगह लगाओ।
मानक प्रोग्राम पढ़ने, जाँचने और बदलने में आसान होते हैं और नए साथी जल्दी सीख लेते हैं।
फ़ाइल प्रोसेसिंग
फ़ाइल डेटा को डिस्क पर रखती है, इसलिए प्रोग्राम बंद होने पर भी वह बचा रहता है। फ़ाइल रिकॉर्डों से बनती है और हर रिकॉर्ड में फ़ील्ड होते हैं। क्रमिक (sequential) फ़ाइल में रिकॉर्ड शुरू से एक के बाद एक पढ़े जाते हैं।
आम तरीका: फ़ाइल खोलो, रिकॉर्ड पढ़ो, उसे बदलो, नतीजा लिखो, फ़ाइल का अंत आने तक दोहराओ, फिर बंद करो। आम काम हैं खोजना, क्रमबद्ध करना, दो क्रमबद्ध फ़ाइलों को मिलाना और रोल नंबर जैसी कुंजी से रिकॉर्ड अपडेट करना।
इनपुट और आउटपुट डिज़ाइन
इनपुट-आउटपुट डिज़ाइन यह है कि लोग प्रोग्राम से कैसे बात करें: कौन-से फ़ॉर्म भरें और कौन-सी रिपोर्ट पढ़ें।
अच्छी इनपुट स्क्रीन सरल होती है, सही क्रम में होती है और इस्तेमाल से पहले डेटा जाँचती है: मौजूदगी जाँच (ख़ाली तो नहीं), प्रकार जाँच (अंक है, अक्षर नहीं), सीमा जाँच (अंक 0 से 100) और चेक डिजिट (लंबे नंबर की टाइपिंग-ग़लती पकड़ने वाला एक अतिरिक्त अंक)।
अच्छा आउटपुट साफ़ होता है: शीर्षक, सीधे कॉलम, इकाई और कुल की पंक्ति। मददगार संदेश दिखाइए, जैसे "अंक 0 से 100 के बीच होने चाहिए"।
संरचित प्रोग्राम डिज़ाइन
संरचित डिज़ाइन में प्रोग्राम तीन बुनियादी आकारों से बनता है: क्रम (sequence), चयन (selection) यानी if / else, और दोहराव (iteration) यानी लूप। इधर-उधर कूदना टाला जाता है।
हम टॉप-डाउन डिज़ाइन करते हैं: पहले बड़ा काम (Main) लिखो, फिर उसे छोटे मॉड्यूल में तोड़ो, और फिर और छोटे में, जब तक हर एक आसान न हो जाए। अच्छा मॉड्यूल एक ही काम करता है (उच्च संसक्ति) और दूसरे मॉड्यूल पर कम निर्भर होता है (निम्न युग्मन)। अलग-अलग लोग मॉड्यूल बना और जाँच सकते हैं और बाद में दोबारा इस्तेमाल भी कर सकते हैं।
खुद करके देखो
3D में आख़िरी चरण पर जाइए। स्टैक चुनिए, चार चीज़ें जोड़िए, फिर एक निकालिए। कौन निकली? अब क्यू चुनकर यही कीजिए। दबाने से पहले अंदाज़ा लगाइए! घर पर "चाय बनाओ" के चरण तीन मॉड्यूल (उबालो, मिलाओ, परोसो) में लिखिए और देखिए कि हर एक सिर्फ़ एक काम करता है या नहीं।
मुख्य सूत्र और परिभाषाएँ
- ऐरे: पहला इंडेक्स = 0, आख़िरी इंडेक्स = आकार − 1
- स्टैक: LIFO। push ऊपर जोड़ता है, pop ऊपर से हटाता है
- क्यू: FIFO। enqueue पीछे जोड़ता है, dequeue आगे से हटाता है
- फ़ाइल का आकार = रिकॉर्डों की संख्या × प्रति रिकॉर्ड बाइट
- फ़ाइल लूप: खोलो → पढ़ो → बदलो → लिखो → … → बंद करो
हल किए गए उदाहरण
1. ऐरे marks = [7, 3, 9, 4, 6, 2] है। marks[3] क्या है?
इंडेक्स 0 पर 7, 1 पर 3, 2 पर 9, 3 पर 4। इसलिए marks[3] = 4।
2. स्टैक में 5, फिर 8, फिर 2 push किया और एक बार pop किया। क्या निकला और अब ऊपर क्या है?
Pop आख़िर में आया हुआ निकालता है: 2। अब ऊपर 8 है।
3. क्यू में 4, 1, 6 enqueue किए और एक बार dequeue किया। क्या निकला?
पहले आया, पहले गया: 4 निकला। अब क्यू में 1, 6 हैं।
4. ऐरे में 12 चीज़ें हैं। आख़िरी इंडेक्स क्या है?
इंडेक्स 0 से 11 तक हैं, इसलिए आख़िरी इंडेक्स 11 है।
5. फ़ाइल में 250 रिकॉर्ड हैं और हर एक 40 बाइट का है। फ़ाइल कितनी बड़ी है?
250 × 40 = 10,000 बाइट (10 KB)।
6. अंक का फ़ील्ड 0 से 100 लेता है। 150 को कौन-सी जाँच पकड़ेगी?
सीमा जाँच। 150, 0 से 100 के बाहर है, इसलिए प्रोग्राम त्रुटि दिखाएगा।
आम गलतियाँ
- ऐरे के डिब्बे 1 से गिनना। पहला इंडेक्स 0 है।
- स्टैक और क्यू मिला देना। स्टैक नया पहले देता है; क्यू पुराना पहले देता है।
- फ़ाइल बंद करना भूलना, या फ़ाइल के अंत पर रुकना भूलना।
- बिना जाँच उपयोगकर्ता का इनपुट मान लेना। इस्तेमाल से पहले हमेशा जाँचो।