फंक्शन्स एक मशीन की तरह होते हैं क्योंकि वे कुछ कार्यक्षमता करते हैं और किसी प्रकार का परिणाम उत्पन्न करते हैं। जैसे, मशीन कुछ इनपुट लेती है, उस इनपुट को प्रोसेस करती है और एक आउटपुट उत्पन्न करती है, इसी तरह फंक्शन कुछ वैल्यू लेता है, उन वैल्यू पर ऑपरेट करता है और आउटपुट उत्पन्न करता है। मैन्युअल रूप से एक व्यक्ति मशीन को इनपुट पास करता है तभी मशीन अपनी कार्यक्षमता शुरू करेगी, उसी तरह जब प्रोग्रामर फंक्शन को कॉल करता है तो यह निष्पादित होना शुरू हो जाता है।
विभिन्न भाषाओं में फंक्शन्स के नाम अलग-अलग हो सकते हैं, लेकिन वे दो सामान्य विशेषताएं साझा करते हैं जैसे -
उनमें निर्देशों का क्रम होता है जिसे प्रोसेस करने की आवश्यकता होती है
उन निर्देशों को एक नाम से पहचाना जाता है, जो फंक्शन को संदर्भित करता है
फंक्शन्स का उपयोग क्यों किया जाता है?
पुन: उपयोगिता - जब वही कार्यक्षमता कई स्थानों पर आवश्यक हो तो सबसे अच्छा दृष्टिकोण फंक्शन को एक बार बनाना और इसे कई बार कॉल करना होगा बजाय उसी कार्यक्षमता वाले फंक्शन को बार-बार डिक्लेयर करने के। पुन: उपयोगिता सबसे बड़ी विशेषता या लाभ है जो एक फंक्शन प्रदान करता है।
कोड में मॉड्यूलरिटी - फंक्शन आपके कोड को साफ और स्पष्ट बनाता है क्योंकि main() फंक्शन में कई लाइन्स कोड लिखने के बजाय, फंक्शन्स डिक्लेयर करके इसे पढ़ना और कोड करना अधिक स्पष्ट और आसान बनाता है।
संशोधन में आसानी - यदि भविष्य में कोड में कोई बदलाव होता है तो प्रोग्रामर केवल फंक्शन में बदलाव करेगा बजाय कई स्थानों पर बदलाव करने के। इसलिए, हम कह सकते हैं कि फंक्शन डेटा में रिडंडेंसी को भी कम करता है।
एब्स्ट्रैक्शन प्रदान करता है - फंक्शन के प्रासंगिक नाम से यह निर्धारित किया जा सकता है कि वह फंक्शन क्या करने वाला है बजाय यह बताए कि वह फंक्शन यह कैसे कर रहा है। उदाहरण के लिए, C में हमारे पास "maths.h" हेडर फाइल है जिसमें pow() फंक्शन सहित कई फंक्शन्स होते हैं। हम इस फंक्शन का सीधे उपयोग पावर वैल्यू कैलकुलेट करने के लिए कर सकते हैं बजाय यह जाने कि यह फंक्शन डेफिनिशन में इसे कैसे कैलकुलेट कर रहा है।
फंक्शन डिक्लेरेशन और डेफिनिशन
फंक्शन डिक्लेरेशन कंपाइलर को फंक्शन के रिटर्न टाइप और नाम के बारे में बताने की प्रक्रिया है।
सिंटैक्स
बॉडी के बिना
Return_type function_name(parameter list which is optional);
बॉडी के साथ
Return_type function_name(parameter list which is optional) { //body of the function }
व्याख्या
return_type - यह कंपाइलर को बताता है कि फंक्शन कुछ लौटाएगा या नहीं और यदि कोई डेटा लौटाता है तो किस प्रकार का डेटा लौटाएगा।
void dummy(){
//चूंकि फंक्शन का रिटर्न टाइप void है इसलिए यह कॉलर को कुछ नहीं लौटाएगा और इसलिए इसमें रिटर्न स्टेटमेंट नहीं होगा। }
Int dummy(){
//चूंकि फंक्शन का रिटर्न टाइप int है इसलिए यह कॉलर को इंटीजर वैल्यू लौटाएगा और यह अनिवार्य है कि इसमें रिटर्न स्टेटमेंट होगा क्योंकि यह इंटीजर वैल्यू लौटा रहा है।
return integer_value; }
float dummy(){
//चूंकि फंक्शन का रिटर्न टाइप float है इसलिए यह कॉलर को फ्लोटिंग वैल्यू लौटाएगा और यह अनिवार्य है कि इसमें रिटर्न स्टेटमेंट होगा क्योंकि यह फ्लोटिंग वैल्यू लौटा रहा है।
return float_value; }
function name - फंक्शन का नाम प्रोग्रामर जो चाहे दे सकता है। जैसे उपरोक्त उदाहरण में, हमने फंक्शन का नाम dummy रखा है
parameters list(optional) - जब भी फंक्शन कॉलर द्वारा पास की गई वैल्यूज पर ऑपरेट करेगा, हमें पैरामीटर्स बनाने होंगे।
फंक्शन डेफिनिशन में वह कार्यक्षमता होती है जो फंक्शन को जब भी कॉल किया जाए तब करने की आवश्यकता होती है।
उदाहरण
#includeusing namespace std; // फंक्शन जो दो पैरामीटर्स में से सबसे बड़ी वैल्यू कैलकुलेट करता है int greatest(int val_1, int val_2) // फंक्शन का रिटर्न टाइप इंटीजर वैल्यू है{ // फंक्शन की बॉडी (डेफिनिशन) if(val_1>val_2){ return val_1; } else{ return val_2; } } int main(){ int val_1=10, val_2=20; // फंक्शन को कॉल करना और फंक्शन द्वारा लौटाई गई इंटीजर वैल्यू को इंटीजर वेरिएबल में स्टोर करना int highest = greatest(val_1,val_2); // सबसे बड़ी वैल्यू प्रिंट करना cout<<"The greatest value is : "<
आउटपुट
उपरोक्त कोड का आउटपुट होगा -
The greatest value is : 20
फंक्शन पैरामीटर्स
पैरामीटर्स वैकल्पिक हैं, यदि कोई पैरामीटर नहीं है तो भी फंक्शन अपनी कार्यक्षमता करेगा
फंक्शन डेफिनिशन में डिक्लेयर्ड वेरिएबल्स जो कॉलर द्वारा पास की गई वैल्यूज को पकड़ते हैं, पैरामीटर्स कहलाते हैं। int greatest(int val_1, int val_2)
int greatest(int val_1, int val_2)

कॉलर द्वारा पास किए गए वेरिएबल्स को आर्गुमेंट्स कहा जाता है।
int highest = greatest(val_1,val_2);

एक्चुअल पैरामीटर्स बनाम फॉर्मल पैरामीटर्स-
एक्चुअल पैरामीटर्स वे डेटा हैं जो फंक्शन को पास किए जाते हैं जैसे उपरोक्त उदाहरण में, 10 और 20 एक्चुअल पैरामीटर्स हैं
फॉर्मल पैरामीटर्स वे डेटा हैं जो फंक्शन द्वारा प्राप्त किए जाते हैं जैसे उपरोक्त उदाहरण में, val_1 और val_2 फॉर्मल पैरामीटर्स हैं।
मुख्य फंक्शन main() के बारे में महत्वपूर्ण बिंदु
हर प्रोग्राम का एक एंट्री पॉइंट होता है जहां से निष्पादन शुरू होता है, जैसे C और C++ में हमारे पास फंक्शन main() होता है।
यदि main() फंक्शन का रिटर्न टाइप void है तो इसका मतलब है कि फंक्शन कंपाइलर को कुछ नहीं लौटाता जबकि यदि फंक्शन main() का रिटर्न टाइप int है तो यह कंपाइलर को वैल्यू लौटाता है। जैसे, हमारे पास main() में "return 0" होता है जो प्रोग्राम के समाप्ति को दर्शाता है।
C में - फंक्शन main() का रिटर्न टाइप केवल void और int हो सकता है क्योंकि main() फंक्शन या तो कंपाइलर को इंटीजर वैल्यू लौटा सकता है या कुछ नहीं लौटाना चाहिए।
C++ में - फंक्शन main() का रिटर्न टाइप केवल int हो सकता है क्योंकि main() फंक्शन कंपाइलर को इंटीजर वैल्यू लौटाता है।