एक्ज़ीक्यूटर क्या है?
एक्ज़ीक्यूटर (निष्पादक) वह है जो कमांड पूरी करता है: रोबोट, चित्र बनाने वाला कछुआ, कैलकुलेटर या कंप्यूटर। उसके पास समझी जाने वाली कमांड की एक तय सूची होती है, जिसे कमांड सेट कहते हैं। वह ठीक वैसा ही करता है जैसा लिखा है। वह कभी अंदाज़ा नहीं लगाता कि तुम्हारा मतलब क्या था।
हमारा रोबोट एक ग्रिड पर रहता है। उसका कमांड सेट है: 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) ऊपर-बाएँ कोना होता है।
- x दाएँ बढ़ता है।
- y नीचे की ओर बढ़ता है। यह गणित के ग्राफ़ का उलटा है, जहाँ y ऊपर जाता है।
बिंदु (5, 2) का मतलब है 5 दाएँ और 2 नीचे। हमारा रोबोट-ग्रिड भी यही नियम मानता है, इसलिए ऊपर से जितनी नीची पंक्ति, उतना बड़ा y। जब चित्र बनाने वाला एक्ज़ीक्यूटर "ऊपर" जाता है तो उसका y घटता है।
स्क्रीन के y को गणित के y में बदलने के लिए, जिस स्क्रीन में H पंक्तियाँ हैं (0 से H − 1): गणित का y = (H − 1) − स्क्रीन का y।
खुद करके देखो
3D में: आख़िरी चरण में ठीक 7 कमांड से तारे तक पहुँचो। फिर जान-बूझकर एक लॉजिक त्रुटि बनाओ और दोस्त को समझाओ कि तुम उसे कैसे ढूँढोगे।
घर पर: काग़ज़ पर 8 × 8 का ग्रिड खींचो। दोस्त के लिए (सिर्फ़ F, L, R में) एक प्रोग्राम लिखो कि वह एक ख़ाने से दूसरे तक चले। दोस्त पेंसिल लेकर रोबोट बने। जहाँ वह ग़लत जगह पहुँचे, वहीं तुम्हारा बग है।
मुख्य सूत्र और परिभाषाएँ
- F: मुँह की दिशा में अगला ख़ाना
- L: दिशा 90° बाएँ घूमती है; R: 90° दाएँ
- स्क्रीन निर्देशांक: मूल बिंदु (0, 0) ऊपर-बाएँ, x → दाएँ, y ↓ नीचे
- गणित का y = (H − 1) − स्क्रीन का y (H पंक्तियाँ, 0 से गिनी हुई)
हल किए गए उदाहरण
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 कमांड।
आम गलतियाँ
- सोचना कि कंप्यूटर समझ जाएगा कि तुम्हारा मतलब क्या था। एक्ज़ीक्यूटर ठीक वही करता है जो कमांड कहती हैं।
- ट्रेस न करना: प्रोग्राम एक बार चलाकर "लगभग ठीक" देखना और अंदाज़े से सुधार करना।
- दोनों त्रुटियाँ मिला देना: ग़लत वर्तनी सिंटैक्स है; ग़लत गिनती या क्रम लॉजिक है।
- गणित के ग्राफ़ की आदत स्क्रीन पर लगाना: y ऊपर नहीं जाता। स्क्रीन पर ऊपर जाने से y घटता है।