United Grade 11 AP Computer Science A (Java)
अध्याय: 4
1. Using Objects and Methods
Introduction to Algorithms, Programming, and Compilers · Variables and Data Types · Expressions and Output · Assignment Statements and Input · Casting and Range of Variables · Compound Assignment Operators · Application Program Interface (API) and Libraries · Documentation with Comments · Method Signatures · Calling Class Methods · Math Class · Objects: Instances of Classes · Object Creation and Storage (Instantiation) · Calling Instance Methods · String Manipulation
- प्रोग्रामिंग की मूल बातें: अनुक्रम, चयन, लूप और फ़ंक्शन – प्रोग्राम सटीक निर्देशों का समूह है जिसे कंप्यूटर मानता है। हर प्रोग्राम तीन संरचनाओं से बनता है: अनुक्रम (क्रम से कदम), चयन (if/else से चुनाव) और पुनरावृत्ति (लूप)। चर मान संभालकर रखते हैं। फ़ंक्शन कोड को नाम वाले, दोबारा इस्तेमाल होने वाले खंडों में बाँटते हैं, जिससे प्रोग्राम मॉड्यूलर बनता है और उसे जाँचना, सुधारना और सँभालना आसान होता है।
- पायथन की मूल बातें: मोड, वेरिएबल, डेटा प्रकार और ऑपरेटर – पायथन इंटरैक्टिव मोड (एक-एक पंक्ति) या स्क्रिप्ट मोड (सहेजी गई .py फ़ाइल) में चलता है। ब्लॉक इंडेंटेशन से पहचाने जाते हैं। वेरिएबल मान से बँधे नाम हैं; हर मान का एक डेटा प्रकार होता है, और कुछ प्रकार परिवर्तनशील हैं। ऑपरेटर व्यंजक बनाते हैं जिन्हें पायथन प्राथमिकता के क्रम से हल करता है। input() टेक्स्ट पढ़ता है, int()/float()/str() प्रकार बदलते हैं, और डिबगिंग से सिंटैक्स, रनटाइम और तार्किक त्रुटियाँ ठीक होती हैं।
- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) – ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में प्रोग्राम ऑब्जेक्ट्स से बनता है। क्लास एक ब्लूप्रिंट है जो बताता है कि उसके ऑब्जेक्ट्स के पास कौन-सा डेटा (एट्रिब्यूट) और कौन-से काम (मेथड) होंगे। हर ऑब्जेक्ट क्लास से बनता है और अपना डेटा ख़ुद रखता है। चार बड़े विचार हैं: एनकैप्सुलेशन (डेटा को मेथड के पीछे छिपाना), इनहेरिटेंस (नई क्लास पुरानी को दोबारा इस्तेमाल करे), पॉलीमॉर्फ़िज़्म (एक ही मेथड हर ऑब्जेक्ट के लिए सही ढंग से चले) और एब्स्ट्रैक्शन (ज़रूरी चीज़ ही दिखाना)।
- Python में स्ट्रिंग – स्ट्रिंग अक्षरों का इम्यूटेबल अनुक्रम है जो एकल, दोहरे या तिहरे उद्धरण चिह्नों में लिखा जाता है। हर अक्षर का धनात्मक इंडेक्स (बाएँ से 0) और ऋणात्मक इंडेक्स (दाएँ से −1) होता है। संक्रियाएँ: + (जोड़ना), * (दोहराना), in / not in (सदस्यता) और स्लाइसिंग s[start:stop:step], जो start से stop तक (stop शामिल नहीं) अक्षर लेती है। ट्रैवर्सल = लूप से हर अक्षर पर जाना। len(), upper(), lower(), title(), capitalize(), count(), find(), index(), replace(), split(), join(), strip(), startswith(), endswith(), isalpha(), isdigit(), isalnum(), islower(), isupper(), isspace() जैसे मेथड मूल स्ट्रिंग बदले बिना नया मान देते हैं।
2. Selection and Iteration
Algorithms with Selection and Repetition · Boolean Expressions · if Statements · Nested if Statements · Compound Boolean Expressions · Comparing Boolean Expressions · while Loops · for Loops · Implementing Selection and Iteration Algorithms · Implementing String Algorithms · Nested Iteration · Informal Run-Time Analysis
- Python में नियंत्रण प्रवाह – नियंत्रण प्रवाह वह क्रम है जिसमें कथन चलते हैं। Python में तीन प्रकार: क्रमिक (ऊपर से नीचे), चयन (if, if-else, if-elif-else) और पुनरावृत्ति (for और while लूप)। ब्लॉक इंडेंटेशन से बनते हैं (कोलन के बाद आमतौर पर 4 स्पेस)। range(start, stop, step) start से stop तक, पर stop शामिल नहीं। while तब तक दोहराता है जब तक शर्त सत्य है। break लूप तुरंत छोड़ता है; continue अगली बारी पर जाता है। लूप के अंदर लूप नेस्टेड लूप है, जो पैटर्न में काम आता है; जोड़ने वाले चर (accumulator) से श्रेणी का योग निकलता है।
- पायथन में नियंत्रण कथन: if-else, while और for – सामान्यतः पायथन पंक्तियाँ एक के बाद एक चलाता है (क्रम)। नियंत्रण कथन यह बहाव बदलते हैं। if-else दो में से एक रास्ता चुनता है; if-elif-else कई में से पहली सच्ची शर्त चुनता है। while शर्त सच रहने तक ब्लॉक दोहराता है; for किसी क्रम, जैसे range(start, stop, step), के हर आइटम के लिए एक बार चलता है।
- Python में स्ट्रिंग – स्ट्रिंग अक्षरों का इम्यूटेबल अनुक्रम है जो एकल, दोहरे या तिहरे उद्धरण चिह्नों में लिखा जाता है। हर अक्षर का धनात्मक इंडेक्स (बाएँ से 0) और ऋणात्मक इंडेक्स (दाएँ से −1) होता है। संक्रियाएँ: + (जोड़ना), * (दोहराना), in / not in (सदस्यता) और स्लाइसिंग s[start:stop:step], जो start से stop तक (stop शामिल नहीं) अक्षर लेती है। ट्रैवर्सल = लूप से हर अक्षर पर जाना। len(), upper(), lower(), title(), capitalize(), count(), find(), index(), replace(), split(), join(), strip(), startswith(), endswith(), isalpha(), isdigit(), isalnum(), islower(), isupper(), isspace() जैसे मेथड मूल स्ट्रिंग बदले बिना नया मान देते हैं।
- एल्गोरिदम कॉम्प्लेक्सिटी: एल्गोरिदम कितनी तेज़ी से बढ़ता है? – एक ही सवाल को कई एल्गोरिदम हल कर सकते हैं, पर कुछ बहुत ज़्यादा कदम लेते हैं। हम घड़ी के सेकंड नहीं, बल्कि इनपुट के आकार n के साथ बढ़ते कदम गिनते हैं। बिग O इस बढ़त का नाम है: O(1) स्थिर, O(log n), O(n) रैखिक, O(n log n) और O(n²)। लीनियर सर्च O(n), बाइनरी सर्च O(log n); बबल सॉर्ट O(n²), मर्ज सॉर्ट O(n log n)। मेमोरी की बढ़त = स्पेस कॉम्प्लेक्सिटी।
3. Class Creation
Abstraction and Program Design · Impact of Program Design · Anatomy of a Class · Constructors · Methods: How to Write Them · Methods: Passing and Returning References of an Object · Class Variables and Methods · Scope and Access · this Keyword
- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) – ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में प्रोग्राम ऑब्जेक्ट्स से बनता है। क्लास एक ब्लूप्रिंट है जो बताता है कि उसके ऑब्जेक्ट्स के पास कौन-सा डेटा (एट्रिब्यूट) और कौन-से काम (मेथड) होंगे। हर ऑब्जेक्ट क्लास से बनता है और अपना डेटा ख़ुद रखता है। चार बड़े विचार हैं: एनकैप्सुलेशन (डेटा को मेथड के पीछे छिपाना), इनहेरिटेंस (नई क्लास पुरानी को दोबारा इस्तेमाल करे), पॉलीमॉर्फ़िज़्म (एक ही मेथड हर ऑब्जेक्ट के लिए सही ढंग से चले) और एब्स्ट्रैक्शन (ज़रूरी चीज़ ही दिखाना)।
4. Data Collections
Ethical and Social Issues Around Data Collection · Introduction to Using Data Sets · Array Creation and Access · Array Traversals · Implementing Array Algorithms · Using Text Files · Wrapper Classes · ArrayList Methods · ArrayList Traversals · Implementing · 2D Array Creation and Access · 2D Array Traversals · Implementing 2D Array Algorithms · Searching Algorithms · Sorting Algorithms · Recursion · Recursive Searching and Sorting
- डेटा विश्लेषण – डेटा विश्लेषण यानी कच्चे आँकड़ों को जवाब में बदलना। इसका एक चक्र है: सवाल पूछो, डेटा इकट्ठा करो, साफ़ करो (ग़लती, दोहराव और खाली जवाब हटाओ), व्यवस्थित करो, माध्य, माध्यिका, परास और पैटर्न से विश्लेषण करो, सही चार्ट बनाओ और सावधानी से निष्कर्ष निकालो। बाहरी मान, छोटे नमूने और पक्षपात पर नज़र रखो, और याद रखो कि दो चीज़ों का साथ बढ़ना (सहसंबंध) यह साबित नहीं करता कि एक दूसरे का कारण है। डेटा को सुरक्षित रखना और अनुमति से इस्तेमाल करना भी ज़रूरी है।
- ऐरे और लिस्ट: एक नाम में बहुत सारे मान – ऐरे (array) नंबर वाले डिब्बों की एक पंक्ति है जिनका नाम एक ही होता है। हर डिब्बे में एक मान होता है और उसका इंडेक्स 0 से शुरू होता है। इंडेक्स से हम डिब्बा पढ़ते या बदलते हैं, लूप से हर डिब्बे पर जाते हैं (ट्रैवर्सल), और इसी लूप से योग, औसत, सबसे बड़ा मान, गिनती और लीनियर सर्च करते हैं। 2D ऐरे पंक्तियों और स्तंभों का ग्रिड है, जिसे दो इंडेक्स और दो नेस्टेड लूप से पढ़ते हैं। ऐरे का आकार तय होता है; लिस्ट बढ़-घट सकती है।
- पायथन में फ़ाइल प्रबंधन: ऐसा डेटा सहेजें जो टिके – प्रोग्राम ख़त्म होते ही वेरिएबल मिट जाते हैं; फ़ाइलें डेटा डिस्क पर रखती हैं। टेक्स्ट फ़ाइल पंक्तियों में अक्षर रखती है, बाइनरी फ़ाइल कच्चे बाइट (जैसे 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 सँभालते हैं।
- पायथन में 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) से काम करते हैं।
- प्रोग्रामिंग की मूल बातें: अनुक्रम, चयन, लूप और फ़ंक्शन – प्रोग्राम सटीक निर्देशों का समूह है जिसे कंप्यूटर मानता है। हर प्रोग्राम तीन संरचनाओं से बनता है: अनुक्रम (क्रम से कदम), चयन (if/else से चुनाव) और पुनरावृत्ति (लूप)। चर मान संभालकर रखते हैं। फ़ंक्शन कोड को नाम वाले, दोबारा इस्तेमाल होने वाले खंडों में बाँटते हैं, जिससे प्रोग्राम मॉड्यूलर बनता है और उसे जाँचना, सुधारना और सँभालना आसान होता है।
- खोज (Searching) और छँटाई (Sorting) एल्गोरिदम – खोज एल्गोरिदम सूची में कोई चीज़ ढूँढता है; छँटाई एल्गोरिदम सूची को क्रम में लगाता है। रेखीय खोज एक-एक करके देखती है और किसी भी सूची पर चलती है। द्विआधारी खोज छँटी सूची को हर बार आधा करती है और बहुत तेज़ है। बबल सॉर्ट पड़ोसियों की अदला-बदली करता है; मर्ज सॉर्ट सूची तोड़कर छँटे टुकड़े जोड़ता है, जो बड़ी सूचियों में तेज़ है।
- सॉर्टिंग एल्गोरिदम (छाँटने के तरीक़े) – सॉर्टिंग एल्गोरिदम किसी सूची को क्रम में लगाता है। बबल सॉर्ट पड़ोसियों की अदला-बदली करता है, इंसर्शन सॉर्ट हर चीज़ को छँटे हिस्से में सही जगह खिसकाता है, सिलेक्शन सॉर्ट हर बार सबसे छोटा चुनता है, और मर्ज सॉर्ट सूची को तोड़कर छँटे हिस्से जोड़ता है। लंबी सूची पर मर्ज सॉर्ट बहुत कम तुलनाएँ करता है (लगभग n²/2 की जगह n log₂ n)।
- रिकर्शन: ख़ुद को पुकारने वाले फ़ंक्शन – रिकर्शन (recursion) तब होता है जब कोई फ़ंक्शन किसी प्रश्न को हल करने के लिए उसी प्रश्न के छोटे रूप पर ख़ुद को पुकारता है। हर रिकर्सिव फ़ंक्शन में एक आधार स्थिति (base case) चाहिए, जहाँ वह रुककर सीधे उत्तर देता है, और एक रिकर्सिव स्थिति जो आधार स्थिति की ओर बढ़ती है। हर पुकार को कॉल स्टैक पर अपना स्टैक फ़्रेम मिलता है; पुकार लौटने पर फ़्रेम हट जाता है।