पुस्तकालय के साथ काम करने के लिए दस्तावेज़ीकरण। मॉस्को स्टेट यूनिवर्सिटी ऑफ़ प्रिंटिंग आर्ट्स कार्यक्रम संरचना: ब्लॉक

💖क्या आपको यह पसंद है?लिंक को अपने दोस्तों के साथ साझा करें

मॉड्यूलर प्रोग्राम संरचना

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

मॉड्यूल के आंतरिक कनेक्शन को मजबूत करना;

मॉड्यूल के बीच संबंध कमजोर करना।

इस संरचना का उपयोग प्रोग्राम मॉड्यूल की कार्यात्मक स्वतंत्रता सुनिश्चित करने के लिए किया जाता है, अर्थात। मॉड्यूल कार्यों का अधिकतम पृथक्करण। इसके कारण, मॉड्यूल की आंतरिक कनेक्टिविटी बढ़ जाती है और उनका बाहरी सामंजस्य कमजोर हो जाता है।

प्रोग्राम मॉड्यूल में मजबूत आंतरिक सुसंगतता होती है, क्योंकि उनमें ऐसी विधियाँ होती हैं जो डेटा के एक विशिष्ट सेट को संसाधित करती हैं और उनका अपना कार्यात्मक उद्देश्य होता है।

लाइब्रेरी की मॉड्यूलर संरचना चित्र E.1 में परिशिष्ट E में प्रस्तुत की गई है, चित्र E.2 में विज़ुअलाइज़र प्रस्तुत किया गया है।

परिक्षण

सॉफ़्टवेयर डिबगिंग के सभी चरणों में, परीक्षण सबसे अधिक समय लेने वाला और महंगा है। विशिष्ट सॉफ़्टवेयर बनाते समय, परीक्षण में कुल समय का लगभग 40% और सॉफ़्टवेयर की कुल लागत का 40% से अधिक खर्च होता है।

सॉफ़्टवेयर की विश्वसनीयता में सुधार के लिए परीक्षण आवश्यक है, अन्यथा यह आवश्यक नहीं है। त्रुटियों को दूर करके विश्वसनीयता में सुधार किया जा सकता है। इसलिए, किसी प्रोग्राम की सत्यता सिद्ध करने के लिए परीक्षण करना निरर्थक है। परीक्षण त्रुटियों की पहचान कर सकता है, उन्हें ठीक कर सकता है और इस प्रकार सॉफ़्टवेयर की विश्वसनीयता बढ़ा सकता है।

परियोजना के कार्यान्वयन के दौरान, प्रत्येक कक्षा का गहन परीक्षण किया गया, जिसके दौरान कार्यक्रम पाठ का औपचारिक विश्लेषण किया गया, जिससे प्रोग्रामिंग के शुरुआती चरणों में बड़ी संख्या में त्रुटियों की पहचान करना और सत्यापन करना संभव हो गया। कुछ परीक्षण डेटा सेटों का उपयोग करके प्रोग्राम का सही संचालन। साथ ही, स्रोत डेटा के प्रत्येक संयोजन को नियंत्रित किया गया, साथ ही आवश्यक परिणाम के साथ प्रत्येक स्रोत डेटा सेट के परिणामों का अनुपालन भी किया गया।

प्रलेखन

तकनीकी कार्य

कई परियोजनाओं में भूदृश्यों के उपयोग की आवश्यकता होती है। यह सॉफ़्टवेयर पैकेज आपको त्रि-आयामी परिदृश्य उत्पन्न करने और उसे मॉनिटर स्क्रीन पर प्रदर्शित करने की अनुमति देता है।

6.1.1 विकास का उद्देश्य

सॉफ़्टवेयर पैकेज को परिदृश्य उत्पन्न करने और प्रदर्शित करने के लिए डिज़ाइन किया गया है।

6.1.2 किसी प्रोग्राम या सॉफ़्टवेयर उत्पाद के लिए आवश्यकताएँ

उपयोगकर्ता के लिए, एप्लिकेशन को निम्नलिखित क्षमताएं प्रदान करनी होंगी:

1) इनपुट डेटा दर्ज करने की क्षमता, जैसे न्यूनतम और अधिकतम ऊंचाई, मानचित्र आयाम, पर्वत ढलान;

2) भूदृश्यों का निर्माण;

3) तीसरे पक्ष के कार्यक्रमों में उपयोग के लिए परिदृश्य को सहेजना;

4) स्क्रीन पर एक चित्र प्रदर्शित करके परिणामी परिणाम का प्रदर्शन।

6.1.3 विश्वसनीयता आवश्यकताएँ

सॉफ़्टवेयर पैकेज को प्रकार के अनुपालन के लिए इनपुट जानकारी की जांच करनी चाहिए, स्वीकार्य मूल्यों की सीमा से संबंधित और संरचनात्मक शुद्धता के अनुपालन के अलावा, विज़ुअलाइज़र को आवश्यक हार्डवेयर और सॉफ़्टवेयर के अनुपालन के लिए लॉन्च से पहले उपकरण की जांच करनी चाहिए; त्रुटियों के मामले में, सूचनात्मक निदान संदेश प्रदर्शित करने की संभावना प्रदान करें।

6.1.4 तकनीकी साधनों की संरचना और मापदंडों के लिए आवश्यकताएँ

प्रोग्राम के न्यूनतम कामकाज के लिए, निम्नलिखित की आवश्यकता है: एक पर्सनल कंप्यूटर, 2 जीबी रैम, 50 एमबी खाली हार्ड डिस्क स्थान; कीबोर्ड और माउस।

एप्लिकेशन के इष्टतम संचालन के लिए, न्यूनतम 3GB RAM की आवश्यकता होती है।

6.1.5 सूचना और सॉफ्टवेयर अनुकूलता के लिए आवश्यकताएँ

प्रोग्राम को विंडोज 7 या उच्चतर ऑपरेटिंग सिस्टम के तहत संचालित होना चाहिए; डायरेक्टएक्स 11; विज़ुअल सी++2015; .नेट फ्रेमवर्क 4.5 और उच्चतर।

6.1.6 सॉफ़्टवेयर दस्तावेज़ीकरण के लिए आवश्यकताएँ

प्रोग्राम के दस्तावेज़ में लाइब्रेरी के साथ काम करने के लिए उपयोगकर्ता मैनुअल और दस्तावेज़ शामिल होना चाहिए।

उपयोगकर्ता गाइड

प्रोग्राम कोshell.exe फ़ाइल चलाकर लॉन्च किया गया है, लॉन्च के बाद आपको चित्र 6.1 में दिखाई गई विंडो दिखाई देगी।

"फ़ाइल" मेनू पर कॉल करें; आप डेटा को मानक मानों पर रीसेट करने के लिए "साफ़ करें" बटन का उपयोग कर सकते हैं। "Save as bmp" बटन का उपयोग करके ऊंचाई मानचित्र को bmp प्रारूप में सहेजें। "ओबीजे के रूप में सहेजें" बटन का उपयोग करके आप परिदृश्य को ओबीजे प्रारूप में सहेज सकते हैं। "व्यू" बटन पर क्लिक करने पर विज़ुअलाइज़र लॉन्च हो जाएगा, जिसमें आप इसे तीन आयामों में देख सकते हैं, जैसा कि चित्र 6.2 में दिखाया गया है।

चित्र 6.1 - प्रोग्राम विंडो


चित्र 6.2 - प्रोग्राम विंडो

विज़ुअलाइज़ेशन के लिए प्रोग्राम को कॉन्फ़िगर करने के लिए "सेटिंग्स" मेनू को कॉल करें, आप "प्रोग्राम सेटिंग्स" बटन का उपयोग कर सकते हैं। "विज़ुअलाइज़ेशन सेटिंग्स" बटन का उपयोग करके आप विज़ुअलाइज़र को कॉन्फ़िगर कर सकते हैं।

विज़ुअलाइज़र में मूवमेंट कीबोर्ड बटन w, a, s, d का उपयोग करके किया जाता है, जो आगे, बाएँ, दाएँ, पीछे की दिशाओं के अनुरूप होते हैं।

कैमरे को माउस से नियंत्रित किया जाता है।

पुस्तकालय के साथ काम करने के लिए दस्तावेज़ीकरण

लाइब्रेरी के साथ काम करने के लिए, आपको लैंडस्केप जेनरेटर.dll फ़ाइल को अपने प्रोजेक्ट से कनेक्ट करना होगा। आपको अपने प्रोजेक्ट में लैंडस्केप जेनरेटर वर्ग का एक उदाहरण घोषित करना होगा। वर्ग में परिदृश्य मापदंडों को बदलने के लिए निम्नलिखित तरीके शामिल हैं, जैसे कि चौड़ाई, लंबाई, न्यूनतम और अधिकतम ऊंचाई, पर्वतीयता, इलाके का निर्माण, परिदृश्य को बिटमैप के रूप में वापस करना, परिदृश्य को ओबीजे और बीएमपी प्रारूप में सहेजना।

61.1K

वेबसाइटों का भी अपना ढांचा होता है। लेकिन डॉक्टरों से इसकी विशेषताओं के बारे में पूछना बेकार है। वहीं पशु चिकित्सकों को भी इस स्थल की संरचना के बारे में जानकारी नहीं है। इसके बारे में केवल लेआउट डिजाइनर ही जानते हैं। भविष्य के संसाधन के ढांचे की संरचना उन पर निर्भर करती है। और उसके कंकाल की हड्डियों को बनाने का मुख्य तरीका ब्लॉक लेआउट है।

वेबसाइट लेआउट आरंभ करने वालों के लिए एक शिल्प है

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


वेबसाइट का लेआउट बनाने के बाद उसके विकास का अगला चरण लेआउट होता है। लेआउट डिज़ाइनर का कार्य HTML कोड और CSS तालिकाओं का उपयोग करके भविष्य की साइट के ढांचे को आभासी दुनिया में स्थानांतरित करना है। सीधे शब्दों में कहें, तो संसाधन के आयामों और अनुपातों को ऐसे रूप में स्थानांतरित करें जिसे ब्राउज़र समझ सके।

HTML कोड का उपयोग करके लेआउट प्रक्रिया के दौरान, साइट का "कंकाल" भागों में टूट जाता है। और सीएसएस का उपयोग कर ( व्यापक शैली पत्रक) इसकी "हड्डियों" का आकार, रंग और स्थान निर्दिष्ट हैं।

लेआउट कई प्रकार के होते हैं:

I. सारणीबद्ध - पहले लेआउट की मुख्य विधि थी। टेबल लेआउट में, साइट की संरचना सेट करने के लिए एक टैग का उपयोग किया जाता है

और उसके चाइल्ड टैग। तालिकाओं का उपयोग करके लेआउट आपको सभी डिज़ाइन तत्वों को एक दूसरे के सापेक्ष सबसे आनुपातिक रूप से व्यवस्थित करने की अनुमति देता है। लेकिन साथ ही, यह कोड बहुत बड़ा हो जाता है:


इसके अलावा, सारणीबद्ध कोड के मुख्य नुकसान में इसकी लंबी लोडिंग समय और खोज इंजन द्वारा सामग्री की खराब अनुक्रमणिका शामिल है।

तालिका-आधारित पृष्ठ की सामग्री तब तक प्रदर्शित नहीं की जाएगी जब तक कि सारा डेटा लोड न हो जाए। ब्लॉक लेआउट आपको प्रत्येक लोड किए गए तत्व को अलग से प्रदर्शित करने की अनुमति देता है।

तालिका पृष्ठों की ख़राब अनुक्रमणिका को विभिन्न तालिका कक्षों में स्थित पाठ के ब्लॉकों के बीच बड़े अंतराल द्वारा समझाया गया है।

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

द्वितीय. ब्लॉक-आधारित वर्तमान में मुख्य लेआउट विधि है। सारणीबद्ध लेआउट के विपरीत, ब्लॉक लेआउट के कई फायदे हैं:

  • HTML कोड से तत्व शैली को अलग करना;
  • एक परत को दूसरे पर ओवरले करने की क्षमता - यह सुविधा तत्वों की स्थिति को बहुत सुविधाजनक बनाती है।
  • खोज इंजनों द्वारा बेहतर अनुक्रमण;
  • परस्पर स्वतंत्र तत्वों से युक्त पृष्ठ की उच्च लोडिंग गति;
  • दृश्य प्रभाव बनाने में आसानी ( ड्रॉप-डाउन मेनू, सूचियाँ, टूलटिप्स).

ब्लॉक लेआउट का मुख्य नुकसान एक निश्चित " अस्पष्टता»विभिन्न ब्राउज़रों द्वारा इसके कोड को समझना। इसलिए, HTML पेजों को अक्सर विशेष हैक्स का उपयोग करके "समाप्त" करना पड़ता है।

ब्लॉक-आधारित लेआउट के आगमन के साथ, "क्रॉस-ब्राउज़र संगतता" की अवधारणा का जन्म हुआ। विभिन्न ब्राउज़रों में एक ही तत्व के प्रदर्शन में अंतर के कारण, लेआउट डिजाइनरों को कोड के पूरे टुकड़े (हैक) को मुख्य HTML में डालना पड़ता है।

यह हैक अत्यधिक विशिष्ट है और केवल एक ब्राउज़र में गलत डिस्प्ले की समस्या को हल करता है।

ब्लॉक लेआउट में प्रयुक्त मुख्य तत्व टैग है

. इस टैग द्वारा अलग किए गए कोड के अनुभाग को परत कहा जाता है। सभी स्टाइल निर्णयों को HTML कोड की सीमाओं से परे कैस्केडिंग स्टाइल शीट में ले जाया जाता है। उन तक पहचानकर्ताओं या सीएसएस कक्षाओं के माध्यम से पहुंचा जा सकता है:

ब्लॉक लेआउट कैसे काम करता है?

लेआउट की शुरुआत से पहले, तैयार PSD वेबसाइट लेआउट को एक ग्राफिक संपादक में ब्लॉक (परतों) में काट दिया जाता है। कट आउट पृष्ठभूमि छवियों को एक अलग फ़ोल्डर में रखा गया है, जिसे प्रत्येक परत से अलग से जोड़ा जाएगा:


उदाहरण के लिए, आइए फ़ोटोशॉप में बनाए गए इस वेबसाइट लेआउट को लें। सबसे पहले, एक टेक्स्ट एडिटर में, एक div का उपयोग करके, हम भविष्य के संसाधन की संरचना निर्धारित करते हैं और प्रत्येक परत को अपना स्वयं का आईडी चयनकर्ता निर्दिष्ट करते हैं। इसका परिणाम निम्नलिखित संरचना में होता है:

फिर लाइन के साथ html में तैयार वेबसाइट संरचना पर जाएं सीएसएस फ़ाइल संलग्न करें. फिर हम इसमें प्रत्येक परत का शैली विवरण, अन्य तत्वों के सापेक्ष स्थिति और उसके आयाम जोड़ते हैं।

आप भाषा के तकनीकी दस्तावेज़ से सीएसएस के सभी गुणों के बारे में अधिक जान सकते हैं।

Index.html उदाहरण के लिए पूरा कोड है:

ब्लॉक लेआउट उदाहरण

सामग्री



style.css फ़ाइल की सामग्री:

बॉडी (पृष्ठभूमि: #f3f2f3; रंग: #000000; फ़ॉन्ट-परिवार: ट्रेबुचेट एमएस, एरियल, टाइम्स न्यू रोमन; फ़ॉन्ट-आकार: 12px; ) #कंटेनर (पृष्ठभूमि:#99CC99; मार्जिन: 30px ऑटो; चौड़ाई: 900px; ऊंचाई : 600px; ) #हेडर (पृष्ठभूमि: #66CCCC; ऊँचाई: 100px; चौड़ाई: 900px; ) #नेविगेशन (पृष्ठभूमि: #FF9999; चौड़ाई: 900px; ऊँचाई: 20px; ) #मेनू (पृष्ठभूमि: #99CC99; फ़्लोट: बाएँ; चौड़ाई: 200px; ऊँचाई: 400px; ) #सामग्री (पृष्ठभूमि: #d2d0d2; फ़्लोट: दाएँ; चौड़ाई: 700px; ऊँचाई: 400px; ) #स्पष्ट (स्पष्ट:दोनों; ) #फ़ुटर (पृष्ठभूमि: #0066FF; ऊँचाई: 80px; चौड़ाई: 900px )

ब्राउज़र विंडो में ब्लॉक वेबसाइट लेआउट का हमारा उदाहरण इस तरह दिखता है।

जैसा कि ऊपर बताया गया है, कार्य निकाय हो सकता है अवरोध पैदा करनाया यौगिक संचालक. अवरोध पैदा करनावस्तुओं और ऑपरेटरों के विवरण के संग्रह में कैसे शामिल किया जा सकता है नेस्टब्लॉक, और फिर प्रकट होते हैं बाहरीऔर स्थानीयब्लॉक के संबंध में चर, साथ ही वैश्विकप्रोग्राम फ़ंक्शंस के बाहर वर्णित चर।

गुणों के अतिरिक्त नामऔर प्रकारवस्तु की दो और विशेषताएँ हैं - दायराऔर जीवनभर, परिभाषित भंडारण वर्ग (मेमोरी)डिफ़ॉल्ट या प्रोग्रामर द्वारा निर्दिष्ट। दायरा (दृश्यता)प्रोग्राम टेक्स्ट का एक भाग है जिसमें हम देखते हैंऔर शायद इस्तेमाल किया गयायह वस्तु. एक संलग्न ब्लॉक में घोषित वेरिएबल नेस्टेड ब्लॉक के बाहरी होते हैं और उन्हें एक अपवाद के साथ दायरे में शामिल करते हैं - आंतरिकचर है प्राथमिकताऊपर बाहरीवैरिएबल को बंद करके, और यहां तक ​​कि आंतरिक वैरिएबल के प्रकार को भी ओवरराइड किया जा सकता है।

जीवनभरवह समय अंतराल है जिसके दौरान किसी वस्तु (चर या फ़ंक्शन) का मान उपलब्धप्रोग्राम के कुछ भाग में उपयोग के लिए. एक वेरिएबल का जीवनकाल हो सकता है स्थानीयया वैश्विक. वस्तु, साथ वैश्विकजीवनकाल, इसमें मेमोरी आवंटित होती है और प्रोग्राम के संपूर्ण निष्पादन समय के दौरान एक निश्चित मान होता है। के लिए स्थानीयऑब्जेक्ट को हाइलाइट किया गया है नयाहर बार एक ब्लॉक दर्ज करने पर मेमोरी क्षेत्र और मुक्तब्लॉक से बाहर निकलते समय, और वस्तु का मूल्य भाड़ में जाओ. किसी फ़ंक्शन में वर्णित वेरिएबल, जिनमें औपचारिक पैरामीटर भी शामिल हैं स्थानीयदायरा। कार्यक्रम में कार्य स्वयं हैं बाहरीएक दूसरे के संबंध में और है वैश्विकजीवनकाल, अर्थात्, वे कार्यक्रम के संपूर्ण निष्पादन समय के दौरान मौजूद रहते हैं।

A C प्रोग्राम एक अलग प्रोग्राम मॉड्यूल है, जिसे ".c" एक्सटेंशन के साथ स्रोत फ़ाइल के रूप में बाहरी मेमोरी में स्वरूपित और लिखा जाता है, उदाहरण के लिए, myprog.c।

प्रोग्राम मॉड्यूल की संरचना और उसके ऑब्जेक्ट के दायरे को निम्नलिखित चित्र द्वारा दर्शाया जा सकता है:

/* वैश्विक वस्तुएं और विवरण */ /* दायरा */

प्रीप्रोसेसर निर्देश वैश्विकस्थूल परिभाषाएँ

फ़ंक्शन प्रोटोटाइप

विवरण टाइप करें

वैश्विक चर विवरण

फ़ंक्शन शीर्षलेख स्थानीय

(बाहरी ब्लॉक चर;

संचालक;

(इनडोर यूनिट एल स्थानीय

अन्य कार्यों का विवरण

/*कार्यक्रम का अंत*/

उदाहरण।समान नाम के वेरिएबल वाले नेस्टेड ब्लॉक का उपयोग करना।

कार्यक्रम:

( int i=2; /* i – बाहरी ब्लॉक वेरिएबल */

पूर्णांक गिनती=0; /* गिनती - बाहरी चर */

जबकि (गिनती)<= i) /* цикл внешнего блока */

( int=0; /* i - आंतरिक ब्लॉक का स्थानीय चर */


गिनती++; /* लूप काउंटर*/

प्रिंटफ ("एक लूप में: गिनती =%d; i=%d\n", गिनती, i);

/* आंतरिक ब्लॉक का अंत, बाहरी ब्लॉक के वेरिएबल i पर लौटें */

प्रिंटफ ("लूप के बाहर: गिनती =% d, i =% d", गिनती, i);

कार्यक्रम परिणाम:

लूप में गिनती=1 i=0

लूप में गिनती=2 i=0

लूप में गिनती=3 i=0

लूप के बाहर गिनती=3 i=2

प्रोग्रामर कर सकता है ज़ाहिर तौर सेमेमोरी (भंडारण) वर्ग विनिर्देशकों का उपयोग करके दायरा और आजीवन विशेषताएँ सेट करें: के लिए चर(ऑटो - स्थानीय, रजिस्टर - रजिस्टर, स्थिर - स्थैतिक, बाहरी - बाहरी) और के लिए कार्य(स्थैतिक, बाहरी)।

स्टोरेज क्लास ऑटो (डिफ़ॉल्ट) और रजिस्टर वाले वेरिएबल से संबंधित हैं स्थानीयब्लॉक में और दायरे और जीवनकाल द्वारा। ऑटो क्लास वाले वेरिएबल्स के लिए, मेमोरी को स्टैक (अस्थायी मेमोरी) पर आवंटित किया जाता है, और रजिस्टर क्लास वाले वेरिएबल्स के लिए, प्रोसेसर के मुफ्त रजिस्टरों में से एक में आवंटित किया जाता है।

क्लास स्टैटिक वाले वेरिएबल्स के लिए मेमोरी को स्टैक के बजाय डेटा सेगमेंट (स्टैटिक प्रोग्राम मेमोरी) में आवंटित किया जाता है, जिससे उन्हें बनाया जाता है बचानाइसका मूल्य पर बाहर निकलनाखंड से। अगर गायब है मुखरतो, ऐसे वेरिएबल्स का आरंभीकरण गलती करनावे 0 पर सेट हैं। आरंभीकरण किया जाता है एकबार और ब्लॉक में नई प्रविष्टि पर दोहराया नहीं जाता है। वर्ग की वस्तुएँ स्थिर होती हैं स्थानीयदायरा (ब्लॉक) और वैश्विकजीवनकाल (कार्यक्रम निष्पादन समय)।

उदाहरण. स्थैतिक चर का उपयोग करना।

कार्यक्रम:

शून्य उदाहरण (इंट सी); /* फ़ंक्शन प्रोटोटाइप */

शून्य मुख्य () /* मुख्य कार्य */

(इंट गिनती; /* स्थानीय चर को ब्लॉक करें */

(गिनती=9; गिनती >=5; गिनती -=2) के लिए /* काउंटर लूप */

उदाहरण(गिनती); /* फ़ंक्शन कॉल */

शून्य उदाहरण (int c) /* फ़ंक्शन हेडर */

(int f=1; /* स्थानीय चर */

स्थिर पूर्णांक स्टेट=1; /* स्थिर चर */

प्रिंटफ़ ("c=%d, f=%d, stat=%d\n", c, f ,stat);

स्टेट++; /* एक स्थिर चर बदलना */

कार्यक्रम के परिणाम: सी=9, एफ=1, स्टेट=1

सी=7, एफ=1, स्टेट=2

संकलक को आरंभ करना होगा त्रुटि संदेशसंकलन. इस पर निर्भर करते हुए कि पहचानकर्ता किसी चर या स्थिरांक की ओर इशारा करता है, कंपाइलर को भी अलग-अलग कार्रवाई करनी होगी।

प्रोग्राम में नाम सरल या यौगिक हो सकता है। सरल नामों में परिवर्तनीय नाम, सबरूटीन नाम और उपयोगकर्ता डेटा प्रकार के नाम शामिल हैं। एक यौगिक नाम किसी संरचना के एक तत्व को संदर्भित करता है और इसे एक साधारण नाम के रूप में लिखा जाता है जिसके बाद नाम योग्यता या अनुक्रमण संचालन होता है। उदाहरण के लिए, अभिव्यक्ति array1 सरणी के तीसरे तत्व को संदर्भित करती है, और अभिव्यक्ति रिकॉर्ड1.फ़ील्ड2, रिकॉर्ड1 संरचना के फ़ील्ड2 फ़ील्ड के मान को संदर्भित करती है।

डेटा में हेरफेर करने के लिए, विशिष्ट नियमित पहचानकर्ताओं को विशिष्ट डेटा ऑब्जेक्ट पर मैप किया जाना चाहिए। इस तुलना को कभी-कभी एसोसिएशन भी कहा जाता है। जब एक सक्रियण रिकॉर्ड बनाया जाता है, तो कई एसोसिएशन स्थापित होते हैं जो पहचानकर्ताओं को वर्तमान डेटा ऑब्जेक्ट में मैप करते हैं। एसोसिएशनों का यह सेट सबरूटीन के संदर्भ वातावरण को परिभाषित करता है।

सबरूटीन के संदर्भ वातावरण में एक वैश्विक संदर्भ वातावरण, एक स्थानीय संदर्भ वातावरण, एक गैर-स्थानीय संदर्भ वातावरण और एक पूर्वनिर्धारित संदर्भ वातावरण शामिल होता है।

स्थानीय संदर्भों का वातावरण स्थानीय चर, औपचारिक मापदंडों और वर्तमान सबरूटीन के भीतर परिभाषित सबरूटीन द्वारा बनता है।

वैश्विक लिंक का वातावरण उन संघों द्वारा बनता है जो मुख्य कार्यक्रम के सक्रिय होने पर बनते हैं। गैर-स्थानीय संदर्भ वातावरण में वैश्विक संदर्भ वातावरण और वेरिएबल्स के लिए गठित एसोसिएशनों का एक सेट शामिल होता है जो प्रोग्राम में बाद में उपलब्ध होते हैं लेकिन अभी तक नहीं बनाए गए हैं।

दृश्यता का क्षेत्रकिसी सबरूटीन में एक एसोसिएशन का निर्धारण उस एसोसिएशन को सबरूटीन के संदर्भ वातावरण में शामिल करने से होता है। इसके अलावा, अगर वहाँ था परिभाषाएक स्थानीय पहचानकर्ता द्वारा वैश्विक पहचानकर्ता, फिर वैश्विक पहचानकर्ता के लिए एसोसिएशन को रूटीन के वैश्विक संदर्भ वातावरण से बाहर रखा गया है।

गतिशील दृश्यता का क्षेत्रप्रत्येक एसोसिएशन सबरूटीन सक्रियण रिकॉर्ड के संग्रह द्वारा निर्धारित किया जाता है जिसमें सबरूटीन के संदर्भ वातावरण में वह एसोसिएशन शामिल होता है।

एक ही डेटा ऑब्जेक्ट को अलग-अलग नामों से संदर्भित किया जा सकता है - उदाहरण के लिए, यदि एक वैश्विक चर पहचानकर्ता एक सबरूटीन में उपलब्ध है और उसी चर को संदर्भ के रूप में पारित किया जाता है औपचारिक पैरामीटरसबरूटीन्स. एक ही डेटा ऑब्जेक्ट के साथ जुड़ाव के लिए संदर्भ वातावरण में मौजूद विभिन्न पहचानकर्ताओं को कभी-कभी उपनाम कहा जाता है।

उपनामों के उपयोग से विभिन्न ग़लत स्थितियाँ उत्पन्न हो सकती हैं। इसके अलावा, सबरूटीन में उपनामों की उपस्थिति कंपाइलर द्वारा निष्पादित कोड अनुकूलन प्रक्रिया को जटिल बनाती है। उदाहरण के लिए, यदि, दो कथनों के अनुक्रम को निष्पादित करते समय

int1=5*x; int2=8*y;

वेरिएबल int1 का मान प्रोग्राम में कहीं भी उपयोग नहीं किया जाता है, फिर प्रोग्राम को ऑप्टिमाइज़ करते समय पहले स्टेटमेंट को समाप्त किया जा सकता है। लेकिन यदि वेरिएबल int1, वेरिएबल y के लिए एक उपनाम है, तो इस तरह के अनुकूलन से गणना में त्रुटि होगी, और इसलिए अतिरिक्त जांच की आवश्यकता होगी।

स्टेटिक स्कोप प्रोग्राम कोड के एक टुकड़े को संदर्भित करता है जिसमें एक पहचानकर्ता एक विशिष्ट ऑब्जेक्ट को संदर्भित करता है।

स्थिर दृश्यता का क्षेत्रउस ऑब्जेक्ट को परिभाषित करता है जिसे पहचानकर्ता प्रोग्राम कोड और डायनामिक में संदर्भित करता है दृश्यता का क्षेत्रमें निर्मित संघों द्वारा गठित समय सीमाकार्यक्रम.

ब्लॉक-संरचित प्रोग्रामिंग भाषाएँ

ब्लॉक में- संरचित भाषाएँप्रोग्रामिंग प्रोग्राम को पदानुक्रमित रूप से एक सेट के रूप में लिखा जाता है नेस्टेड ब्लॉकएक निश्चित संरचना.

अवरोध पैदा करना- संरचित भाषाएँप्रोग्रामिंग को कड़ाई से ब्लॉक में विभाजित किया जा सकता है- संरचित भाषाएँऔर बस अवरुद्ध संरचित भाषाएँ.

कड़ाई से ब्लॉक में- संरचित भाषाएँप्रत्येक ब्लॉक की शुरुआत में एक घोषणा क्षेत्र होता है, उसके बाद कोड का एक टुकड़ा होता है। दूसरे शब्दों में, सख्ती से ब्लॉक में- संरचित भाषाएँप्रोग्रामिंग में, कोड खंड में कहीं भी वेरिएबल घोषित करने की अनुमति नहीं है।

सख्ती से रोक लगाने के लिए- संरचित भाषाएँप्रोग्रामिंग भाषाओं में ALGOL 60, पास्कल, PL/I शामिल हैं।

ब्लॉक-संरचित प्रोग्रामिंग भाषा में प्रत्येक ब्लॉक एक नया स्थानीय संदर्भ वातावरण पेश करता है।

निम्नलिखित उदाहरण पास्कल प्रोग्राम की ब्लॉक संरचना को दर्शाता है।

प्रोग्राम प्रोजेक्ट1; प्रक्रिया P1(); प्रक्रिया P2(); (नेस्टेड प्रक्रिया) var i:पूर्णांक; प्रारंभ अंत; प्रारंभ (प्रक्रिया कोड P1) अंत; प्रारंभ (प्रोजेक्ट1 मुख्य प्रोग्राम कोड) अंत।

ऑब्जेक्ट पास्कल में, डिफ़ॉल्ट रूप से, एप्लिकेशन मॉड्यूल के एक सेट के रूप में बनाए जाते हैं जो उपयोग कीवर्ड से जुड़े होते हैं। निम्नलिखित उदाहरण ऑब्जेक्ट पास्कल प्रोग्राम की ब्लॉक संरचना को दर्शाता है, जिसे एकल मॉड्यूल के रूप में प्रस्तुत किया गया है।

प्रोग्राम प्रोजेक्ट2; (प्रोग्राम स्टार्ट) विंडोज, मैसेज, SysUtils, वेरिएंट, क्लासेस, ग्राफिक्स, कंट्रोल, फॉर्म, डायलॉग्स, StdCtrls का उपयोग करता है; ($R *.res) ($R *.dfm) (डीएफएम फ़ाइल का नाम मॉड्यूल (ब्लॉक) के नाम से मेल खाना चाहिए।) (स्वचालित रूप से एक एप्लिकेशन बनाते समय ऑब्जेक्ट पास्कल भाषा में एकल मॉड्यूल प्राप्त करने के लिए डेल्फ़ी वातावरण, फ़ाइल Unit1.dfm को इसका नाम बदलकर Project2.dfm कर दिया जाना चाहिए, और Unit1.pas मॉड्यूल के कोड को Project2.pas मॉड्यूल में ले जाना चाहिए) प्रकार (एक नए फॉर्म विंडो प्रकार TForm1 की घोषणा) TForm1 = class( टीफॉर्म) बटन1: टीबटन; बटन2: टीबटन; लिस्टबॉक्स1: टीलिस्टबॉक्स; संपादन1: टीसंपादित करें; प्रक्रिया बटन1क्लिक(प्रेषक: टॉब्जेक्ट); प्रक्रिया Button2Click (प्रेषक: TObject); प्रक्रिया ListBox1Click (प्रेषक: TObject); निजी (निजी घोषणाएँ) सार्वजनिक (सार्वजनिक घोषणाएँ) समाप्त; var (घोषणा क्षेत्र की शुरुआत) फॉर्म1: टीफॉर्म1; मैं: पूर्णांक; प्रक्रिया TForm1.Button1Click (प्रेषक: TObject); प्रारंभ संपादन1.पाठ:=''बटन1''; अंत; प्रक्रिया TForm1.Button2Click (प्रेषक: TObject); वर i:पूर्णांक; प्रक्रिया P1(); (नेस्टेड प्रक्रिया) var i:पूर्णांक; आरंभ i:=5; Edit1.Text:= Edit1.Text+" i= " + IntToStr(i); अंत; प्रारंभ संपादन1.पाठ:=''बटन2''; मैं:=0; P1(); अंत; प्रक्रिया TForm1.ListBox1Click(प्रेषक: TObject); प्रारंभ करें Edit1.Text:=''ListBox1'; अंत; प्रारंभ करें (प्रोग्राम निष्पादन प्रारंभ करें) अनुप्रयोग.प्रारंभ करें; एप्लीकेशन.क्रिएटफॉर्म(टीफॉर्म1, फॉर्म1); अनुप्रयोग.चलाएँ; अंत। उदाहरण 5.1. ऑब्जेक्ट पास्कल भाषा में किसी प्रोग्राम की ब्लॉक संरचना

4.8. ब्लॉक संरचना.

"सी" भाषा इस अर्थ में एक ब्लॉक-संरचित भाषा नहीं है

ले पीएल/1 या अल्गोला; यह केवल कार्यों का वर्णन नहीं कर सकता

दूसरों के अंदर.

दूसरी ओर, चर को इसके द्वारा परिभाषित किया जा सकता है

ब्लॉक संरचना विधि. चरों का विवरण (सहित)

चाय आरंभीकरण) बाएं घुंघराले ब्रेस का अनुसरण कर सकता है-

जो किसी भी ऑपरेटर को खोलता है, न कि केवल उसी को जिसके साथ

झुंड कार्य का शरीर शुरू करता है। चरों का वर्णन इस प्रकार किया गया है

एक बार में, बाहरी ब्लॉकों से किसी भी चर को विस्थापित कर देता है

समान नाम, और संगत होने तक परिभाषित रहते हैं

सही घुंघराले ब्रेस. उदाहरण के लिए, में

आईएनटी मैं; /* एक नया I घोषित करें */

फॉर (आई = 0; आई< N; I++)

चर I का दायरा "सत्य" शाखा है

अगर; यह I किसी भी तरह से कार्यक्रम में किसी अन्य I से जुड़ा नहीं है।

ब्लॉक संरचना बाहरी के दायरे को भी प्रभावित करती है

चर। यदि विवरण दिया गया है

फ़ंक्शन F के अंदर X की उपस्थिति आंतरिक परिवर्तन को संदर्भित करती है

डबल प्रकार का चर, और एफ के बाहर - एक बाहरी पूर्णांक चर के लिए।

औपचारिक पैरामीटर नामों के लिए भी यही सच है:

फ़ंक्शन F के अंदर, नाम X औपचारिक पैरामीटर को संदर्भित करता है, और

किसी बाहरी चर के लिए नहीं.

4.9. आरंभीकरण।

हमने अब तक कई बार आरंभीकरण का उल्लेख किया है, लेकिन

अन्य मुद्दों के बीच, हमेशा पारित होने में। अब, उसके बाद

जैसा कि हमने विभिन्न मेमोरी वर्गों पर चर्चा की है, हम इस खंड में हैं

आइए आरंभीकरण से संबंधित कुछ नियमों को संक्षेप में प्रस्तुत करें।

यदि कोई स्पष्ट आरंभीकरण नहीं है, तो बाहरी और

टिक चर को शून्य मान दिया गया है; स्वचालित

इस मामले में, भौतिक और रजिस्टर चर अनिश्चित हैं

विभाजित मूल्य (कचरा)।

सरल चर (सरणी या संरचना नहीं) को त्वरित किया जा सकता है

उनका वर्णन करते समय, नाम के बाद चिह्न जोड़ना

समानताएं और निरंतर अभिव्यक्ति:

चार स्क्वोटे = "\";

लंबा दिन = 60*24; /* एक दिन में मिनट */

बाहरी और स्थिर चर के लिए, आरंभीकरण किया जाता है

इसे संकलन चरण में केवल एक बार लागू किया जाता है। स्वचालित और

हर बार जब आप लॉग इन करते हैं तो रजिस्टर वेरिएबल प्रारंभ हो जाते हैं

किसी फ़ंक्शन या ब्लॉक में।

स्वचालित और रजिस्टर चर के मामले में, आरंभीकरण

टोरस का स्थिर होना आवश्यक नहीं है: वास्तव में यह हो सकता है

कोई भी सार्थक अभिव्यक्ति जिसमें कुछ बातें शामिल हो सकती हैं

पहले से ज्ञात मात्राएँ और यहाँ तक कि कार्यों के लिए कॉल भी। उदाहरण के लिए,

अध्याय 3 से बाइनरी सर्च प्रोग्राम में आरंभीकरण हो सकता है

फॉर्म में लिखा होगा

पूर्णांक उच्च = एन - 1;

पूर्णांक निम्न, उच्च, मध्य;

इसके परिणाम के अनुसार स्वचालित परिवर्तनों का आरंभ -

nyh असाइनमेंट ऑपरेटरों के लिए शॉर्टहैंड हैं।

कौन सा रूप पसंद करना है यह मुख्य रूप से स्वाद का मामला है। हम आम तौर पर

हम स्पष्ट असाइनमेंट का उपयोग करते हैं क्योंकि आरंभीकरण में

विवरण में कम ध्यान देने योग्य।

स्वचालित सारणियाँ प्रारंभ नहीं की जा सकतीं. बाहरी

tion और static arrays को डालकर इनिशियलाइज़ किया जा सकता है

विवरण के बाद, घुंघराले ब्रेसिज़ में संलग्न एक सूची

प्रारंभिक मान अल्पविराम द्वारा अलग किए गए। उदाहरण के लिए प्रोग्राम

अध्याय 1 से वर्ण गणना, जिसकी शुरुआत हुई

INT C, I, NWHITE, NOTHER;

एनव्हाइट = कुछ नहीं = 0;

फॉर (आई = 0; आई< 10; I++)

के रूप में पुनः लिखा जा सकता है

पूर्णांक NDIGIT = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

मुख्य() /* गिनती अंक, सफेद स्थान, अन्य */

इन आरंभीकरणों की वास्तव में आवश्यकता नहीं है, क्योंकि सभी असाइनमेंट

दिए गए मान शून्य हैं, लेकिन उन्हें बनाना अच्छी शैली है

ज़ाहिर। यदि प्रारंभिक मानों की संख्या निर्दिष्ट से कम है

सरणी का निर्दिष्ट आकार, फिर शेष तत्व आवश्यक से भर जाते हैं

ल्यामी. बहुत सारे आरंभिक मान सूचीबद्ध करना

एक त्रुटि है. दुर्भाग्य से, इसकी कोई संभावना नहीं है

एक संकेत है कि कुछ प्रारंभिक मूल्य दोहराया गया है, और

आप किसी सरणी के मध्य में किसी तत्व को पुनः आरंभ किए बिना प्रारंभ नहीं कर सकते

पिछले सभी की संख्या.

वर्ण सारणी के लिए एक विशेष तरीका है

आरंभीकरण; घुंघराले ब्रेसिज़ और अल्पविराम के बजाय, आप उपयोग कर सकते हैं

लाइन का उपयोग करें:

चार पैटर्न = "द";

यह लंबे लेकिन समकक्ष संकेतन के लिए एक आशुलिपि है:

चार पैटर्न = ("टी", "एच", "ई", "\0");

यदि किसी प्रकार की सारणी का आकार छोड़ दिया जाता है, तो कंपाइलर निर्धारित करता है

प्रारंभिक मानों की संख्या की गणना करके इसकी लंबाई को विभाजित करता है। में

इस विशेष मामले में आकार चार (तीन अक्षर) है

प्लस अंतिम \0).


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

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

सचित्र मौखिक-शब्दांश लेखन)। मध्य एलामाइट काल (14-12 शताब्दी ईसा पूर्व) के स्मारक अक्काडियन क्यूनिफॉर्म में बने हैं। न्यू एलामाइट काल के स्मारक 8वीं-6वीं शताब्दी के हैं। ईसा पूर्व. छठी-चौथी शताब्दी में फ़ारसी अचमेनिद राज्य में आधिकारिक भाषा थी। ऐसा माना जाता है कि, पुरानी फ़ारसी से प्रभावित होने के कारण, यह प्रारंभिक मध्य युग तक जीवित रहा। 7. बुरुशास्की भाषा बुरुशास्की भाषा (...

.../बोली), सीथियन, सोग्डियन, मध्य फ़ारसी, ताजिक, ताजऋषि (भाषा/बोली), तलिश, तात, खोरज़्मियन, खोतानोसाक, शुगनन-रुशान भाषा समूह, याघनोबी, याज़गुल्यम, आदि। वे इंडो- से संबंधित हैं। इंडो-यूरोपीय भाषाओं की ईरानी शाखा। वितरण क्षेत्र: ईरान, अफगानिस्तान, ताजिकिस्तान, इराक के कुछ क्षेत्र, तुर्की, पाकिस्तान, भारत, जॉर्जिया, रूसी संघ। सामान्य...



मित्रों को बताओ