Romania Clasa a IX-a Computer Science (intensive)
अध्याय: 3
1. Conceptual organisation of data
Linear conceptual model: the list
- डेटा संरचना: ऐरे, लिस्ट, स्टैक, क्यू और ट्री – डेटा संरचना मेमोरी में डेटा को ऐसे जमाने का तरीका है कि प्रोग्राम उसे अच्छे से इस्तेमाल कर सके। ऐरे चीज़ों को क्रमांकित डिब्बों में रखता है ताकि सूचकांक से तुरंत पहुँच हो। लिंक्ड लिस्ट नोड्स को पॉइंटर से जोड़ती है, इसलिए बीच में डालना आसान है। स्टैक LIFO (अंतिम आया, पहले गया) और क्यू FIFO (पहले आया, पहले गया) पर चलते हैं। डिक्शनरी कुंजी (key) से मान खोजती है और ट्री डेटा को स्तरों में रखता है ताकि खोज तेज़ हो।
2. Problem-solving strategies
Principles of writing a program · Processing numbers · Systematic generation of list items · Sorting a list
- संख्या एल्गोरिदम – संख्या एल्गोरिदम कुछ छोटे चरणों की सूची है जिन्हें कंप्यूटर बार-बार दोहराकर संख्याओं पर काम करता है। n % 10 और n ÷ 10 से अंक एक-एक करके निकलते हैं। भाजक जोड़ों में मिलते हैं, संख्या अभाज्य गुणनखंडों में टूटती है, यूक्लिड विधि (a, b) को (b, a mod b) से बदलकर म.स. देती है, और बार-बार भाग देकर आधार बदला जाता है।
- अनुक्रम और श्रेढ़ियाँ – अनुक्रम संख्याओं की ऐसी सूची है जिसका क्रम तय है। इसका नियम दो तरह से लिखते हैं: पुनरावर्ती (पिछले पद से अगला पद) या स्पष्ट (n-वें पद का सीधा सूत्र)। समांतर श्रेढ़ी (AP) में हर बार वही संख्या जुड़ती है। गुणोत्तर श्रेढ़ी (GP) में हर बार उसी संख्या से गुणा होता है। फ्रैक्टल और हनोई की मीनार में भी यही नियम छिपे हैं।
- सॉर्टिंग एल्गोरिदम (छाँटने के तरीक़े) – सॉर्टिंग एल्गोरिदम किसी सूची को क्रम में लगाता है। बबल सॉर्ट पड़ोसियों की अदला-बदली करता है, इंसर्शन सॉर्ट हर चीज़ को छँटे हिस्से में सही जगह खिसकाता है, सिलेक्शन सॉर्ट हर बार सबसे छोटा चुनता है, और मर्ज सॉर्ट सूची को तोड़कर छँटे हिस्से जोड़ता है। लंबी सूची पर मर्ज सॉर्ट बहुत कम तुलनाएँ करता है (लगभग n²/2 की जगह n log₂ n)।
3. Storing data and organising code in a programming language
Subprograms · Introduction to object-oriented programming · Text files · Graphical interfaces with Tkinter · Python list class · One-dimensional arrays in C++
- पायथन में फ़ंक्शन: अपनी मशीनें ख़ुद बनाइए – फ़ंक्शन एक नाम वाला कोड-खंड है जो एक काम करता है। पायथन में बिल्ट-इन फ़ंक्शन (print, len), मॉड्यूल के फ़ंक्शन (math.sqrt, random.randint) और def से बने यूज़र-डिफ़ाइंड फ़ंक्शन होते हैं। कॉल में भेजे मान आर्ग्युमेंट हैं; उन्हें पकड़ने वाले नाम पैरामीटर हैं। आर्ग्युमेंट स्थान के अनुसार (positional), नाम से (keyword) या डिफ़ॉल्ट मान से आते हैं। return मान वापस भेजता है। पायथन ऊपर से नीचे चलता है, कॉल पर फ़ंक्शन में कूदता है और फिर लौट आता है। फ़ंक्शन के अंदर बने नाम लोकल, बाहर बने ग्लोबल होते हैं।
- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) – ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में प्रोग्राम ऑब्जेक्ट्स से बनता है। क्लास एक ब्लूप्रिंट है जो बताता है कि उसके ऑब्जेक्ट्स के पास कौन-सा डेटा (एट्रिब्यूट) और कौन-से काम (मेथड) होंगे। हर ऑब्जेक्ट क्लास से बनता है और अपना डेटा ख़ुद रखता है। चार बड़े विचार हैं: एनकैप्सुलेशन (डेटा को मेथड के पीछे छिपाना), इनहेरिटेंस (नई क्लास पुरानी को दोबारा इस्तेमाल करे), पॉलीमॉर्फ़िज़्म (एक ही मेथड हर ऑब्जेक्ट के लिए सही ढंग से चले) और एब्स्ट्रैक्शन (ज़रूरी चीज़ ही दिखाना)।
- पायथन में फ़ाइल प्रबंधन: ऐसा डेटा सहेजें जो टिके – प्रोग्राम ख़त्म होते ही वेरिएबल मिट जाते हैं; फ़ाइलें डेटा डिस्क पर रखती हैं। टेक्स्ट फ़ाइल पंक्तियों में अक्षर रखती है, बाइनरी फ़ाइल कच्चे बाइट (जैसे pickle किए पायथन ऑब्जेक्ट), और CSV फ़ाइल अल्पविराम से अलग तालिका की पंक्तियाँ। फ़ाइल open(path, mode) से खुलती है; पाथ absolute या relative, मोड r, w, a, r+, rb, wb आदि। with फ़ाइल को अपने-आप बंद करता है। टेक्स्ट फ़ाइल में write, writelines, read, readline, readlines। seek फ़ाइल पॉइंटर खिसकाता है, tell उसकी जगह बताता है। pickle.dump और pickle.load से ऑब्जेक्ट सहेजते-पढ़ते हैं, जिससे रिकॉर्ड खोजना, जोड़ना और बदलना होता है। csv मॉड्यूल का writer (writerow, writerows) और reader CSV सँभालते हैं।
- Tkinter से GUI प्रोग्रामिंग: विंडो, विजेट और इवेंट – GUI (ग्राफ़िकल यूज़र इंटरफ़ेस) से लोग कमांड टाइप करने की जगह विंडो, बटन और बॉक्स से प्रोग्राम चलाते हैं। पायथन की अंतर्निर्मित Tkinter लाइब्रेरी यह आसान बनाती है: Tk() से विंडो बनाओ, Label, Entry, Button जैसे विजेट जोड़ो, pack, grid या place से सजाओ, और हर बटन को एक फ़ंक्शन से जोड़ो। फिर प्रोग्राम mainloop() में इंतज़ार करता है और क्लिक या कुंजी दबाने जैसे इवेंट होने पर आपके फ़ंक्शन चलाता है।
- पायथन में list: बनाना, ट्रैवर्स, बदलना और list मेथड – list वर्ग कोष्ठक में लिखा क्रमबद्ध, बदलने योग्य संग्रह है, जैसे [10, 20, 30]। आइटम इंडेक्स (0 से, या अंत से ऋणात्मक) और स्लाइस से मिलते हैं। for लूप से list ट्रैवर्स करते हैं, list परिवर्तनशील है इसलिए आइटम वहीं बदलते हैं, और फ़ंक्शन (len, max, min, sum, sorted, list) व मेथड (append, insert, extend, remove, pop, sort, reverse, count, index, clear) से काम करते हैं।
- ऐरे और लिस्ट: एक नाम में बहुत सारे मान – ऐरे (array) नंबर वाले डिब्बों की एक पंक्ति है जिनका नाम एक ही होता है। हर डिब्बे में एक मान होता है और उसका इंडेक्स 0 से शुरू होता है। इंडेक्स से हम डिब्बा पढ़ते या बदलते हैं, लूप से हर डिब्बे पर जाते हैं (ट्रैवर्सल), और इसी लूप से योग, औसत, सबसे बड़ा मान, गिनती और लीनियर सर्च करते हैं। 2D ऐरे पंक्तियों और स्तंभों का ग्रिड है, जिसे दो इंडेक्स और दो नेस्टेड लूप से पढ़ते हैं। ऐरे का आकार तय होता है; लिस्ट बढ़-घट सकती है।