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

सारांश

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

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

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

सेल के रूप में चर

पाठ समस्या से एल्गोरिदम तक में एल्गोरिदम qq और rr जैसे अक्षरों से लिखे गए थे, जो एक मान लेते थे और फिर दूसरा: “rr का मान r−br - b रखें”। गणित में अक्षर एक नियत मान को सूचित करता है, भले ही वह अज्ञात हो; एल्गोरिदम में, इसके विपरीत, वह एक ऐसे स्थान को सूचित करता है जिसकी सामग्री बदलती है। C++ प्रोग्राम को भी यही चाहिए, और वह इसे कंप्यूटर की मेमोरी से प्राप्त करता है।

मुख्य मेमोरी बाइटों का एक लंबा क्रम है, जिनमें से हर एक की अपनी क्रम-संख्या होती है, उसका पता। चर इस मेमोरी का एक टुकड़ा है जिसे प्रोग्राम एक नाम और एक प्रकार देता है। अतः उसके चार गुण होते हैं:

  1. एक नाम, जिससे प्रोग्राम उसे सूचित करता है (count, price);
  2. एक प्रकार, जो तय करता है कि वह कौन-से मान रख सकता है, कितने बाइट घेरता है और कौन-सी संक्रियाएँ स्वीकार करता है: int पूर्णांक रखता है, double दशमलव वाली संख्याएँ;
  3. एक मान, वह जो वह किसी दिए गए क्षण में रखता है, और जो प्रोग्राम के चलते समय बदल सकता है;
  4. मेमोरी में एक स्थान, जिसे कंपाइलर और सिस्टम चुनते हैं और जिसे जानने की प्रोग्राम को लगभग कभी ज़रूरत नहीं होती।

याद रखने लायक छवि एक सेल की है: नाम ऊपर लिखा हुआ, मान भीतर। प्रकार सेल का आकार और रूप है; int की सेल में 2.5 नहीं समाता, जैसे चिट्ठियों के खाने में पार्सल नहीं समाता। इस पाठ के चित्र प्रोग्राम की अवस्था को इसी तरह बनाते हैं, और हर स्टेटमेंट के बाद उसे फिर से बनाते हैं।

यह देखा जा सकता है कि प्रकार आकार तय करता है: संक्रियक sizeof उन बाइटों की संख्या देता है जो कोई चर या प्रकार घेरता है।

C++ प्रोग्राम
#include <print>​int main(){    const int count{12};    const double price{4.5};    std::println("count {} बाइट घेरता है", sizeof(count));    std::println("price {} बाइट घेरता है", sizeof(price));}
आउटपुट
count 4 बाइट घेरता हैprice 8 बाइट घेरता है

यहाँ int 4 बाइट घेरता है, और double 8 बाइट। ये संख्याएँ सभी सिस्टमों में एक-सी नहीं होतीं, और इन्हीं पर निर्भर करता है कि हर प्रकार में कितने अलग-अलग मान समाते हैं; पाठ पूर्णांक और उनका निरूपण और पाठ फ़्लोटिंग-पॉइंट संख्याएँ इसका अध्ययन करेंगे। यहाँ सार ही काफ़ी है: चर का प्रकार उसे घोषित करते समय तय होता है और कभी नहीं बदलता; जो बदलता है वह उसका मान है।