एक चर क्या है?
चर एक भंडारण क्षेत्र के लिए एक नाम असाइन है जिसे प्रोग्राम हेरफेर कर सकता है। एक चर प्रकार चर की स्मृति के आकार और लेआउट को निर्धारित करता है।
यह उन मानों की श्रेणी को भी निर्धारित करता है जिन्हें उस मेमोरी के अंदर संग्रहीत करने की आवश्यकता होती है और उस चर की प्रकृति को लागू किया जा सकता है।
इस ट्यूटोरियल में, आप सीखेंगे
- चर के दायरे
- स्थानीय चर की परिभाषा
- ग्लोबल वेरिएबल की परिभाषा
- स्थानीय चर बनाम वैश्विक चर
- वैश्विक चर का उपयोग करने के लाभ
- स्थानीय चर का उपयोग करने के लाभ
- ग्लोबल चर का उपयोग करने के नुकसान
- स्थानीय चर का उपयोग करने के नुकसान
- क्या अधिक उपयोगी है?
चर के दायरे
चर का दायरा केवल चर का जीवनकाल है। यह कोड का अवरोध है जिसके तहत एक चर लागू होता है या जीवित होता है। उदाहरण के लिए:
function foo(){var x;}
आप एक फ़ंक्शन "फू" के अंदर एक चर "x" घोषित करते हैं। उस चर का दायरा उस फ़ंक्शन के अंदर रहता है जिसका उपयोग उस फ़ंक्शन के बाहर नहीं किया जा सकता है।
ऐसी तीन जगहें हैं जहाँ पर आप चर प्रोग्रामिंग भाषा घोषित कर सकते हैं:
- किसी फ़ंक्शन या ब्लॉक के अंदर: स्थानीय चर
- सभी कार्यों के बाहर: वैश्विक चर
- फ़ंक्शन मापदंडों की परिभाषा में: औपचारिक पैरामीटर
कुंजी प्रसार
- स्थानीय चर को किसी फ़ंक्शन के अंदर घोषित किया जाता है जबकि फ़ंक्शन के बाहर वैश्विक चर घोषित किया जाता है।
- स्थानीय चर तब बनाए जाते हैं जब फ़ंक्शन ने निष्पादन शुरू कर दिया है और जब फ़ंक्शन समाप्त हो जाता है, तो खो जाता है, दूसरी तरफ, ग्लोबल चर बनाया जाता है क्योंकि निष्पादन शुरू होता है और कार्यक्रम समाप्त होने पर खो जाता है।
- स्थानीय चर डेटा साझाकरण प्रदान नहीं करता है जबकि ग्लोबल चर डेटा साझाकरण प्रदान करता है।
- स्थानीय चर स्टैक पर संग्रहीत होते हैं जबकि ग्लोबल चर संकलक द्वारा तय किए गए एक निश्चित स्थान पर संग्रहीत होते हैं।
- स्थानीय चर के लिए पासिंग पैरामीटर आवश्यक है, जबकि वैश्विक चर के लिए यह आवश्यक नहीं है
स्थानीय चर
स्थानीय चर को एक प्रकार के चर के रूप में परिभाषित किया गया है जिसे प्रोग्रामिंग ब्लॉक या सबरूटीन्स के रूप में घोषित किया गया है। इसका उपयोग केवल उप-खंड या कोड ब्लॉक के अंदर किया जा सकता है जिसमें यह घोषित किया गया है। फ़ंक्शन के ब्लॉक निष्पादन के अधीन होने तक स्थानीय चर मौजूद है। उसके बाद, यह स्वचालित रूप से नष्ट हो जाएगा।
स्थानीय चर का उदाहरण
public int add(){int a =4;int b=5;return a+b;}
यहाँ, 'a' और 'b' स्थानीय चर हैं
वैश्विक चर
कार्यक्रम में एक ग्लोबल वैरिएबल सबरूटीन या फ़ंक्शन के बाहर परिभाषित एक चर है। यह एक वैश्विक गुंजाइश है इसका मतलब है कि यह कार्यक्रम के पूरे जीवनकाल में अपना मूल्य रखता है। इसलिए, इसे कार्यक्रम के भीतर परिभाषित किसी भी फ़ंक्शन द्वारा पूरे कार्यक्रम में पहुँचा जा सकता है, जब तक कि इसे छायांकित न किया जाए।
उदाहरण:
int a =4;int b=5;public int add(){return a+b;}
यहाँ, 'a' और 'b' वैश्विक चर हैं।
स्थानीय चर बनाम। सार्वत्रिक चर
यहाँ, स्थानीय और वैश्विक चर के बीच कुछ बुनियादी अंतर हैं।
पैरामीटर | स्थानीय | वैश्विक |
---|---|---|
क्षेत्र | इसे एक फंक्शन के अंदर घोषित किया जाता है। | यह फ़ंक्शन के बाहर घोषित किया गया है। |
मूल्य | यदि इसे प्रारंभ नहीं किया जाता है, तो एक कचरा मूल्य संग्रहीत किया जाता है | यदि यह आरंभीकृत नहीं है तो शून्य को डिफ़ॉल्ट के रूप में संग्रहीत किया जाता है। |
जीवन काल | यह तब बनाया जाता है जब फ़ंक्शन निष्पादन शुरू करता है और फ़ंक्शन समाप्त होने पर खो जाता है। | यह कार्यक्रम के वैश्विक निष्पादन शुरू होने से पहले बनाया जाता है और कार्यक्रम समाप्त होने पर खो जाता है। |
डेटा साझा करना | डेटा साझाकरण संभव नहीं है क्योंकि स्थानीय चर के डेटा को केवल एक फ़ंक्शन द्वारा एक्सेस किया जा सकता है। | डेटा साझाकरण संभव है क्योंकि कई फ़ंक्शन समान वैश्विक चर तक पहुंच सकते हैं। |
मापदंडों | अन्य फ़ंक्शन में मान तक पहुंचने के लिए स्थानीय चर के लिए पासिंग पैरामीटर आवश्यक है | गुजरने वाले पैरामीटर वैश्विक चर के लिए आवश्यक नहीं है क्योंकि यह पूरे कार्यक्रम में दिखाई देता है |
चर मूल्य का संशोधन | जब स्थानीय चर का मान एक फ़ंक्शन में संशोधित किया जाता है, तो परिवर्तन दूसरे फ़ंक्शन में दिखाई नहीं देते हैं। | जब वैश्विक चर का मान एक फ़ंक्शन में संशोधित होता है, तो बाकी प्रोग्राम में परिवर्तन दिखाई देते हैं। |
द्वारा पहुँचा | स्थानीय चर को किसी फ़ंक्शन के अंदर बयानों की मदद से पहुँचा जा सकता है, जिसमें वे घोषित किए जाते हैं। | आप कार्यक्रम में किसी भी बयान से वैश्विक चर का उपयोग कर सकते हैं। |
स्मृति भंडारण | इसे स्टैक पर संग्रहीत किया जाता है जब तक कि निर्दिष्ट न हो। | यह संकलक द्वारा तय किए गए एक निश्चित स्थान पर संग्रहीत किया जाता है। |
वैश्विक चर का उपयोग करने के लाभ
- आप एक कार्यक्रम में सभी कार्यों या मॉड्यूल से वैश्विक चर का उपयोग कर सकते हैं
- आपको केवल मॉड्यूल के बाहर वैश्विक चर घोषित करने की आवश्यकता है।
- यह आदर्श रूप से "स्थिरांक" के भंडारण के लिए उपयोग किया जाता है क्योंकि यह आपको स्थिरता बनाए रखने में मदद करता है।
- एक ग्लोबल वैरिएबल तब उपयोगी होता है जब एक ही डेटा पर कई फंक्शंस पहुंच रहे हों।
स्थानीय चर का उपयोग करने के लाभ
- स्थानीय चर का उपयोग इस बात की गारंटी देता है कि कार्य के चलने के दौरान चर के मूल्य बरकरार रहेंगे
- यदि कई कार्य एक ही चर को बदलते हैं जो एक साथ चल रहा है, तो परिणाम अप्रत्याशित हो सकता है। लेकिन इसे स्थानीय चर के रूप में घोषित करना इस मुद्दे को हल करता है क्योंकि प्रत्येक कार्य स्थानीय चर का अपना उदाहरण बनाएगा।
- आप स्थानीय चर को विभिन्न कार्यों में एक ही नाम दे सकते हैं क्योंकि वे केवल उस फ़ंक्शन द्वारा पहचाने जाते हैं जिसमें वे घोषित किए जाते हैं।
- किसी भी फ़ंक्शन के समाप्त होते ही स्थानीय चर हटा दिए जाते हैं और स्मृति स्थान को छोड़ देते हैं, जिस पर वह रहता है।
ग्लोबल वेरिएबल्स का उपयोग करने के नुकसान
- बहुत सारे वैरिएबल को वैश्विक घोषित किया जाता है, फिर वे कार्यक्रम के पूरा होने तक मेमोरी में बने रहते हैं। यह आउट ऑफ़ मेमोरी समस्या का कारण बन सकता है।
- डेटा को किसी भी फ़ंक्शन द्वारा संशोधित किया जा सकता है। कार्यक्रम में लिखा गया कोई भी कथन वैश्विक चर के मूल्य को बदल सकता है। यह मल्टी-टास्किंग वातावरण में अप्रत्याशित परिणाम दे सकता है।
- यदि कोड रीफैक्टरिंग के कारण वैश्विक चर बंद हो जाते हैं, तो आपको उन सभी मॉड्यूल को बदलने की आवश्यकता होगी जहां उन्हें बुलाया जाता है।
स्थानीय चर का उपयोग करने के नुकसान
- एक स्थानीय चर की डिबगिंग प्रक्रिया काफी मुश्किल है।
- मॉड्यूल के बीच डेटा साझाकरण के रूप में बार-बार पास करने के लिए आवश्यक सामान्य डेटा संभव नहीं है।
- उनका दायरा बहुत सीमित है।
क्या अधिक उपयोगी है?
किसी भी भाषा में प्रोग्राम लिखते समय स्थानीय और वैश्विक चर समान रूप से महत्वपूर्ण हैं। हालाँकि, वैश्विक चर की एक बड़ी संख्या एक विशाल मेमोरी पर कब्जा कर सकती है। वैश्विक चर के अवांछनीय परिवर्तन की पहचान करना कठिन हो गया है। इसलिए, अवांछित वैश्विक चर घोषित करने से बचना उचित है।