📘 CodingMarble Learn

उन्नत प्रोग्रामिंग और अनुप्रयोग

उन्नत प्रोग्रामिंग का मतलब है सही डेटा संरचना चुनना (ऐरे, लिंक्ड लिस्ट, स्टैक, क्यू), IDE में कोड लिखना और जाँचना, चार्ट और ऐनिमेशन बनाना, स्प्रेडशीट फ़ंक्शन इस्तेमाल करना और डेटा को रिलेशनल डेटाबेस में सुरक्षित रखकर SQL से पूछना।

🎬 कदम-दर-कदम कहानी

  1. ऐरे में खानों की संख्या तय होती है, यहाँ छह। आकार पहले तय करना पड़ता है। भर जाए तो और नहीं जोड़ सकते।
  2. लिंक्ड लिस्ट ज़रूरत के अनुसार बढ़ती है। हर नोड में एक मान और अगले नोड का लिंक है। आख़िरी का लिंक खाली (null) है। जोड़ो दबाओ।
  3. स्टैक थालियों के ढेर जैसा है। ऊपर रखते (push) हैं और ऊपर से ही निकालते (pop) हैं। जो आख़िर में आया, वह पहले जाता है।
  4. क्यू टिकट की लाइन जैसी है। पीछे जुड़ते हैं और आगे से निकलते हैं। जो पहले आया, वह पहले जाता है।
  5. डेटाबेस डेटा को तालिकाओं (टेबल) में रखता है। दो तालिकाएँ कुंजी id से जुड़ती हैं। SQL क्वेरी सिर्फ वही पंक्तियाँ चुनती है जो चाहिए, यहाँ 50 या ज़्यादा अंक।
  6. अब तुम्हारी बारी। लिस्ट, स्टैक या क्यू चुनो और बटन दबाकर आइटम जोड़ो और हटाओ।

टिप: 3D दृश्य को घुमाने के लिए खींचें। ज़ूम के लिए दो उंगलियाँ इस्तेमाल करें।

🤔 आम शंकाएँ और उनके जवाब

मैं ऐरे में सातवाँ आइटम क्यों नहीं जोड़ सकता?

ऐरे का आकार बनाते समय तय हो जाता है। चरण 0 में छह खाने ही पूरा ऐरे हैं। बढ़ने वाले संग्रह के लिए लिस्ट इस्तेमाल करो।

लिंक्ड लिस्ट क्रम कहाँ रखती है?

लिंक में। हर नोड सिर्फ अगले नोड को जानता है, इसलिए तीरों के सहारे चलना पड़ता है। चरण 1 देखो।

pop मेरा आख़िरी जोड़ा हुआ आइटम ही क्यों देता है?

स्टैक का एक ही खुला सिरा है, ऊपर। सबसे नया आइटम ऊपर बैठा है, इसलिए वही पहले जाता है। चरण 2 देखो।

क्यू स्टैक से कैसे अलग है?

क्यू में पीछे जोड़ते और आगे से हटाते हैं, इसलिए सबसे पुराना पहले जाता है। चरण 3 के बटन दबाओ।

एक की जगह दो तालिकाएँ क्यों?

ताकि हर तथ्य एक ही बार रखा जाए। नाम एक तालिका में और अंक दूसरी में, id से जुड़े। तब नाम सुधारना हो तो सिर्फ एक जगह बदलना पड़ता है। चरण 4 देखो।

कौन सी संरचना इस्तेमाल करूँ?

तय आकार और तेज़ इंडेक्स पहुँच चाहिए: ऐरे। बढ़ने वाला संग्रह: लिस्ट। undo और बैक: स्टैक। प्रतीक्षा की कतार: क्यू। चरण 5 में हर एक आज़माओ।

डेटा संरचनाएँ: ऐरे, लिंक्ड लिस्ट, स्टैक, क्यू

डेटा संरचना डेटा को ऐसे सजाने का तरीका है कि प्रोग्राम उसे तेज़ी और आसानी से इस्तेमाल कर सके।

लाइब्रेरी में ये औज़ार पहले से होते हैं। Python में list स्टैक की तरह चलती है (append, pop), और collections.deque तेज़ क्यू का काम करती है। जो लाइब्रेरी में है, उसे दोबारा मत लिखो।

stack = []
stack.append(5); stack.append(8)
stack.pop()      # 8 मिलेगा
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft()      # 4 मिलेगा

IDE का उपयोग: लिखो, चलाओ, जाँचो

IDE (इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट) में एडिटर, चलाने का बटन, डीबगर और औज़ार एक जगह होते हैं। यह कोड को रंगता है, नाम सुझाता है और टाइप करते समय गलतियाँ दिखाता है।

2D और 3D विज़ुअलाइज़ेशन और ऐनिमेशन

चित्र हमें पैटर्न दिखाते हैं। प्रोग्राम चार्ट (बार, लाइन, स्कैटर), 2D चित्र और 3D दृश्य बना सकते हैं। ऐनिमेशन वही चित्र बार-बार थोड़े बदलाव के साथ बनाना है (एक सेकंड में लगभग 30 से 60 बार)। आसान तरीका: x जैसा वेरिएबल रखो, हर फ़्रेम में उसमें थोड़ा जोड़ो और फिर से बनाओ। इस पन्ने का 3D भी 3D लाइब्रेरी से इसी तरह बना है।

उन्नत स्प्रेडशीट फ़ंक्शन

स्प्रेडशीट फ़ंक्शन से प्रोग्राम जैसा काम कर सकती है:

रिलेशनल डेटाबेस और SQL

रिलेशनल डेटाबेस डेटा को पंक्तियों और स्तंभों वाली तालिकाओं में रखता है। हर तालिका की एक प्राइमरी की होती है, यानी ऐसा स्तंभ जिसके मान अनोखे हों (id)। दूसरी तालिका वही मान फॉरेन की के रूप में रखकर जुड़ती है। अच्छे डिज़ाइन में हर तथ्य सिर्फ एक बार रखा जाता है, दोहराव नहीं।

SQL सवाल पूछने और डेटा बदलने की भाषा है:

SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;

INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;

अखंडता (integrity) का मतलब है डेटा सही रहे: कुंजियाँ अनोखी हों, फॉरेन की किसी असली पंक्ति से मेल खाए और मान सही प्रकार के हों। सुरक्षा का मतलब है उपयोगकर्ताओं के पासवर्ड, हर किसी को सिर्फ ज़रूरी अधिकार, बैकअप, और उपयोगकर्ता का लिखा टेक्स्ट सीधे क्वेरी में जोड़कर SQL न बनाना (पैरामीटर इस्तेमाल करो), जिससे SQL इंजेक्शन रुकता है।

खुले संसाधनों में योगदान

बहुत से औज़ार और लाइब्रेरी ओपन सोर्स हैं: कोई भी लाइसेंस के तहत उन्हें पढ़, इस्तेमाल और सुधार सकता है। तुम बग ठीक करके, गाइड सुधारकर, पन्ना अनुवाद करके या उदाहरण जोड़कर मदद कर सकते हो। हमेशा लाइसेंस पढ़ो, श्रेय दो और बदलाव सुझाते समय साफ़ और विनम्र संदेश लिखो।

करके देखो

3D के चरण 5 में स्टैक में 3 आइटम push करो, फिर pop करो। क्रम लिखो। क्यू में भी यही करो। फिर पहले अनुमान लगाओ, बाद में जाँचो: 4, 9, 2 जोड़कर एक आइटम हटाने पर क्यू के आगे और स्टैक के ऊपर कौन सा मान बचेगा?

मुख्य सूत्र और परिभाषाएँ

हल किए गए उदाहरण

1. 5, 8 और 2 इसी क्रम में स्टैक में push किए गए। फिर दो बार pop किया। अब ऊपर क्या है?

push के बाद स्टैक: 5, 8, 2 (2 ऊपर)। pop पहले 2, फिर 8 हटाता है। बचा: 5। ऊपर 5 है।

2. 4, 9, 2 इसी क्रम में क्यू में जुड़े। एक बार dequeue किया। अब आगे कौन है?

सबसे पहले आया निकलता है, इसलिए 4 हट गया। आगे 9 है।

3. अंक तालिका: id 1 से 4 के अंक 72, 45, 88, 51। WHERE score >= 50 कितनी पंक्तियाँ देगा?

72, 88 और 51 अंक 50 या ज़्यादा हैं। यानी 3 पंक्तियाँ।

4. सेल B2:B5 में 72, 45, 88, 51 हैं। =SUMIF(B2:B5,">=50") क्या देगा?

यह सिर्फ 72, 88 और 51 जोड़ेगा: 72 + 88 + 51 = 211।

5. व्यंजक ( [ ] ) जैसे कोष्ठक जाँचने के लिए स्टैक क्यों इस्तेमाल करते हैं?

हर खुला कोष्ठक push करो। बंद कोष्ठक आए तो pop करके मिलान जाँचो। सबसे हाल का खुला कोष्ठक पहले बंद होना चाहिए (LIFO), जो स्टैक देता है। अंत में स्टैक खाली हो तो कोष्ठक मेल खाते हैं।

आम गलतियाँ

अभ्यास क्विज़

1. कौन सी संरचना LIFO है?
2. कौन सी संरचना लिंक से एक-एक नोड करके बढ़ती है?
3. SQL में कौन सा खंड नियम पर खरी पंक्तियाँ चुनता है?
4. हर पंक्ति के लिए अनोखे मान वाला स्तंभ है:
5. डीबगर का ब्रेकपॉइंट क्या करता है?

अभ्यास: खुद जवाब दो

अपना जवाब लिखो या चुनो, फिर जाँचें दबाओ। अटको तो संकेत देखो; जवाब देने के बाद पूरा हल दिखेगा।

अक्सर पूछे जाने वाले प्रश्न

ऐरे और लिंक्ड लिस्ट में क्या अंतर है?

ऐरे का आकार तय होता है और इंडेक्स से किसी भी आइटम पर सीधे जा सकते हैं। लिंक्ड लिस्ट बढ़-घट सकती है, पर किसी आइटम तक पहुँचने के लिए लिंक एक-एक करके पकड़ने पड़ते हैं।

प्राइमरी की और फॉरेन की क्या हैं?

प्राइमरी की ऐसा स्तंभ है जो हर पंक्ति को अनोखा मान देता है, जैसे रोल नंबर। फॉरेन की दूसरी तालिका का स्तंभ है जो वही मान रखकर दोनों तालिकाओं को जोड़ता है।

SQL इंजेक्शन खतरनाक क्यों है और इसे कैसे रोकें?

अगर उपयोगकर्ता का टेक्स्ट सीधे SQL कमांड में चिपका दें, तो कोई चालाक उपयोगकर्ता अपने कमांड जोड़कर डेटा पढ़ या मिटा सकता है। पैरामीटर वाली क्वेरी इस्तेमाल करो ताकि टेक्स्ट हमेशा सिर्फ डेटा माना जाए।

पहले यह पढ़ें

आगे पढ़ें

इससे जुड़े पाठ

सभी कंप्यूटर विज्ञान पाठ