Search

1.4a — Function parameters और arguments पर एक नज़र

Function parameters और arguments

पिछले lesson में आपने सिखा की function अपने caller को कोई value return कर सकता है ।

अकसर ये ज़रूरी हो जाता है की call किये गये function को कोई value दिया जाये या pass किया जाये, ताकि function उस value के साथ कुछ कर सके । उदाहरण के लिए, यदि हम कोई ऐसा function लिखना चाहते हैं जो दिए गये दो numbers को add करता है, तो हमे function को कोई दो numbers pass करने होंगे जिन्हें वो add करेगा अर्थात जोड़ेगा । नहीं तो function को पता कैसे चलेगा की किन numbers को जोड़ना है ? किसी function को parameters और arguments की सहायता से value pass किया जाता है ।

Function parameter एक variable होता है जहां caller द्वारा दिए गए value को store किया जाता है । Function parameters को इसके (function के) नाम के बाद parenthesis ( () ) में रखा जाता है । यदि parameters एक से ज्यादा हों तो इन्हें comma (,) से अलग किया जाता है ।

नीचे कुछ ऐसे functions दिए गये हैं जिनमे parameters की संख्या अलग-अलग है:

Argument वो value है जो किसी caller द्वारा , call किये गये function को उसके parameters के value के रूप में pass किया जाता है:

ध्यान दे की एक से ज्यादा arguments भी comma (,) से अलग किये जाते हैं । Arguments की संख्या, call किये जा रहे function के parameters की संख्या के बराबर होने चाहिए । ऐसा ना होने पर compiler error देगा ।

Parameters और arguments साथ में काम कैसे करते हैं

जब किसी function को call किया जाता है, उस function के सारे parameters variables में बदल जाते हैं और caller से pass किया गया हर argument, इसके matching parameter में copy कर लिया जाता है । इस process (प्रक्रिया) को pass by value के नाम से जाना जाता है ।

उदाहरण के लिए:

जब printValues() function, arguments 6 और 7 के साथ call किया जाता है तो printValues का parameter x variable बन जाता है और इसे value 6 assign कर दिया जाता है । printValues का parameter y variable बन जाता है और इसे 7 assign कर दिया जाता है ।

इस program का output:

6
7

Parameters और return values का साथ में काम करना

Parameters और एक return value का इस्तेमाल करते हुए हम ऐसे functions बना सकते हैं जो input के रूप में caller से डाटा लेता हो, उस डाटा पर कोई calculation करता हो और calculated value को वापस caller को return कर देता हो ।

यहाँ एक आसान सा function दिया गया है जो दिए गये दो numbers को जोड़ता है और result caller को return करता है:

जब function add() को call किया जाता है, parameter x को value 4 assign कर दिया जाता है और इसी क्रम में parameter y को value 5 assign कर दिया जाता है ।

इसके बाद function add() x + y को evaluate करता है, जिसका result 9 आएगा, और फिर इस value को return statement के द्वारा main() के पास भेज देता है । फिर main function में value (जो की यहाँ 9 है) को print करने के लिए इसे cout के पास भेज दिया जाता है ।

Output:

9

चित्रित रूप में:

और अधिक examples

आइये कुछ और function calls पर नज़र डालें:

इस program का output:

9
6
15
10
7
6

पहले के दो statements आसानी से समझ आते है ।

तीसरे statement में, parameters खुद expressions हैं जो pass किए जाने से पहले evaluate होते हैं । यहाँ 1 + 2 evaluate होकर 3 देता है, इसलिए x को value 3 pass किया जाता है । 3 * 4 evaluate होकर 12 देता है, इसलिए y को value 12 pass किया जाता है । add(3, 12) result के रूप में 15 return करता है ।

अगला statement भी बिलकुल इसी तरह आसान है:

यहाँ add() में x = a और y = a assign किया जाता है । क्यूंकि a = 5 है, add(a, a) = add(5, 5) होगा, जिसका result 10 आएगा ।

इससे अगला statement थोडा घुमाऊ है:

जब function add() execute होगा, CPU को parameters x और y का value मालूम होना चाहिए । x आसानी से समझ आ जायेगा क्यूंकि हमने इसे value के रूप में integer 1 सीधे-सीधे pass किया है, इसलिए x=1 । y के value के लिए, CPU को multiply(2, 3) को पहले evaluate करना होगा । यहाँ CPU कुछ इस प्रकार का assignment करता है: z = 2 और w = 3, और इस तरह multiply(2, 3) एक integer value 6 return करता है । अब ये value 6 add() function के y parameter के value के रूप में assign किया जा सकता है । add(1, 6) integer 7 return करता है, जो print होने के लिए cout के पास भेज दिया जाता है ।

कम शब्दों में, (यहाँ => symbol का प्रयोग evaluations दिखाने के लिए किया गया है):
add(1, multiply(2, 3)) => add(1, 6) => 7

नीचे दिया गया function भी आपको परेशान कर सकता है क्यूंकि दिए गए parameters में से एक parameter खुद add() function को call करता है:

लेकिन ये भी बिलकुल वैसा ही है जैसे पिछले statement में एक parameter के रूप में multiply() को call किया गया था:

इससे पहले की CPU add() के सबसे बाहरी call को evaluate करे, इसे पहले add(2, 3) को evaluate करना होगा । add(2, 3) evaluate होकर 5 देता है । अब CPU add(1, 5) को evaluate कर सकता है, जो value 6 return करेगा । अब इस value 6 को main में cout के पास भेजा जायेगा ।

कम शब्दों में:
add(1, add(2, 3)) => add(1, 5) => 6

निष्कर्ष

Functions को फिर से इस्तेमाल करने लायक बनाने के लिए parameters काफी महत्वपूर्ण हैं, क्यूंकि ये function का कोई विशेष input पहले से जाने बिना किसी task को पूरा करने की अनुमति देते हैं । वे input values बाद में किसी function (caller) के arguments के रूप में दिए जाते हैं ।

Return value functions को एक value return करने की अनुमति देता है ।

Quiz

1) Program के इस भाग में क्या गलत है?

2) इस program में कौन सी दो चीजें गलत हैं?

3) ये program क्या print करेगा?

4) एक function doubleNumber() लिखें, जो केवल एक integer parameter लेगा और इसपर कोई calculation कर caller को pass किये गए value का दुगुना return करेगा ।

5) एक पूरा program लिखें जो यूजर से एक integer value लेगा (cin की सहायता से, 1.3a -- cout, cin, endl, std namespace और using statements पर एक नज़र lesson में इसके बारे में बताया गया है), doubleNumber() function के इस्तेमाल से इसे दोगुना करेगा जिसे आपने question 4 में लिखा है, और फिर दोगुना किया गया value cout की मदद से console पर print करेगा ।

Quiz Answers

Answers देखने के लिए नीचे के areas को अपने mouse से select करें ।

1) Show Solution

2) Show Solution

3) Show Solution

4) Show Solution

5) Show Solution

Note: आपको #4 and #5 के लिए दिए गये solution से अलग solutions भी ज़रूर मिलेंगे । अकसर C++ में किसी problem को solve करने के एक से ज्यादा तरीके होते हैं ।

1.4b -- Functions क्यूँ उपयोगी हैं और उनका सबसे बेहतर प्रयोग कैसे किया जाये
Index
1.4 -- Functions और return values पर एक नज़र

2 comments to 1.4a — Function parameters और arguments पर एक नज़र

  • yash patel

    In Hindi it’s awesome but please add more tutorial on it…..

    • Devashish

      Tutorials को पूरा करने का प्रयास जारी है । यहाँ प्रत्येक दिन एक section का translation पोस्ट किया जायेगा । यदि आपको हिंदी version पसन्द आया है तो आप इन आर्टिकल्स को social networking sites पर share कर सकते हैं, ताकि आपके friends भी इसका लाभ ले सके ।

Leave a Comment

Put C++ code inside [code][/code] tags to use the syntax highlighter