(जावा) सबरूटीन्स: प्रक्रियाएं और कार्य - 1


के अंदर एक स्थानीय चर घोषित किया जाता है प्रदर्शित होगा स्क्रीन पर प्रदर्शित होता है <टीडी> स्थैतिक शून्य परीक्षण () {   इंट मैं = 5; System.out.println (i); } <टीडी> स्थैतिक शून्य परीक्षण () {   इंट मैं = 5;   System.out.println (i); } सार्वजनिक स्थैतिक शून्य main (String [] args) { { इंट मैं = 7;   System.out.println (i);   परीक्षा(); } <टीडी> सार्वजनिक वर्ग मुख्य { int मैं; स्थैतिक शून्य परीक्षण () {   मैं = 2; } सार्वजनिक स्थैतिक शून्य main (String [] args) { { परीक्षा(); System.out.println (i); }

एक सबरूटीन प्रोग्राम का एक अलग हिस्सा है जिसका एक नाम होता है और यह अपने अलग टास्क को हल करता है। उपनेमका मुख्य कार्यक्रम की शुरुआत में स्थित है और नाम निर्दिष्ट करके मुख्य कार्यक्रम से लॉन्च (बुलाया) जा सकता है

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

प्रत्येक दिनचर्या केवल एक कार्य करना चाहिए,  या तो बस कुछ गणना करें, या कुछ डेटा आउटपुट करें, या कुछ और करें। 

सबरूटीन दो प्रकार के होते हैं - प्रक्रियाएंऔर फ़ंक्शंस

उप-प्रक्रियाएँ कुछ क्रियाएँ करती हैं, उदाहरण के लिए, स्क्रीन पर परिणाम को एक निश्चित रूप में प्रदर्शित करना (एक साधारण उदाहरण, ऑपरेटर println()  एक मानक उप-प्रक्रिया है जो सूचना को प्रिंट करता है स्क्रीन)

फंक्शन सबरूटीन्स रिटर्न रिटर्न (नंबर, कैरेक्टर स्ट्रिंग, आदि) जिसे हम मुख्य प्रोग्राम में इस्तेमाल कर सकते हैं।

आइए एक सरल प्रक्रिया लिखने का प्रयास करें:
मान लीजिए हमें स्क्रीन पर "त्रुटि" स्ट्रिंग प्रदर्शित करने की आवश्यकता है हर बार उपयोगकर्ता की गलती के कारण कोड में त्रुटि हो सकती है (उदाहरण के लिए, जब वह गलत डेटा दर्ज करता है)
यह कथन लिखकर किया जा सकता है System.out.println("त्रुटि"); और अब कल्पना कीजिए कि इस तरह की लाइन को प्रोग्राम में कई जगहों पर डालने की जरूरत है। बेशक, आप इसे हर जगह लिख सकते हैं। लेकिन इस समाधान में दो कमियां हैं।
1) इस स्ट्रिंग को कई बार मेमोरी में स्टोर किया जाएगा
2) यदि हम त्रुटि होने पर आउटपुट बदलना चाहते हैं, तो हमें पूरे प्रोग्राम में इस लाइन को बदलना होगा, जो काफी असुविधाजनक है

ऐसे मामलों के लिए प्रक्रियाओं की आवश्यकता होती है।
एक प्रक्रिया वाला एक कार्यक्रम इस तरह दिख सकता है: ... स्थिर शून्य प्रिंट एरर () // प्रक्रिया विवरण { System.out.println("त्रुटि"); // प्रक्रिया निकाय - आदेश देता है कि प्रक्रिया निष्पादित होगी } सार्वजनिक स्थैतिक शून्य main (String [] args) { ... PrintError() // निष्पादन के लिए प्रक्रिया शुरू करें। हम केवल उस प्रक्रिया का नाम निर्दिष्ट करते हैं जिसे हम निष्पादित करना चाहते हैं। ... प्रिंट त्रुटि () ... } प्रक्रिया शून्य शब्द से शुरू होती है। प्रक्रिया के नाम के बाद खाली कोष्ठक होते हैं।
एक प्रक्रिया में निष्पादित किए जाने वाले सभी कथनों को इंडेंट किया जाता है। 

प्रक्रियाओं को main function main()
से पहले लिखा जाता है
एक प्रक्रिया को निष्पादित करने के लिए, मुख्य कार्यक्रम में आपको इसे नाम से बुलाना होगा और कोष्ठक लिखना याद रखना होगा!
आप किसी प्रोग्राम में किसी प्रक्रिया को कितनी भी बार कॉल कर सकते हैं।

अब कल्पना करते हैं कि उपयोगकर्ता की त्रुटि के जवाब में हमें अलग-अलग संदेशों को प्रदर्शित करने की आवश्यकता है, यह इस बात पर निर्भर करता है कि उसने किस प्रकार की गलती की है।
इस स्थिति में, आप प्रत्येक त्रुटि के लिए अपनी कार्यविधि लिख सकते हैं:   स्थैतिक शून्य PrintErrorZero () { System.out.println ("त्रुटि। विभाजन शून्य से!"); } स्थैतिक शून्य प्रिंट त्रुटि इनपुट () { System.out.println ("इनपुट में त्रुटि!"); } क्या होगा यदि कई और संभावित त्रुटियां हैं? यह समाधान हमें शोभा नहीं देगा!
हमें यह सीखने की जरूरत है कि प्रक्रिया को कैसे नियंत्रित किया जाए, यह बताकर कि कौन सा त्रुटि संदेश प्रदर्शित करना है।
ऐसा करने के लिए, हमें उन मापदंडों की आवश्यकता होती है जिन्हें हम प्रक्रिया के नाम के बाद कोष्ठक में लिखेंगे स्थैतिक शून्य प्रिंट त्रुटि (स्ट्रिंग एस) { System.out.println(s); } इस प्रक्रिया में, एस एक पैरामीटर है - एक विशेष चर जो आपको प्रक्रिया को नियंत्रित करने की अनुमति देता है।
पैरामीटर एक वेरिएबल है जो यह निर्धारित करता है कि सबरूटीन कैसे काम करता है। उपप्रोग्राम शीर्षलेख में पैरामीटर नामों को अल्पविराम से अलग करके सूचीबद्ध किया गया है। पैरामीटर प्रकार पैरामीटर से पहले लिखा जाता है।

अब, प्रक्रिया को कॉल करते समय, आपको ब्रैकेट में वास्तविक मान इंगित करना होगा जो हमारी प्रक्रिया के अंदर पैरामीटर (चर एस) को असाइन किया जाएगा PrintError("त्रुटि! शून्य से विभाजन!"); इस मान को तर्क कहा जाता है।
तर्क पैरामीटर मान है जो कॉल करने पर सबरूटीन को दिया जाता है।
एक तर्क न केवल एक स्थिर मान हो सकता है, बल्कि एक चर या अंकगणितीय अभिव्यक्ति भी हो सकता है।

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

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

इस प्रकार, एक चर के दायरे (दायरे) को केवल उपनेमका तक सीमित करना संभव है जहां इसकी वास्तव में आवश्यकता है। प्रोग्रामिंग में, इस तकनीक को एनकैप्सुलेशन  - किसी वेरिएबल को बाहर से बदलने से छिपाना।

यदि एक चर घोषित करना आवश्यक है जो कार्यक्रम में कहीं भी दिखाई देगा (किसी भी उपनेमका में), तो ऐसे चर सभी उपनेमकाओं के बाहर घोषित किए जाते हैं (नीचे दी गई तालिका से कार्यक्रम 3 देखें)
ऐसे चर वैश्विक कहलाते हैं।

जावा में, जब प्रोग्राम शुरू होता है, तो सभी वैश्विक चर स्वचालित रूप से शून्य पर सेट हो जाते हैं (बूलियन चर गलत हो जाते हैं)


तीन कार्यक्रमों का विश्लेषण करें: <तालिका संरेखण = "केंद्र" सीमा = "1" सेलपैडिंग = "1" सेलस्पेसिंग = "1" शैली = "चौड़ाई: 95%"> <शरीर>
1) इस प्रोग्राम में वेरिएबल i लोकल है। सबरूटीन 2) यहां, भले ही मुख्य प्रोग्राम में वेरिएबल i हो (वैल्यू 7 के साथ), वैल्यू 5 के साथ एक नया लोकल वेरिएबल i बनाया जाएगा। 
जब आप इस प्रोग्राम को चलाते हैं, तो स्क्रीन पर मान 75
3) इस प्रोग्राम में एक ग्लोबल वेरिएबल i. है, इसकी वैल्यू सबरूटीन के अंदर और मुख्य प्रोग्राम के अंदर बदली जा सकती है
प्रक्रिया वैश्विक चर i के साथ काम करेगी और इसे 2 के बराबर एक नया मान दिया जाएगा। मूल्य 2