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

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

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

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

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

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

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

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

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

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

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

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

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

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

निम्नलिखित नियमित परिभाषा पर विचार करें:

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

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

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

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

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

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

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

पॉवरशेल उदाहरण:

व्यतिक्रम तर्कों को चर-लंबाई तर्क सूची के विशेष प्रकरण के रूप में देखा जा सकता है।

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

पॉवरशेल उदाहरण:

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

पॉवरशेल उदाहरण:

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

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

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

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

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

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

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

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

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

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

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

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

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

यह भी देखें

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