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

सारांश

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

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

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

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

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

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

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

  1. प्रश्न 1पिछली इकाइयों से47 पन्ने 6 लोगों में बराबर-बराबर पूरे हिस्सों में बाँटे जाते हैं, और जो पन्ने एक पूरे चक्कर के लिए काफ़ी नहीं होते, वे रख लिए जाते हैं। हर व्यक्ति को कितने मिलते हैं और कितने रख लिए जाते हैं?

  2. प्रश्न 2पिछली इकाइयों सेईमेल से कोई फ़ाइल संलग्न करके भेजने के चार चरण हैं: A, प्राप्तकर्ता का पता लिखना; B, “भेजें” दबाना; C, एक नया संदेश खोलना; D, फ़ाइल संलग्न करना। उपयुक्त क्रम कौन-सा है?

  3. प्रश्न 3पिछली इकाइयों सेएक फ़ाइल C:\Users\ana\programas\suma.cpp में सहेजी गई है। उसका नाम क्या है, उसका एक्सटेंशन क्या है, और वह किस फ़ोल्डर में है?

  4. प्रश्न 4एक नुस्ख़ा कहता है: “यदि आटा सूखा है, तो एक चम्मच पानी डालो और गूँधो; तब तक दोहराओ जब तक वह सूखा न रहे।” आटे को सूखा न रहने के लिए ठीक तीन चम्मच चाहिए। यह कितनी बार पूछा जाता है कि आटा सूखा है या नहीं?

  5. प्रश्न 5इनमें से किस निर्देश का पालन कोई भी व्यक्ति, या कोई मशीन, ठीक एक ही तरह से कर सकता है?

  6. प्रश्न 6एक प्रोग्राम बिना त्रुटियों और बिना चेतावनियों के कंपाइल होता है, बहुत-से डेटा के साथ ठीक चलता है, और एक ख़ास डेटा के साथ “division by zero” संदेश देकर रुक जाता है। त्रुटि किस क्षण उत्पन्न हुई?

  7. प्रश्न 7Visual Studio Code को उसके C++ एक्सटेंशन के साथ स्थापित किया गया, और टर्मिनल में g++ --version माँगने पर वह उत्तर देता है कि वह g++ को नहीं पहचानता। सबसे संभावित कारण क्या है?

  8. प्रश्न 8कंपाइलर एक संदेश लिखता है जो warning: से शुरू होता है, और उसके बावजूद एक्ज़ीक्यूटेबल फ़ाइल बना देता है। इसका क्या अर्थ है?

  9. प्रश्न 9C++ के किसी प्रोग्राम का निष्पादन कहाँ से शुरू होता है?

  10. प्रश्न 10एक प्रोग्राम int age{}; घोषित करता है, एक आयु पढ़ने के लिए std::cin >> age; चलाता है, और उपयोगकर्ता abc लिखता है। क्या होता है?

इकाई की विषय-वस्तु

इकाई में छह पाठ हैं, जो क्रम से किसी समस्या से एक चालू प्रोग्राम तक का रास्ता तय करते हैं। हर पाठ अपने से पहले वाले पाठ को मानकर चलता है, और पहला पाठ भाषा के बारे में कुछ भी नहीं मानता।

  • समस्या से एल्गोरिदम तक। पाठ्यक्रम बिना कोड के शुरू होता है, क्योंकि एल्गोरिदम प्रोग्राम से पहले आता है। यह पाठ सिखाता है कि किसी समस्या को उसके इनपुट, उसके आउटपुट और दोनों के बीच के संबंध (पूर्व-शर्त और पश्च-शर्त) से कैसे विनिर्दिष्ट करें; किसी एल्गोरिदम का क्रमांकित चरणों में, बिना अस्पष्टता के, वर्णन कैसे करें; ट्रेस तालिका के साथ उसे हाथ से कैसे चलाएँ; उसमें अनुक्रम, निर्णय और पुनरावृत्ति को कैसे पहचानें; और यह कैसे सिद्ध करें कि कोई पुनरावृत्ति समाप्त होती है, एक ऐसी मात्रा के सहारे जो हर चक्कर में घटती है।
  • प्रोग्राम, कंपाइलर और C++। मशीन के लिए लिखा गया एल्गोरिदम एक प्रोग्राम है, और C++ का प्रोग्राम जैसा लिखा जाता है वैसा ही निष्पादित नहीं होता: प्रीप्रोसेसर, कंपाइलर और लिंकर उसे एक्ज़ीक्यूटेबल फ़ाइल में बदलते हैं। यह पाठ इन तीन चरणों से गुज़रता है, जो कंपाइल करते समय पकड़ा जाता है उसे उससे अलग करता है जो केवल निष्पादन के समय प्रकट होता है, कंपाइल्ड मॉडल की इंटरप्रेटेड मॉडल से तुलना करता है, और भाषा के मानकों को समय में स्थित करता है, C++23 तक, जिसका उपयोग पाठ्यक्रम करता है, और C++26 तक, जिसका कंपाइलरों में कार्यान्वयन अभी जारी है।
  • Windows, macOS और Linux पर परिवेश स्थापित करना। तीन पूरी मार्गदर्शिकाएँ, हर सिस्टम के लिए एक, C++23 में सक्षम कंपाइलर और Visual Studio Code संपादक को उसके C++ एक्सटेंशन के साथ स्थापित करने, एक जाँच प्रोग्राम से यह देखने कि सब कुछ काम करता है, और आम समस्याएँ सुलझाने के लिए: वह कंपाइलर जिसे टर्मिनल नहीं ढूँढ पाता, पुराना संस्करण, और वह मानक जो माँगा नहीं गया।
  • कंपाइल करना, चलाना और कॉन्फ़िगर करना। संपादित करने, सहेजने, कंपाइल करने, चलाने और पढ़ने का कार्य-चक्र, टर्मिनल से और संपादक से, पाठ्यक्रम की कंपाइल कमांड के साथ। यह पाठ त्रुटियों को, जो एक्ज़ीक्यूटेबल फ़ाइल बनने से रोकती हैं, चेतावनियों से अलग करता है, जो संदिग्ध कोड की ओर इशारा करती हैं; डिटेक्टरों (sanitizers) को सक्रिय करता है, यानी मेमोरी त्रुटियों के डिटेक्टर AddressSanitizer को और अपरिभाषित व्यवहार के डिटेक्टर UndefinedBehaviorSanitizer को, जो प्रोग्राम के चलते समय उस पर नज़र रखते हैं; और समझाता है कि आउटपुट में देवनागरी अक्षरों की जगह अजीब चिह्न क्यों दिखते हैं।
  • प्रोग्राम की बनावट। न्यूनतम प्रोग्राम, एक-एक हिस्सा करके: इन्क्लूड निर्देश और हेडर, फ़ंक्शन main और एग्ज़िट कोड, नेमस्पेस std, स्टेटमेंट, ब्लॉक और टिप्पणियाँ। यह पाठ सिखाता है कि कंपाइलर के संदेशों को पहले संदेश से पढ़ते हुए संरचना की त्रुटियाँ कैसे सुधारें, और पाठ्यक्रम की स्टाइल गाइड तय करता है।
  • इनपुट, आउटपुट और त्रुटियाँ। प्रोग्राम बाहरी दुनिया से संवाद करता है: वह std::print और std::println से लिखता है, चौड़ाई और दशमलव स्थानों के लिए फ़ॉर्मैट विनिर्देशों के साथ, और std::cin से पढ़ता है। यह पाठ दिखाता है कि जब इनपुट अपेक्षित रूप में नहीं होता तो क्या होता है और पठन की जाँच कैसे की जाती है, और त्रुटियों को उनके क्षण के अनुसार वर्गीकृत करके इकाई को समाप्त करता है: कंपाइल त्रुटि, लिंक त्रुटि, रनटाइम त्रुटि और तार्किक त्रुटि।

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

जो पहले से ज्ञात माना गया है

पाठ्यक्रम प्रोग्रामिंग के किसी पूर्व अनुभव को नहीं मानता। इसके बजाय, वह तीन कौशल मानता है, जिन्हें अभी दोहरा लेना उचित है, यदि प्रवेश मूल्यांकन में कोई संदेह दिखा हो।

पहला है स्कूली अंकगणित: पूर्णांकों और दशमलव संख्याओं पर संक्रियाएँ करना, संक्रियाओं के क्रम का पालन करना (कोष्ठक न हों तो गुणा और भाग, जोड़ और घटाव से पहले) और, सबसे बढ़कर, पूर्णांक विभाजन का भागफल और शेषफल निकालना। यह अंतिम बात जितनी दिखती है उससे अधिक महत्त्वपूर्ण है। 47 पन्ने 6 लोगों में बाँटने पर हर एक को 7 मिलते हैं और 5 बचते हैं, जिसे 47=6⋅7+547 = 6 \cdot 7 + 5 लिखा जाता है, जहाँ शेषफल 55 भाजक 66 से छोटा है। C++ में भागफल के लिए एक संक्रियक है और शेषफल के लिए दूसरा, और पूर्णांकों के साथ होने वाली गणनाओं का एक बड़ा भाग (सेकंडों को घंटों में बदलना, किसी संख्या के अंकों को अलग करना, यह तय करना कि कोई संख्या सम है या नहीं) इन्हीं पर आ टिकता है। जो पूर्णांक विभाजन को विस्तार से पढ़ना चाहे, वह इसे इसकी उपपत्ति सहित बीजगणित और ज्यामिति I: संख्याएँ, फलन और समतल ज्यामिति पाठ्यक्रम में पाएगा; यहाँ इसकी गणना करना आना ही काफ़ी है।

दूसरा है लिखित निर्देशों का अक्षरशः पालन करने की आदत, और यह पहचानना कि कब कोई निर्देश यह जानने के लिए काफ़ी नहीं कि क्या करना है। यह ज्ञान की बात नहीं, बल्कि दृष्टिकोण की बात है: “स्वादानुसार नमक डालो” पढ़कर ध्यान देना कि यह निर्देश उसे निष्पादित करने वाले पर निर्भर है। इकाई का पहला पाठ इस दृष्टिकोण को पद्धति में बदल देता है।

तीसरा है कंप्यूटर का बुनियादी उपयोग: एक फ़ोल्डर बनाना, उसमें चुने हुए नाम से एक फ़ाइल सहेजना, नाम के एक्सटेंशन (.cpp, .txt, .exe) को पहचानना, और यह जानना कि हर फ़ाइल किस फ़ोल्डर में है। अभी से सिस्टम को इस तरह कॉन्फ़िगर कर लेना उचित है कि वह एक्सटेंशन दिखाए, जिन्हें कुछ सिस्टम, जैसे Windows, डिफ़ॉल्ट रूप से छिपा देते हैं: स्रोत कोड suma.cpp और एक्ज़ीक्यूटेबल फ़ाइल suma.exe बहुत अलग फ़ाइलें हैं, और उन्हें आपस में उलझा देना बेतुकी त्रुटियों का स्रोत है। इकाई टर्मिनल का उपयोग भी सिखाती है, इसलिए उसे पहले से जानना ज़रूरी नहीं; बटन दबाने के बजाय कमांड लिखने को तैयार रहना काफ़ी है। अंत में, प्रोग्राम स्थापित करने के लिए अपने कंप्यूटर पर ऐसा कर पाना ज़रूरी है; स्थापना वाला पाठ उनके लिए एक ऑनलाइन विकल्प बताता है जो ऐसा नहीं कर सकते।

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

वह समस्या जिसे इकाई हल करती है

हाथ से किया जा सकने वाला परिकलन अभी प्रोग्राम नहीं है। दोनों के बीच की दूरी ही वह है जिसे पार करना इकाई सिखाती है, और एक सरल समस्या से उसे मापा जा सकता है।

उदाहरणघंटों, मिनटों और सेकंडों में एक अवधि

एक स्टॉपवॉच हर गतिविधि की अवधि को सेकंडों की संख्या के रूप में दर्ज करती है, उदाहरण के लिए 7384, और हम उसे घंटों, मिनटों और सेकंडों के सामान्य रूप में लिखना चाहते हैं, जिसमें मिनट और सेकंड हमेशा दो अंकों में हों: 2:03:04। हाथ से, यह गणना विभाजनों की एक शृंखला है: 7384=3600⋅2+1847384 = 3600 \cdot 2 + 184, जिससे 2 घंटे और 184 सेकंड निकलते हैं; 184=60⋅3+4184 = 60 \cdot 3 + 4, जिससे 3 मिनट और 4 सेकंड निकलते हैं। एक अवधि के लिए यह एक मिनट में हो जाता है। पर किसी सूची की हज़ार अवधियों के लिए हाथ से गणना लंबी और त्रुटि-प्रवण है, और यह काम इस योग्य है कि इसे कोई मशीन निष्पादित करे।

फिर भी, मशीन ऊपर दी गई व्याख्या ग्रहण नहीं कर सकती। वह किसी प्रोग्रामिंग भाषा में लिखा टेक्स्ट ग्रहण करती है, और वह टेक्स्ट लिखने के लिए पहले तीन प्रश्न हल कर लेने चाहिए जिन्हें हाथ की गणना अनकहा छोड़ देती थी। पहला है विनिर्देश: क्या भीतर आता है (सेकंडों की एक पूर्णांक संख्या, जो ऋणात्मक न हो), क्या बाहर आता है (तीन पूर्णांक, घंटे, मिनट और सेकंड) और कौन-सा संबंध उन्हें जोड़ता है: यदि tt कुल योग है, तो t=3600h+60m+st = 3600 h + 60 m + s, जहाँ 0≤m<600 \leq m < 60 और 0≤s<600 \leq s < 60। दूसरा है एल्गोरिदम: वे सटीक चरण जो किसी भी स्वीकार्य इनपुट के लिए वह आउटपुट उत्पन्न करते हैं।

  1. hh का मान वह भागफल रखें जो tt को 36003600 से भाग देने पर मिलता है।
  2. mm का मान वह भागफल रखें जो 6060 से भाग देने पर मिलता है, जहाँ भाज्य वह शेषफल है जो tt को 36003600 से भाग देने पर मिलता है।
  3. ss का मान वह शेषफल रखें जो tt को 6060 से भाग देने पर मिलता है।
  4. hh, कोलन, दो अंकों में mm, कोलन और दो अंकों में ss लिखें।

तीसरा है एल्गोरिदम को C++ में, भाषा जिस सटीक रूप की माँग करती है उसमें, लिखना, और उपयुक्त उपकरणों से उसका एक्ज़ीक्यूटेबल फ़ाइल में अनुवाद करना। नीचे दिया गया प्रोग्राम यही करता है। उसमें बहुत-सी चीज़ें हैं जो अभी समझाई नहीं गई हैं: चर (पाठ 2.1), संक्रियक / और %, जो पूर्णांक विभाजन का भागफल और शेषफल देते हैं (पाठ 3.1), std::cin से पठन और फ़ॉर्मैट विनिर्देश (पाठ 1.6); इस प्रोग्राम का विनिर्देश {:02}, जो किसी संख्या को दो स्थानों में लिखता है और बाईं ओर शून्य भरता है, उस चौड़ाई का एक भिन्न रूप है जिसे वह पाठ सिखाता है और जिसका उपयोग पाठ 3.1 करेगा। अभी इसमें एल्गोरिदम के चार चरण पहचान लेना काफ़ी है।

C++ प्रोग्राम
#include <iostream>#include <print>​int main(){    int total{};  // चरों की व्याख्या पाठ 2.1 में होगी    std::print("सेकंडों में अवधि: ");    std::cin >> total;    const int hours{total / 3600};    const int minutes{total % 3600 / 60};    const int seconds{total % 60};    std::println("{} s = {}:{:02}:{:02}", total, hours, minutes, seconds);}
प्रोग्राम का इनपुट
7384
आउटपुट
सेकंडों में अवधि: 7384 s = 2:03:04

पंक्तियाँ 9 से 11 चरण 1 से 3 हैं, और पंक्ति 12 चरण 4 है। परिणाम का हाथ से निकाले गए परिणाम से मेल खाना संयोग नहीं, बल्कि वह जाँच है जिसका हर प्रोग्राम हक़दार है: पहले उसे ऐसे डेटा से आज़माना जिसका उत्तर ज्ञात हो।

प्रोग्राम समस्या हल कर देता है, पर इकाई उस पर संदेह करना भी सिखाती है। यदि उपयोगकर्ता संख्या के बजाय abc लिखे, तो पठन विफल होता है, total शून्य पर रहता है, और प्रोग्राम बिना किसी ख़तरे के संकेत के लिख देता है कि अवधि 0:00:00 है: सच जैसा दिखने वाला एक झूठा निष्कर्ष। यदि वह कोई ऋणात्मक अवधि लिखे, तो विनिर्देश यह नहीं बताता कि क्या होना चाहिए, और परिणाम का कोई अर्थ नहीं होता। यदि ग़लती से total / 360 लिखा जाए, जबकि होना चाहिए total / 3600, तो प्रोग्राम कंपाइल होता है, चलता है और ग़लत परिणाम देता है, और कोई उपकरण इसकी चेतावनी नहीं देता। इनमें से हर दोष त्रुटि की एक अलग श्रेणी का है, जो अलग क्षण में पकड़ी जाती है और अलग ढंग से खोजी जाती है; इकाई का अंतिम पाठ उन्हें वर्गीकृत करता है। इससे यह निकलता है कि इकाई जिस समस्या को हल करती है वह केवल यह प्रोग्राम लिखना नहीं, बल्कि यह जानना है कि वह क्यों काम करता है, किस डेटा के साथ काम करना बंद कर देता है, और कौन-सा उपकरण हर दोष की चेतावनी देगा, या नहीं देगा।

अतः इकाई के अंत में विद्यार्थी इस तरह के प्रोग्राम लिख, कंपाइल कर और चला सकेगा: कुछ इनपुट डेटा, क्रम से कुछ गणनाएँ और फ़ॉर्मैट के साथ लिखे कुछ परिणाम। वह अभी C++ में निर्णय नहीं ले सकेगा, न स्टेटमेंट दोहरा सकेगा (हालाँकि हिंदी में लिखे एल्गोरिदम में ऐसा कर सकेगा), न ही हर डेटा का प्रकार सोच-समझकर चुन सकेगा; यह आगे की इकाइयाँ लाती हैं।

यह कहाँ ले जाती है

इकाई पाठ्यक्रम की दहलीज़ है। जो इसमें बिना समझाए इस्तेमाल होता है, वह बाद में, इस क्रम में, समझाया जाता है। इकाई 2, “डेटा और प्रकार”, चरों को और यह कि वे मेमोरी में कैसे रखे जाते हैं, पूर्णांकों की सीमाओं को (और यह कि एक सही गणना भी ओवरफ़्लो क्यों हो सकती है), दशमलव वाली संख्याओं के पूर्णांकन को और प्रकारों के बीच रूपांतरणों को समझाती है। इकाई 3, “व्यंजक और संक्रियक”, C++ के अंकगणित को समझाती है, ऋणात्मक संख्याओं के भागफल और शेषफल के साथ, और शर्तों के तर्क को और उसे भी जो मानक किसी व्यंजक में अपरिभाषित छोड़ देता है। इकाई 4, “नियंत्रण प्रवाह”, उन निर्णयों और पुनरावृत्तियों को C++ में ले आती है जिन्हें पहला पाठ हिंदी में लिखता है, और सिखाती है कि कैसे सिद्ध करें कि कोई लूप सही है और समाप्त होता है। इकाई 5 प्रोग्रामों को फ़ंक्शनों में विघटित करती है; इकाई 6 संयुक्त डेटा (ऐरे, वेक्टर, तालिकाएँ और रिकॉर्ड) को, खोजने और क्रमबद्ध करने के एल्गोरिदमों तथा उनकी लागत के साथ, प्रस्तुत करती है; इकाई 7 टेक्स्ट, इनपुट के मज़बूत पठन और फ़ाइलों से संबंधित है; और इकाई 8 कई फ़ाइलों वाले प्रोग्रामों, व्यवस्थित परीक्षण और डिबगर से संबंधित है।

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