"राज्य" की परिभाषा


15

"स्टेट" को परिभाषित करने का एक अच्छा तरीका क्या है, जैसा कि राज्य चर या राज्य मशीन में, एक नए (पहले गैर) प्रोग्रामर के लिए है? यह समझाने के लिए कुछ अच्छे तरीके क्या हैं कि यह अवधारणा सॉफ्टवेयर लिखने के लिए क्यों उपयोगी है? क्या राज्य की अवधारणा को प्रोग्रामिंग पाठ्यक्रमों या पुस्तकों की शुरुआत में स्पष्ट रूप से सिखाया जाता है?

जवाबों:


5

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

उस "बात / सूचना" को जिसे आपको याद रखने की आवश्यकता है उसे "राज्य" कहा जाता है।

(यह आवश्यक नहीं है कि यह "राज्य" समय के साथ बदलता है, यह मूल रूप से "याद रखने / जानने के लिए" कहने का एक तरीका है)


1
मुझे लगता है कि यह सबसे अच्छा जवाब है, अगर एक गैर-प्रॉपर के लिए समझदार होने के लिए rephrased। कहें: सभी गतिविधियाँ चीजों और / या सूचनाओं को संभालती हैं। यह तीन तरीकों से होता है: 1) कोई भी गतिविधि कुछ ले या उपयोग या पढ़ सकती है: इसका इनपुट ; 2) यह कुछ उत्पादन या लिख सकता है: इसका उत्पादन ; 3) जबकि प्रगति में यह कर सकते हैं पकड़ , रखने , याद , दुकान कुछ: अपने राज्य। अधिकांश कंप्यूटर कार्यक्रमों के लिए, सभी इनपुट, आउटपुट और राज्य में जानकारी होती है, जबकि अन्य प्रकार की गतिविधियों के लिए (जैसे, खाना बनाना) भौतिक वस्तुओं को आमतौर पर शामिल किया जाता है।
रीयरियरपोस्ट

8

से विकिपीडिया :

राज्य आमतौर पर या तो एक प्रणाली या इकाई की वर्तमान स्थिति को संदर्भित करता है ...

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

'स्टेट' का अर्थ प्रोग्रामिंग के लिए विशिष्ट नहीं है। 'राज्य' के उदाहरण हैं जहाँ आप देख सकते हैं। टेलीविजन बंद है। कॉफी गर्म है। स्नीकर्स ए) नीले हैं; बी) बदबूदार; ग) दूर नहीं रखा; घ) काफी घिसा हुआ। एक प्रोग्रामिंग अर्थ में 'राज्य' एक गैर-प्रोग्रामिंग अर्थ में 'राज्य' के समान है, सिवाय इसके कि हम इसे उन वस्तुओं पर लागू करते हैं, जिनसे हम निपटते हैं: चर, ऑब्जेक्ट, थ्रेड, डेटाबेस, फाइल सिस्टम, आदि। इसे समझाने के लिए, इसे उन शब्दों में समझाइए जो परिचित हैं - इसे किसी विदेशी, तकनीकी अवधारणा में बनाने की कोई आवश्यकता नहीं है।

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

किसी स्टेटलेस की तुलना करें, जैसे कि स्टेटमेंट: "दरवाजा लाल है।" स्टेटमेंट में ही स्टेट नहीं है। यह सच है या नहीं हो सकता है कि दरवाजा लाल है, लेकिन बयान में कोई भी राज्य नहीं है। दरवाजे को चित्रित करना बयान की सच्चाई को बदल सकता है, लेकिन बयान स्वयं कभी नहीं बदलता है। इसी तरह, 42 जैसी संख्या के पास कोई राज्य नहीं है: 42 42 है और ऐसा कुछ भी नहीं है जिसके बारे में आप बदल सकते हैं।

चर राज्य है, मान नहीं है।


1
@ hotpaw2 'राज्य' का अर्थ प्रोग्रामिंग के लिए विशिष्ट नहीं है। वहाँ 'राज्य' के उदाहरण हैं सचमुच हर जगह तुम देखो। टेलीविजन बंद है। कॉफी गर्म है। स्नीकर्स ए) नीले हैं; बी) बदबूदार; ग) दूर नहीं रखा; घ) काफी घिसा हुआ। एक प्रोग्रामिंग अर्थ में 'राज्य' एक गैर-प्रोग्रामिंग अर्थ में 'राज्य' के समान है, सिवाय इसके कि हम इसे उन वस्तुओं पर लागू करते हैं जो हम से निपटते हैं: चर, ऑब्जेक्ट, थ्रेड, डेटाबेस, फ़ाइल सिस्टम, आदि
Caleb

1
तो आप इसे ठोस उदाहरणों का उपयोग करके एक प्रोग्रामिंग छात्र को समझाएंगे? यह अच्छा विचार प्रतीत होता है। क्या यह प्रभावी रूप से उनके कार्यक्रमों में राज्य को समझने के लिए स्थानांतरित करेगा?
hotpaw2

2
@ hotpaw2 ने मेरी टिप्पणी को उत्तर तक बढ़ाया और थोड़ा विस्तार किया। समझने के लिए, मुझे लगता है कि एक शुरुआत के साथ सार में 'राज्य' पर बहुत अधिक ध्यान केंद्रित नहीं करना सबसे अच्छा है। अधिकांश लोगों को किसी चीज़ के ठोस उदाहरणों की आवश्यकता होती है, इससे पहले कि वे वास्तव में अधिक सामान्य पैटर्न को पहचान सकें।
कालेब

1
स्पष्ट नहीं है कि "कॉफी गर्म है" क्यों राज्य है, लेकिन "दरवाजा लाल है" स्टेटलेस है? इसके विपरीत, इसका मतलब यह होगा कि "कॉफी काली है" स्टेटलेस है और "दरवाजा गर्म है" स्टेटफुल है?
एडम ह्यूजेस

1
@AdamHughes जहाँ मैंने उद्धरणों का उपयोग किया है, वहां देखो - विशेष रूप से, मैंने उन्हें कॉफी के बारे में बात करने में उपयोग नहीं किया क्योंकि मैं वास्तविक कॉफी का उल्लेख कर रहा था, कॉफी के बारे में बयान नहीं। बिंदु चर और मूल्यों के बीच अंतर को समझाने के लिए है। मेरे घर के वास्तविक दरवाजे में स्थिति है: यह खुला या बंद हो सकता है, लाल या नीला या हरा, गर्म या ठंडा, आदि हो सकता है। दरवाजे के बारे में एक बयान उस स्थिति को इंगित कर सकता है, लेकिन यह कथन स्वयं एक अपरिवर्तनीय चीज है।
कालेब

1

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

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


1

आप ट्रैफ़िक लाइट की उपमा का उपयोग कर सकते हैं जो तीन राज्यों में से एक में हो सकती है: [GREEN], [YELLOW] या [RED]। यह एक समय में केवल एक राज्य में होना चाहिए। ट्रैफिक लाइट वास्तविक राज्य मशीन है जिसे मॉडल बनाया जा रहा है। यह सामान्य रूप से अपने राज्य को [GREEN से YELLOW], फिर [YELLOW से RED], फिर [RED to GREEN] में परिवर्तित कर देगा।

यहाँ छवि विवरण दर्ज करें

एक वैकल्पिक राज्य संक्रमण (जो यूके जैसे कुछ देशों में प्रभावी है, [RED to YELLOW] तो YELLOW to GREEN] के स्थान पर [RED to GREEN] संक्रमण है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.