📘 CodingMarble Learn

एक्ज़ीक्यूटर के लिए एल्गोरिदम विश्लेषण

एक्ज़ीक्यूटर (निष्पादक) ऐसा रोबोट या प्रोग्राम है जो अपनी सूची की कमांड ठीक वैसी ही करता है। एल्गोरिदम का विश्लेषण करने के लिए हम उसे ट्रेस करते हैं: हर कमांड हाथ से चलाकर हर बार स्थिति लिखते हैं। सिंटैक्स त्रुटि भाषा का नियम तोड़ती है (जैसे कमांड की ग़लत वर्तनी), इसलिए एक्ज़ीक्यूटर रुक जाता है। लॉजिक (तर्क) त्रुटि में प्रोग्राम बिना शिकायत चलता है पर नतीजा ग़लत देता है, और इसे सिर्फ़ ट्रेस करके पकड़ा जा सकता है। कंप्यूटर ग्राफ़िक्स में मूल बिंदु (0, 0) ऊपर-बाएँ कोना है, x दाएँ और y नीचे बढ़ता है।

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

  1. एक्ज़ीक्यूटर वही करता है जो उसकी कमांड-सूची कहती है। हमारा रोबोट F, L और R जानता है।
  2. प्रोग्राम का विश्लेषण करने के लिए उसे ट्रेस करो: हर कमांड चलाओ और लिखो कि रोबोट कहाँ है।
  3. सिंटैक्स त्रुटि नियम का टूटना है, जैसे वर्तनी FORWAD। रोबोट उसी पंक्ति पर रुक जाता है।
  4. लॉजिक त्रुटि में प्रोग्राम ठीक चलता है पर ग़लत जगह पहुँचता है। इसे सिर्फ़ ट्रेस करके पकड़ते हैं।
  5. स्क्रीन निर्देशांक ऊपर-बाएँ (0, 0) से शुरू होते हैं। x दाएँ जाता है, y नीचे की ओर।
  6. अब आपकी बारी: अपना प्रोग्राम बनाइए और कम से कम कमांड में तारे तक पहुँचिए।

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

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

रोबोट FORWAD को ख़ुद क्यों नहीं समझ लेता?

कंप्यूटर में सामान्य समझ नहीं होती। वह सिर्फ़ अपनी कमांड की ठीक-ठीक सूची जानता है। एक अक्षर ग़लत हुआ तो शब्द सूची में है ही नहीं।

कौन-सी त्रुटि ज़्यादा बुरी है, सिंटैक्स या लॉजिक?

लॉजिक त्रुटियाँ ज़्यादा मुश्किल हैं, क्योंकि कोई चेतावनी नहीं देता। सिंटैक्स त्रुटियाँ ख़ुद बता देती हैं।

जब प्रोग्राम चला ही सकते हैं तो हाथ से ट्रेस क्यों करें?

चलाने से सिर्फ़ अंतिम नतीजा दिखता है। ट्रेस करने से वह पहली जगह दिखती है जहाँ प्रोग्राम ग़लत हुआ।

स्क्रीन पर y नीचे की ओर क्यों बढ़ता है?

स्क्रीन ऊपर से पंक्ति-दर-पंक्ति बनती है, जैसे किताब का पन्ना पढ़ते हैं। पंक्ति 0 पहली पंक्ति है, इसलिए पंक्ति संख्या जितनी बड़ी, वह उतनी नीचे।

क्या मुड़ने से रोबोट खिसकता है?

नहीं। L और R से सिर्फ़ मुँह की दिशा बदलती है। जगह सिर्फ़ F से बदलती है।

क्या एक प्रोग्राम में दोनों तरह की त्रुटियाँ हो सकती हैं?

हाँ। पहले सिंटैक्स त्रुटियाँ ठीक करो ताकि प्रोग्राम चल सके, फिर ट्रेस करके लॉजिक त्रुटियाँ ढूँढो।

एक्ज़ीक्यूटर क्या है?

एक्ज़ीक्यूटर (निष्पादक) वह है जो कमांड पूरी करता है: रोबोट, चित्र बनाने वाला कछुआ, कैलकुलेटर या कंप्यूटर। उसके पास समझी जाने वाली कमांड की एक तय सूची होती है, जिसे कमांड सेट कहते हैं। वह ठीक वैसा ही करता है जैसा लिखा है। वह कभी अंदाज़ा नहीं लगाता कि तुम्हारा मतलब क्या था।

हमारा रोबोट एक ग्रिड पर रहता है। उसका कमांड सेट है: F (एक ख़ाना आगे), L (अपनी जगह पर बाएँ मुड़ो), R (अपनी जगह पर दाएँ मुड़ो)। एल्गोरिदम इन कमांड की सूची है। लक्ष्य तारे तक पहुँचना है।

एल्गोरिदम को ट्रेस करना

एल्गोरिदम का विश्लेषण करने का मतलब है यह पता लगाना कि वह असल में करता क्या है। सबसे अच्छा औज़ार है ट्रेसिंग: ख़ुद एक्ज़ीक्यूटर बनो, एक-एक कमांड चलाओ और हर कमांड के बाद स्थिति (जगह और मुँह किधर है) लिखते जाओ।

कमांडजगहमुँह
शुरू(1, 6)ऊपर
F(1, 5)ऊपर
F(1, 4)ऊपर
F(1, 3)ऊपर
R(1, 3)दाएँ

मुड़ने से सिर्फ़ दिशा बदलती है। आगे बढ़ने से सिर्फ़ जगह बदलती है। ऐसी ट्रेस टेबल प्रोग्रामर रोज़ इस्तेमाल करते हैं।

सिंटैक्स त्रुटियाँ

सिंटैक्स (वाक्य-रचना) का मतलब है भाषा की वर्तनी और व्याकरण के नियम। सिंटैक्स त्रुटि वह जगह है जहाँ प्रोग्राम ये नियम तोड़ता है। उदाहरण: कमांड की ग़लत वर्तनी (FORWAD), कोष्ठक का बंद न होना, ऐसी कमांड जो एक्ज़ीक्यूटर के पास है ही नहीं।

लॉजिक (तर्क) त्रुटियाँ

लॉजिक त्रुटि (सोच की ग़लती) का मतलब है कि प्रोग्राम ठीक लिखा है, बिना किसी संदेश के चलता है, पर वह नहीं करता जो तुम चाहते थे। रोबोट 3 की जगह 2 क़दम चलकर मुड़ गया, इसलिए एक ख़ाना पहले रुक गया।

डिबग कैसे करें: (1) चलाओ, (2) नतीजे की लक्ष्य से तुलना करो, (3) ट्रेस करके पहली ग़लत पंक्ति ढूँढो, (4) सिर्फ़ वही पंक्ति ठीक करो, (5) फिर चलाओ।

कंप्यूटर ग्राफ़िक्स में निर्देशांक

कंप्यूटर को बताने के लिए कि बिंदु कहाँ है, हम दो संख्याएँ लेते हैं: (x, y)। स्क्रीन पर मूल बिंदु (0, 0) ऊपर-बाएँ कोना होता है।

बिंदु (5, 2) का मतलब है 5 दाएँ और 2 नीचे। हमारा रोबोट-ग्रिड भी यही नियम मानता है, इसलिए ऊपर से जितनी नीची पंक्ति, उतना बड़ा y। जब चित्र बनाने वाला एक्ज़ीक्यूटर "ऊपर" जाता है तो उसका y घटता है।

स्क्रीन के y को गणित के y में बदलने के लिए, जिस स्क्रीन में H पंक्तियाँ हैं (0 से H − 1): गणित का y = (H − 1) − स्क्रीन का y।

खुद करके देखो

3D में: आख़िरी चरण में ठीक 7 कमांड से तारे तक पहुँचो। फिर जान-बूझकर एक लॉजिक त्रुटि बनाओ और दोस्त को समझाओ कि तुम उसे कैसे ढूँढोगे।

घर पर: काग़ज़ पर 8 × 8 का ग्रिड खींचो। दोस्त के लिए (सिर्फ़ F, L, R में) एक प्रोग्राम लिखो कि वह एक ख़ाने से दूसरे तक चले। दोस्त पेंसिल लेकर रोबोट बने। जहाँ वह ग़लत जगह पहुँचे, वहीं तुम्हारा बग है।

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

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

1. ट्रेस करो: रोबोट (2, 5) पर, मुँह ऊपर। प्रोग्राम: F F R F। वह कहाँ रुकेगा?

F: (2, 4)। F: (2, 3)। R: अब मुँह दाएँ। F: (3, 3)। वह (3, 3) पर, मुँह दाएँ, रुकता है।

2. प्रोग्राम में पंक्ति "FORWRD" है। यह कौन-सी त्रुटि है और क्या होगा?

सिंटैक्स त्रुटि। FORWRD कोई कमांड नहीं है, इसलिए एक्ज़ीक्यूटर उसी पंक्ति पर रुककर उसकी सूचना देगा।

3. रोबोट को (1, 6) से 4 ख़ाने ऊपर जाना है पर प्रोग्राम F F F है। यह कौन-सी त्रुटि है? कैसे ठीक करें?

लॉजिक त्रुटि। प्रोग्राम चलता है पर (1, 2) की जगह (1, 3) पर रुकता है। हल: एक F और जोड़ो।

4. स्क्रीन पर एक बिंदु x = 4, y = 3 पर है। बताओ वह कहाँ है।

बाएँ किनारे से 4 ख़ाने दाएँ और ऊपरी किनारे से 3 ख़ाने नीचे।

5. (3, 3) पर कछुआ, मुँह ऊपर, F F चलता है। उसका नया y क्या है?

स्क्रीन पर ऊपर जाने से y घटता है। 3 − 2 = 1। नई जगह (3, 1)।

6. रोबोट (1, 6) पर, मुँह ऊपर, उसे (4, 3) पहुँचना है। सबसे छोटा प्रोग्राम दो।

तीन ख़ाने ऊपर और तीन दाएँ: F F F R F F F। यानी 7 कमांड।

आम गलतियाँ

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

1. एक्ज़ीक्यूटर क्या है?
2. कमांड FORWAD है:
3. प्रोग्राम बिना संदेश चलता है पर नतीजा ग़लत है। यह है:
4. स्क्रीन पर मूल बिंदु (0, 0) कहाँ होता है?
5. स्क्रीन निर्देशांक में नीचे जाने पर y:

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

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

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

सूचना-विज्ञान में एक्ज़ीक्यूटर क्या है?

एक्ज़ीक्यूटर ऐसा रोबोट या प्रोग्राम है जो अपने कमांड सेट की कमांड ठीक वैसी ही करता है जैसी लिखी हों, जैसे ग्रिड पर रोबोट या चित्र बनाने वाला कछुआ।

सिंटैक्स त्रुटि और लॉजिक त्रुटि में क्या अंतर है?

सिंटैक्स त्रुटि भाषा के नियम तोड़ती है, इसलिए प्रोग्राम वह पंक्ति नहीं चला पाता। लॉजिक त्रुटि में प्रोग्राम ठीक चलता है पर नतीजा ग़लत होता है।

कंप्यूटर ग्राफ़िक्स में मूल बिंदु कहाँ होता है?

स्क्रीन के ऊपर-बाएँ कोने में। x दाएँ बढ़ता है और y नीचे की ओर बढ़ता है।

पहले यह पढ़ें

आगे पढ़ें

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

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