उदाहरण के साथ VBScript फ़ंक्शन और प्रक्रियाएँ

⚡ स्मार्ट सारांश

VBScript फ़ंक्शन और प्रोसीजर कोड को पुन: उपयोग योग्य ब्लॉकों में व्यवस्थित करते हैं। एक सब प्रोसीजर बिना कोई मान लौटाए स्टेटमेंट चलाता है, जबकि एक फ़ंक्शन प्रोसीजर फ़ंक्शन नाम को मान असाइन करके मान लौटाता है, और आर्गुमेंट ByRef या ByVal का उपयोग करके पास किए जाते हैं।

  • 🧱 Code पुन: उपयोग: प्रक्रियाओं से कोड को मॉड्यूलर रूप दिया जाता है जिससे बड़े स्क्रिप्ट में इसे लिखना, डीबग करना और बनाए रखना आसान हो जाता है।
  • 📤 उप प्रक्रिया: एक Sub स्टेटमेंट Sub और End Sub के बीच स्टेटमेंट के एक ब्लॉक को चलाता है लेकिन कोई वैल्यू रिटर्न नहीं करता है।
  • 📥 कार्य प्रक्रिया: एक फ़ंक्शन, फ़ंक्शन के नाम और फ़ंक्शन के अंत के बीच में मौजूद मान को असाइन करके एक मान लौटाता है।
  • 📞 कॉलिंग: किसी सब-फंक्शन को चलाने के लिए कॉल कीवर्ड का उपयोग करें, और किसी एक्सप्रेशन में फंक्शन के नाम का उपयोग करके उसका परिणाम प्राप्त करें।
  • 🔁 ByRef बनाम ByVal: ByRef कॉल के बाद भी बदलावों को बनाए रखने की अनुमति देता है; ByVal एक कॉपी पर काम करता है, इसलिए बदलाव स्थायी नहीं रहते।
  • ⚙️ डिफ़ॉल्ट पासिंग: VBScript डिफ़ॉल्ट रूप से आर्गुमेंट्स को रेफरेंस द्वारा पास करता है, जब तक कि आप ByVal निर्दिष्ट न करें।

VBScript फ़ंक्शन और प्रक्रियाएँ

VBScript प्रक्रियाएं

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

यदि आप कोड को ठीक से व्यवस्थित नहीं करते हैं, तो कोडिंग, डिबगिंग और कोड को प्रबंधित करने की पूरी प्रक्रिया वास्तव में जटिल हो जाएगी। इसलिए, आपको कोड को सावधानीपूर्वक व्यवस्थित या मॉड्यूलर करना चाहिए ताकि आपका कोड आसानी से प्रबंधित हो सके।

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

VBScript में प्रक्रियाओं के प्रकार

प्रक्रिया कोड का एक ब्लॉक है जो आदर्श रूप से एक ही फ़ंक्शन निष्पादित करता है। कोड का एक ब्लॉक जो इनपुट को प्रोसेस करता है या फ़ाइल को हैंडल करता है, फ़ंक्शन का एक अच्छा उदाहरण है। प्रक्रियाएँ दो प्रकार की होती हैं VBScript है.

  1. उप प्रक्रिया: उप-प्रक्रिया कोई मान नहीं लौटाती है।
  2. फ़ंक्शन प्रक्रिया: यदि आप कोई मान लौटाना चाहते हैं तो फ़ंक्शन प्रक्रिया का उपयोग किया जाता है।

उप प्रक्रियाएं

यदि आप बिना कोई मान लौटाए कथनों की श्रृंखला निष्पादित करना चाहते हैं, तो आप उप प्रक्रियाओं का उपयोग कर सकते हैं।

सब प्रक्रियाएं क्रमशः Sub और End Sub कथनों से शुरू और समाप्त होती हैं। सब प्रक्रियाएं तर्क ले सकती हैं, लेकिन मान वापस नहीं कर सकतीं। सब प्रक्रियाएं इनपुट ले भी सकती हैं और नहीं भी।

Sub outputMessage()
document.write("Welcome")
End Sub

सिर्फ़ यह कोड लिखने से कुछ भी आउटपुट नहीं होगा। यहाँ आपने outputMessage नाम से एक Sub प्रक्रिया बनाई है। इसके बाद, आपको इसे कॉल करना होगा।

outputMessage() को कॉल करें

इन दोनों कोड सेटों को एक साथ जोड़ें tag like this.

<script type="text/vbscript">

Sub outputMessage()
document.write("Welcome")
End Sub
call outputMessage()
</script>

इस कोड का आउटपुट होगा

उप प्रक्रियाएं

VBScript फ़ंक्शन

यदि आप कथनों की एक श्रृंखला को निष्पादित करना चाहते हैं और एक मान लौटाना चाहते हैं, तो आपको फ़ंक्शन प्रक्रियाओं का उपयोग करने की आवश्यकता है, जिन्हें आमतौर पर फ़ंक्शन के रूप में जाना जाता है।

फ़ंक्शन प्रक्रियाएं क्रमशः फ़ंक्शन और एंड फ़ंक्शन कथनों के साथ शुरू और समाप्त होती हैं।

एक फ़ंक्शन प्रक्रिया इनपुट ले भी सकती है और नहीं भी।

फ़ंक्शन प्रक्रियाएँ किसी मान को उसके नाम पर निर्दिष्ट करके उसे लौटाती हैं।

<script type="text/vbscript">
Function findArea(radius)
   const pi=3.14
   area = pi*radius*radius
   findArea = area
End Function
document.write("The area of the circle when the radius is 20 is " & findArea(20) &"<br/>")
document.write("The area of the circle when the radius is 10 is " & findArea(10))

</script>

इस कोड का आउटपुट होगा

VBScript फ़ंक्शन

ByRef और ByVal पैरामीटर

आप संदर्भ या मान द्वारा VBScript तर्कों को प्रक्रियाओं में पास कर सकते हैं।

यदि आप प्रक्रिया को कॉल करते समय कुछ भी निर्दिष्ट नहीं करते हैं, तो तर्क/तर्क डिफ़ॉल्ट रूप से संदर्भ द्वारा पारित किए जाते हैं।

यदि आप चाहते हैं कि प्रक्रिया के कॉल होने के बाद भी तर्कों में किए गए परिवर्तन बने रहें, तो आपको VBScript तर्कों को संदर्भ द्वारा पास करना होगा।

जब कोई तर्क मान द्वारा पारित किया जाता है, तो कॉल की गई प्रक्रिया द्वारा मान में किया गया कोई भी परिवर्तन परिवर्तनशील प्रक्रिया को बुलाए जाने के बाद भी कायम नहीं रहते.

ByRef और ByVal कीवर्ड का उपयोग क्रमशः संदर्भ और मान द्वारा तर्कों को पास करने के लिए किया जाता है।

अंतर समझने के लिए, पहले नीचे दिए गए कोड को निष्पादित करें और आउटपुट देखें।

चरण 1) कोड को अपने एडिटर में कॉपी करें

<script type="text/vbscript">
Function returnResult(ByRef value)
   value = value +1
   returnResult = value
End Function
Dim x
x=5
call returnResult(x)
document.write(x)
</script>

चरण 2) आउटपुट 6 है.

चरण 3) फ़ंक्शन returnResult(ByRef मान) को फ़ंक्शन returnResult(ByVal मान) में बदलें

चरण 4) अब आपका आउटपुट 5 होगा.

अक्सर पूछे जाने वाले प्रश्न

किसी सब-फंक्शन के अंदर एग्जिट सब का उपयोग करें, या किसी फंक्शन के अंदर एग्जिट फंक्शन का उपयोग करें, ताकि प्रक्रिया समाप्त होने से ठीक पहले उससे बाहर निकला जा सके। इसके बाद निष्पादन उस पंक्ति पर लौट आता है जिसने इसे कॉल किया था।

यदि आप कॉल कीवर्ड का उपयोग करते हैं, तो आर्गुमेंट्स को कोष्ठक में रखें। यदि आप कॉल कीवर्ड का उपयोग नहीं करते हैं, तो एकाधिक आर्गुमेंट्स के चारों ओर कोष्ठक का उपयोग न करें। यह गलती VBScript में एक आम सिंटैक्स त्रुटि है।

जी हां। VBScript का सब या फंक्शन खुद को कॉल कर सकता है, जिसे रिकर्सन कहते हैं। हमेशा एक ऐसी शर्त शामिल करें जो कॉल को रोक दे, अन्यथा स्क्रिप्ट तब तक लूप करती रहेगी जब तक स्टैक स्पेस खत्म न हो जाए।

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

हाँ। एआई कर सकता है। tracयह बताएं कि ByRef और ByVal का उपयोग करने पर मान कैसे बदलता है, प्रत्येक के लिए आउटपुट दिखाएं, और इस आधार पर सुझाव दें कि किसका उपयोग करना चाहिए कि कॉलर को परिवर्तन दिखना चाहिए या नहीं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: