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

सारांश

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

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

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

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

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

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

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

  1. प्रश्न 1पिछली इकाइयों सेmain से पहले लिखी गई पंक्ति int gcd(int a, int b); क्या करती है?

  2. प्रश्न 2पिछली इकाइयों सेफ़ंक्शन toBase(n, base) की पूर्व-शर्त है “n >= 0 और 2 <= base <= 10”। इसकी गारंटी किसे देनी चाहिए?

  3. प्रश्न 3पिछली इकाइयों सेपाठ 6.4 का फ़ंक्शन binarySearch(values, target) target की कोई एक स्थिति लौटाता है, या वह न हो तो values.size()। इसकी पूर्व-शर्त क्या है?

  4. प्रश्न 4पिछली इकाइयों सेएक प्रोग्राम बिना त्रुटियों के कंपाइल होता है, और एक्ज़ीक्यूटेबल बिल्ड करते समय undefined reference to `tetrahedral(int)' दिखता है। कौन-सा चरण विफल हुआ?

  5. प्रश्न 5पिछली इकाइयों सेमामलों के इन समूहों में से कौन-सा द्विआधारी खोज को सबसे अच्छी तरह परखता है?

  6. प्रश्न 6पिछली इकाइयों सेint a{0}; int b{1}; for (int i{0}; i < 4; ++i) { const int t{a + b}; a = b; b = t; } के बाद a और b के मान क्या हैं?

  7. प्रश्न 7पिछली इकाइयों सेstd::vector<int> v{1, 2}; std::println("{}", v[2]); पाठ्यक्रम के विकल्पों के साथ क्यों रुक जाता है, और केवल -O2 के साथ, डिटेक्टरों के बिना, कंपाइल करने पर कोई भी संख्या क्यों लिख सकता है?

  8. प्रश्न 8इन्क्लूड गार्ड वाला एक हेडर double scale(double x) को, inline के बिना, परिभाषित करता है (केवल घोषित नहीं), और main.cpp तथा report.cpp दोनों उसे इन्क्लूड करते हैं। प्रोग्राम बिल्ड करने पर क्या होता है?

  9. प्रश्न 9एक फ़ंक्शन सावधानी से चुने गए पाँच सौ स्वचालित परीक्षण पास करता है। क्या कहा जा सकता है?

  10. प्रश्न 10एक लूप के भीतर पंक्ति total += k; पर एक ब्रेकपॉइंट है, और प्रोग्राम वहाँ तीसरी बार रुकता है। हाइलाइट की गई पंक्ति क्या बताती है?