सामग्री पर जाएँ
Topos Uranos

सारांश

यह पाठ पाठ्यक्रम की पाँचवीं इकाई खोलता है, जो फ़ंक्शनों को समर्पित है। यह बताता है कि इकाई किसलिए है: किसी समस्या को नाम वाले हिस्सों में विघटित करना सिखाना, हर हिस्से को एक इंटरफ़ेस और एक अनुबंध के साथ, और कुछ समस्याओं को उन्हीं के एक छोटे उदाहरण तक घटाकर हल करना सिखाना, यानी पुनरावर्तन से; इसके चार पाठों और उन्हें जोड़ने वाले सूत्र को प्रस्तुत करता है; उसे याद दिलाता है जिसे इकाई ज्ञात मानती है, ख़ासकर इकाई 4 के लूप और उनके निश्चर; उस समस्या को सूत्रबद्ध करता है जिसे इकाई हल करती है, यानी एक ऐसे प्रोग्राम की समस्या जो एक ही गणना को कॉपी करके दोहराता है और कॉपी करते समय हुई एक चूक के कारण ग़लत उत्तर देता है, जबकि कंपाइलर कुछ नहीं कहता; अनुबंध (पूर्व-शर्त और पश्च-शर्त) को पहले से उस रूप के तौर पर प्रस्तुत करता है जिससे इकाई हर हिस्से का विनिर्देश लिखेगी; और दिखाता है कि यह इकाई कहाँ ले जाती है, आगे की इकाइयों में और C++ में प्रोग्रामिंग II पाठ्यक्रम में।

अधिगम उद्देश्य

  1. इकाई की विषय-वस्तु के क्रम का वर्णन करना और समझाना कि हर पाठ अपने बाद वाले पाठ को क्या देता है।
  2. इकाई 4 के एल्गोरिदमों (लूप का ट्रेस, उसका निश्चर और उसका वैरिएंट) को याद करना और ज़रूरत हो तो उन्हें दोहराना।
  3. एक उदाहरण के सहारे अनुबंध के विचार का पूर्वाभास पाना: प्रोग्राम का कोई हिस्सा अपने उपयोगकर्ता से क्या माँगता है और बदले में उसे किस बात की गारंटी देता है।
  4. पहचानना कि इकाई पूरी करने पर क्या कर पाना अपेक्षित है, और उसे उससे अलग करना जो आगे की इकाइयों में सीखा जाएगा।

प्रवेश मूल्यांकन

इकाई शुरू करने से पहले आरंभ-बिंदु को माप लेना उपयोगी है। यह मूल्यांकन एक स्व-मूल्यांकन है: इसमें अंक नहीं दिए जाते, और इसका एकमात्र उद्देश्य अध्ययन को दिशा देना है। पहले पाँच प्रश्न उसे जाँचते हैं जिसे इकाई ज्ञात मानती है: लूप का ट्रेस, उसका निश्चर, किसी विनिर्देश की पूर्व-शर्त, इनिशियलाइज़ेशन में किसी मान की प्रति, और इकाई 4 के किसी प्रोग्राम के भीतर ऐसी गणना की खोज जिसके अपने इनपुट और आउटपुट हों। उसके बाद के पाँच प्रश्न, पाठों के क्रम से, इकाई के केंद्रीय विचारों को छूते हैं: कॉल स्टैक, आर्ग्युमेंट का पास किया जाना, गणना और प्रस्तुति का अलगाव, क्रमगुणित की पुनरावर्ती परिभाषा, और स्वयं को कॉल करने वाले फ़ंक्शन का निष्पादन। अभी इनके सही उत्तर देने के लिए कोई बाध्य नहीं है, और इनमें से कुछ में “मुझे अभी नहीं पता” एक ईमानदार उत्तर है: हर उत्तर, सही हो या ग़लत, बात को समझाता है और उस पाठ का नाम बताता है जिसमें वह बात आती है। यही कौशल अंत में, सारांश वाले पाठ में, फिर से मापे जाते हैं।

प्रवेश मूल्यांकन

इकाई शुरू करने से पहले अपना आरंभ बिंदु मापें। यह एक छोटा स्व-मूल्यांकन है: इस पर अंक नहीं दिए जाते और इसका परिणाम केवल आपके ब्राउज़र में रहता है।

  1. प्रश्न 1पिछली इकाइयों सेint n{305}; int c{1}; while (n >= 10) { n = n / 10; ++c; } std::println("{}", c); क्या लिखता है?

  2. प्रश्न 2पिछली इकाइयों सेलूप int total{0}; int k{1}; while (k <= n) { total += k; ++k; } में, जहाँ n≥0n \geq 0 है, हर बार शर्त की जाँच होते समय कौन-सा संबंध सत्य रहता है?

  3. प्रश्न 3पिछली इकाइयों सेविभाजन का विनिर्देश कहता है: “पूर्णांक a≥0a \geq 0 और b>0b > 0 दिए होने पर, qq और rr ज्ञात करें जिनके लिए a=b⋅q+ra = b \cdot q + r और 0≤r<b0 \leq r < b”। इसकी पूर्व-शर्त क्या है?

  4. प्रश्न 4पिछली इकाइयों सेint a{3}; int b{a}; b = 7; के बाद a का मान कितना है?

  5. प्रश्न 5पिछली इकाइयों सेपाठ 4.4 के उस प्रोग्राम में, जो 100 से छोटी अभाज्य संख्याएँ लिखता है, एक लूप है जो उम्मीदवारों पर चलता है और, उसके भीतर, एक और लूप जो उनके भाजकों को परखता है। कौन-सा हिस्सा अपने इनपुट और आउटपुट वाली ऐसी गणना है जिसे नाम देना उचित होगा?

  6. प्रश्न 6एक प्रोग्राम main में शुरू होता है; main एक फ़ंक्शन g को कॉल करता है, और g एक दूसरे फ़ंक्शन h को कॉल करता है। जब तक h चल रहा है, कौन-सी कॉल जारी हैं?

  7. प्रश्न 7फ़ंक्शन int f(int x) { x = x + 1; return x; } के साथ, int a{3}; int b{f(a)}; std::println("{} {}", a, b); क्या लिखता है?

  8. प्रश्न 8एक प्रोग्राम एक तारीख़ पढ़ता है और उसे उस दिन का सप्ताह-दिवस लिखना है। कौन-सा विघटन गणना को प्रस्तुति से अलग करता है?

  9. प्रश्न 9निम्नलिखित परिभाषाओं में से कौन-सी n!n! को परिभाषित करती है, हर प्राकृत संख्या nn के लिए?

  10. प्रश्न 10int f(int n) { if (n == 0) { return 0; } return n + f(n - 1); } के साथ, std::println("{}", f(3)); क्या लिखता है?