पैरामीटर (कंप्यूटर प्रोग्रामिंग)

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

एक फ़ंक्शन के तर्क के विपरीत। सामान्य गणितीय उपयोग में तर्क, कंप्यूटर विज्ञान में तर्क एक वास्तविक इनपुट अभिव्यक्ति है जो किसी फ़ंक्शन, प्रक्रिया या रूटीन को इनवोकेशन/कॉल स्टेटमेंट में पास/आपूर्ति की जाती है, जबकि पैरामीटर उपनेमका के कार्यान्वयन के अंदर चर है। उदाहरण के लिए, यदि कोई परिभाषित करता है  सबरूटीन के रूप में , तब   पैरामीटर हैं, जबकि अगर इसे कहा जाता है  , तब   तर्क हैं। ध्यान दें कि कॉलिंग संदर्भ से चर (और उसके भाव) तर्क हो सकते हैं: यदि सबरूटीन को as   फिर चर   तर्क हैं, मूल्य नहीं. अधिक जानकारी के लिए #पैरामीटर और तर्क अनुभाग देखें।

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

उदाहरण
C (प्रोग्रामिंग लैंग्वेज) में निम्नलिखित प्रोग्राम एक फ़ंक्शन को परिभाषित करता है जिसका नाम SalesTax है और इसका एक पैरामीटर मूल्य है। कीमत का प्रकार डबल है (यानी एक तैरनेवाला स्थल | डबल-परिशुद्धता फ़्लोटिंग पॉइंट नंबर)। फ़ंक्शन का रिटर्न प्रकार भी दोहरा है। फ़ंक्शन परिभाषित होने के बाद, इसे निम्नानुसार लागू किया जा सकता है: इस उदाहरण में, फ़ंक्शन को तर्क 10.00 के साथ लागू किया गया है। जब ऐसा होता है, तो 10.00 मूल्य निर्धारित किया जाएगा, और फ़ंक्शन इसके परिणाम की गणना करना शुरू कर देता है। परिणाम तैयार करने के चरण नीचे दिए गए हैं, {} में संलग्न हैं।  इंगित करता है कि करने के लिए पहली चीज 0.05 को मूल्य के मूल्य से गुणा करना है, जो 0.50 देता है।   इसका मतलब है कि फ़ंक्शन परिणाम का उत्पादन करेगा. इसलिए, अंतिम परिणाम (बाइनरी अंशों के रूप में दशमलव अंशों का प्रतिनिधित्व करने के साथ सामना करने वाली संभावित राउंड-ऑफ त्रुटियों को अनदेखा करना) 0.50 है।

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

प्रक्रिया परिभाषाओं में पैरामीटर दिखाई देते हैं; प्रक्रिया कॉल में तर्क प्रकट होते हैं। समारोह परिभाषा में  चर x एक पैरामीटर है; समारोह कॉल में   मान 2 फ़ंक्शन का तर्क है। संक्षेप में, एक पैरामीटर एक प्रकार है, और एक तर्क एक उदाहरण है।

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

इसके विपरीत, तर्क भाव हैं प्रक्रिया को आपूर्ति की जाती है जब इसे कहा जाता है, आमतौर पर एक पैरामीटर से मेल खाने वाली एक अभिव्यक्ति। मापदंडों के विपरीत, जो प्रक्रिया की परिभाषा का एक अपरिवर्तनीय हिस्सा है, तर्क कॉल से कॉल में भिन्न हो सकते हैं। प्रत्येक बार एक प्रक्रिया को कॉल किया जाता है, प्रक्रिया कॉल का हिस्सा जो तर्कों को निर्दिष्ट करता है उसे तर्क सूची कहा जाता है।

हालाँकि मापदंडों को आमतौर पर तर्कों के रूप में संदर्भित किया जाता है, तर्कों को कभी-कभी वास्तविक मान या पैरामीटर चर के लिए निर्दिष्ट संदर्भ के रूप में माना जाता है जब सबरूटीन को रन टाइम (प्रोग्राम जीवनचक्र चरण) | रन-टाइम पर कहा जाता है। सबरूटीन में कॉल करने वाले कोड पर चर्चा करते समय, सबरूटीन में पारित कोई भी मान या संदर्भ तर्क होते हैं, और कोड में वह स्थान जहां ये मान या संदर्भ दिए जाते हैं, पैरामीटर सूची है। सबरूटीन परिभाषा के अंदर कोड पर चर्चा करते समय, सबरूटीन की पैरामीटर सूची में चर पैरामीटर होते हैं, जबकि रनटाइम पर पैरामीटर के मान तर्क होते हैं। उदाहरण के लिए, सी में, धागे से निपटने के दौरान शून्य * प्रकार के तर्क में पास होना आम बात है और इसे अपेक्षित प्रकार में डाला जाता है: अंतर को बेहतर ढंग से समझने के लिए, C (प्रोग्रामिंग लैंग्वेज) में लिखे गए निम्नलिखित फंक्शन पर विचार करें: फ़ंक्शन योग के दो पैरामीटर हैं, जिनका नाम addend1 और addend2 है। यह मापदंडों में दिए गए मान जोड़ता है, और सबरूटीन के कॉलर को परिणाम देता है (सी कंपाइलर द्वारा स्वचालित रूप से आपूर्ति की गई तकनीक का उपयोग करके)।

सम फ़ंक्शन को कॉल करने वाला कोड इस तरह दिखाई दे सकता है: चर value1 और value2 मानों के साथ प्रारंभ किए गए हैं। इस संदर्भ में, value1 और value2, दोनों योग फ़ंक्शन के लिए तर्क हैं।

रनटाइम पर, इन वेरिएबल्स को असाइन किए गए मान फ़ंक्शन योग को तर्कों के रूप में पास किए जाते हैं। Sum फ़ंक्शन में, पैरामीटर addend1 और addend2 का मूल्यांकन किया जाता है, जिससे क्रमशः तर्क 40 और 2 प्राप्त होते हैं। तर्कों के मान जोड़े जाते हैं, और परिणाम कॉलर को वापस कर दिया जाता है, जहां इसे चर राशि_वैल्यू को सौंपा जाता है।

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

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

दिनचर्या  दो तर्क लेता है   और , जिन्हें रूटीन का औपचारिक तर्क कहा जाता है। को एक कॉल   वास्तविक तर्कों को निर्दिष्ट करता है, जैसा कि नीचे दिखाया गया है   और.

पैरामीटर्स को या तो औपचारिक या वास्तविक माना जाता है। सामान्य वर्ग की परिभाषा में औपचारिक सामान्य पैरामीटर का उपयोग किया जाता है। नीचे दिए गए उदाहरण में, class  एक सामान्य वर्ग के रूप में घोषित किया गया है जिसमें दो औपचारिक सामान्य पैरामीटर हैं,   ब्याज के डेटा का प्रतिनिधित्व और   डेटा के लिए हैश कुंजी का प्रतिनिधित्व करना:

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

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

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

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

डिफ़ॉल्ट तर्क
कुछ प्रोग्रामिंग लैंग्वेज जैसे Ada (प्रोग्रामिंग लैंग्वेज), C++, क्लोजर, सामान्य लिस्प, फोरट्रान 90, पायथन (प्रोग्रामिंग लैंग्वेज), रूबी (प्रोग्रामिंग भाषा), Tcl (प्रोग्रामिंग लैंग्वेज), और विंडोज पॉवरशेल सबरूटीन की घोषणा में डिफ़ॉल्ट तर्क को स्पष्ट रूप से या निहित रूप से दिए जाने की अनुमति दें। यह कॉल करने वाले को उपनेमका को कॉल करते समय उस तर्क को छोड़ने की अनुमति देता है। यदि डिफ़ॉल्ट तर्क स्पष्ट रूप से दिया गया है, तो कॉलर द्वारा प्रदान नहीं किए जाने पर उस मान का उपयोग किया जाता है। यदि डिफ़ॉल्ट तर्क अंतर्निहित है (कभी-कभी वैकल्पिक जैसे कीवर्ड का उपयोग करके) तो भाषा एक प्रसिद्ध मान प्रदान करती है (जैसे शून्य सूचक, खाली, शून्य, एक खाली स्ट्रिंग, आदि) यदि कोई मान प्रदान नहीं किया जाता है फोन करने वाला।

पॉवरशेल उदाहरण: <वाक्यविन्यास प्रकाश लैंग = ps1con> पीएस> डॉक्टर 1.21 गीगावाट? 1.21 गीगावाट? महान स्काट!

पीएस> डॉक्टर 88 88 गीगावाट? 88 गीगावाट? महान स्काट!  डिफ़ॉल्ट तर्कों को चर-लंबाई तर्क सूची के विशेष मामले के रूप में देखा जा सकता है।

चर-लंबाई पैरामीटर सूची
कुछ भाषाएँ सबरूटीन्स को वैराडिक फ़ंक्शन को स्वीकार करने के लिए परिभाषित करने की अनुमति देती हैं। ऐसी भाषाओं के लिए, सबरूटीन्स को तर्कों की सूची के माध्यम से पुनरावृति करनी चाहिए।

पॉवरशेल उदाहरण: <वाक्यविन्यास प्रकाश लैंग = ps1con> पीएस> मार्टी 1985 वर्ष 1985 में वापस

पीएस> मार्टी 2015 1985 1955 वर्ष 2015 तक वापस वर्ष 1985 में वापस वर्ष 1955 में वापस 

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

पॉवरशेल उदाहरण: <वाक्यविन्यास प्रकाश लैंग = ps1con>

पुनश्च> जेनिफर 'ताजा' 'अनुभवी' युवा जेनिफर: मैं ताज़ा हूँ! ओल्ड जेनिफर: मैं अनुभवी हूँ!

पीएस > जेनिफर -विशेषणपुराना 'अनुभवी' -विशेषणयुवा 'ताजा' युवा जेनिफर: मैं ताज़ा हूँ! ओल्ड जेनिफर: मैं अनुभवी हूँ! 

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

आउटपुट पैरामीटर
आउटपुट पैरामीटर, जिसे आउट पैरामीटर या रिटर्न पैरामीटर के रूप में भी जाना जाता है, इनपुट के अधिक सामान्य उपयोग के बजाय आउटपुट के लिए उपयोग किया जाने वाला पैरामीटर है। संदर्भ मापदंडों द्वारा कॉल का उपयोग करना, या मूल्य मापदंडों द्वारा कॉल करना जहां मूल्य एक संदर्भ है, क्योंकि आउटपुट पैरामीटर कुछ भाषाओं में एक मुहावरा है, विशेष रूप से C और C++, जबकि अन्य भाषाओं में आउटपुट पैरामीटर के लिए अंतर्निहित समर्थन है। आउटपुट पैरामीटर के लिए अंतर्निहित समर्थन वाली भाषाओं में एडा (प्रोग्रामिंग भाषा) शामिल है (बी देखें: एडीए प्रोग्रामिंग/उपप्रोग्राम), फोरट्रान (फोरट्रान 90 के बाद से; बी देखें: फोरट्रान/फोरट्रान प्रक्रियाएं और कार्य#इरादा|फोरट्रान इरादा), एसक्यूएल के लिए विभिन्न प्रक्रियात्मक एक्सटेंशन, जैसे पीएल/एसक्यूएल (पीएल/एसक्यूएल#फंक्शन देखें) |पीएल/एसक्यूएल कार्य) और Transact-SQL, C Sharp (प्रोग्रामिंग लैंग्वेज)|C# और .NET फ्रेमवर्क, स्विफ्ट (प्रोग्रामिंग भाषा), और स्क्रिप्टिंग भाषा टीस्क्रिप्ट (देखें टीस्क्रिप्ट#फंक्शन डिक्लेरेशन)।

अधिक सटीक रूप से, कोई तीन प्रकार के पैरामीटर या पैरामीटर मोड में अंतर कर सकता है: ''एस, आउटपुट पैरामीटर, औरएस; इन्हें अक्सर निरूपित किया जाता है,  , और   या. एक इनपुट तर्क (इनपुट पैरामीटर के लिए तर्क) एक मान होना चाहिए, जैसे प्रारंभिक चर या शाब्दिक, और इसे फिर से परिभाषित या असाइन नहीं किया जाना चाहिए; एक आउटपुट तर्क एक असाइन करने योग्य चर होना चाहिए, लेकिन इसे प्रारंभ करने की आवश्यकता नहीं है, कोई मौजूदा मान पहुंच योग्य नहीं है, और इसे एक मान निर्दिष्ट किया जाना चाहिए; और एक इनपुट/आउटपुट तर्क एक प्रारंभिक, असाइन करने योग्य चर होना चाहिए, और वैकल्पिक रूप से एक मान असाइन किया जा सकता है। भाषाओं के बीच सटीक आवश्यकताएं और प्रवर्तन अलग-अलग होते हैं - उदाहरण के लिए, Ada 83 में आउटपुट पैरामीटर केवल असाइन किए जा सकते हैं, पढ़े नहीं, असाइनमेंट के बाद भी (इसे Ada 95 में एक सहायक संचायक चर की आवश्यकता को हटाने के लिए हटा दिया गया था)। ये एक आर-वैल्यू (एक वैल्यू है), एक एल-वैल्यू (असाइन किया जा सकता है), या एक आर-वैल्यू/एल-वैल्यू (एक वैल्यू है) के एक्सप्रेशन में मूल्य (कंप्यूटर विज्ञान)  की धारणा के अनुरूप हैं। और सौंपा जा सकता है), क्रमशः, हालांकि इन शब्दों का सी में विशेष अर्थ है।

कुछ मामलों में केवल इनपुट और इनपुट/आउटपुट को अलग किया जाता है, आउटपुट को इनपुट/आउटपुट का एक विशिष्ट उपयोग माना जाता है, और अन्य मामलों में केवल इनपुट और आउटपुट (लेकिन इनपुट/आउटपुट नहीं) समर्थित होते हैं। डिफ़ॉल्ट मोड भाषाओं के बीच भिन्न होता है: फोरट्रान में 90 इनपुट/आउटपुट डिफ़ॉल्ट है, जबकि C# और SQL एक्सटेंशन में इनपुट डिफ़ॉल्ट है, और TScript में प्रत्येक पैरामीटर को इनपुट या आउटपुट के रूप में स्पष्ट रूप से निर्दिष्ट किया गया है।

सिंटैक्टिक रूप से, पैरामीटर मोड को आमतौर पर फ़ंक्शन डिक्लेरेशन में एक कीवर्ड के साथ इंगित किया जाता है, जैसे  सी # में। परंपरागत रूप से आउटपुट पैरामीटर को अक्सर पैरामीटर सूची के अंत में स्पष्ट रूप से अलग करने के लिए रखा जाता है, हालांकि इसका हमेशा पालन नहीं किया जाता है। TScript एक अलग दृष्टिकोण का उपयोग करता है, जहां फ़ंक्शन डिक्लेरेशन में इनपुट पैरामीटर सूचीबद्ध होते हैं, फिर आउटपुट पैरामीटर, एक कोलन  द्वारा अलग किए जाते हैं और फ़ंक्शन में स्वयं कोई रिटर्न प्रकार नहीं होता है, जैसा कि इस फ़ंक्शन में होता है, जो टेक्स्ट के आकार की गणना करता है टुकड़ा: पैरामीटर मोड सांकेतिक शब्दार्थ का एक रूप है, जो प्रोग्रामर के इरादे को बताता है और कंपाइलर्स को त्रुटियों को पकड़ने और ऑप्टिमाइज़ेशन लागू करने की अनुमति देता है - वे अनिवार्य रूप से परिचालन सिमेंटिक्स (कैसे पैरामीटर पासिंग वास्तव में होता है) को लागू नहीं करते हैं। विशेष रूप से, हालांकि इनपुट पैरामीटर्स को कॉल बाई वैल्यू द्वारा लागू किया जा सकता है, और आउटपुट और इनपुट/आउटपुट पैरामीटर्स को कॉल बाई रेफरेंस द्वारा लागू किया जा सकता है - और यह बिना बिल्ट-इन सपोर्ट के भाषाओं में इन मोड्स को लागू करने का एक सीधा तरीका है - यह हमेशा ऐसा नहीं होता है। कार्यान्वित। इस भेद पर Ada '83 Rationale में विस्तार से चर्चा की गई है, जो इस बात पर जोर देता है कि पैरामीटर मोड सारगर्भित है जिससे पैरामीटर पासिंग मैकेनिज्म (संदर्भ द्वारा या प्रतिलिपि द्वारा) वास्तव में कार्यान्वित किया जाता है। उदाहरण के लिए, जबकि C# में इनपुट पैरामीटर (डिफ़ॉल्ट, कोई कीवर्ड नहीं) मान द्वारा पास किए जाते हैं, और आउटपुट और इनपुट/आउटपुट पैरामीटर ( और  ) पीएल/एसक्यूएल इनपुट पैरामीटर में संदर्भ द्वारा पारित किया जाता है  संदर्भ द्वारा पारित किया जाता है, और आउटपुट और इनपुट/आउटपुट पैरामीटर (  और  ) डिफ़ॉल्ट रूप से मान द्वारा पास किए जाते हैं और परिणाम वापस कॉपी किया जाता है, लेकिन इसका उपयोग करके संदर्भ द्वारा पारित किया जा सकता है   संकलक संकेत। आउटपुट पैरामीटर के लिए एक वाक्य रचनात्मक रूप से समान निर्माण फ़ंक्शन के समान नाम वाले चर के लिए वापसी मान निर्दिष्ट करना है। यह पास्कल (प्रोग्रामिंग भाषा) और फोरट्रान 66 और फोरट्रान 77 में पाया जाता है, जैसा कि इस पास्कल उदाहरण में है: यह शब्दार्थ से भिन्न है कि जब कॉल किया जाता है, तो फ़ंक्शन का मूल्यांकन किया जाता है - आउटपुट को स्टोर करने के लिए कॉलिंग स्कोप (कंप्यूटर साइंस) से एक चर पारित नहीं किया जाता है।

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

उदाहरण के लिए, सी में किसी फ़ंक्शन से दो चर वापस करने के लिए, कोई लिख सकता है: कहाँ  एक इनपुट पैरामीटर है और   और   आउटपुट पैरामीटर हैं।

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

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

आउटपुट और इनपुट/आउटपुट पैरामीटर फ़ंक्शन संरचना (कंप्यूटर विज्ञान) को रोकते हैं, क्योंकि आउटपुट अभिव्यक्ति के मूल्य के बजाय चर में संग्रहीत होता है। इस प्रकार किसी को प्रारंभ में एक चर घोषित करना चाहिए, और फिर कार्यों की श्रृंखला के प्रत्येक चरण को एक अलग कथन होना चाहिए। उदाहरण के लिए, सी ++ में निम्न फ़ंक्शन संरचना: जब आउटपुट और इनपुट/आउटपुट पैरामीटर के साथ लिखा जाता है तो इसके बजाय (for  यह एक आउटपुट पैरामीटर है, के लिए   एक इनपुट/आउटपुट पैरामीटर): एकल आउटपुट या इनपुट/आउटपुट पैरामीटर वाले फ़ंक्शन के विशेष मामले में और कोई वापसी मान नहीं, फ़ंक्शन संयोजन संभव है यदि आउटपुट या इनपुट/आउटपुट पैरामीटर (या C/C++ में, इसका पता) भी फ़ंक्शन द्वारा लौटाया जाता है, जिस स्थिति में उपरोक्त बन जाता है:

विकल्प
आउटपुट पैरामीटर के उपयोग के मामलों के लिए कई विकल्प हैं।

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

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

यह भी देखें

 * कमांड-लाइन तर्क
 * मूल्यांकन रणनीति
 * ऑपरेटर ओवरलोडिंग
 * मुक्त चर और बाध्य चर