C++ प्रोग्राम उदाहरणों के साथ फ़ंक्शन

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

में कार्य करता है C++ संबंधित कथनों को पुनः प्रयोज्य नाम वाले ब्लॉकों में समूहित करें जो इनपुट लेते हैं, उसे संसाधित करते हैं और आउटपुट लौटाते हैं। प्रोग्राम अंतर्निहित लाइब्रेरी फ़ंक्शंस और उपयोगकर्ता-परिभाषित फ़ंक्शंस को संयोजित करते हैं, जिनमें से प्रत्येक को घोषित, परिभाषित और कॉल किया जाता है ताकि कोड की पुनरावृत्ति से बचा जा सके।

  • 🧩 यह क्या है: एक फ़ंक्शन उन कथनों को समूहित करता है जो पैरामीटर लेते हैं, उन्हें संसाधित करते हैं और एक मान लौटाते हैं, जिससे एक ही ब्लॉक से एक सामान्य कार्य चलता है।
  • 📚 अंतर्निहित कार्य: RSI C++ मानक लाइब्रेरी में sqrt() जैसे तैयार फ़ंक्शन शामिल होते हैं जिन्हें आप बिना कोड लिखे सीधे कॉल कर सकते हैं।
  • उपयोगकर्ता-परिभाषित फ़ंक्शन: प्रोग्रामर अपने स्वयं के फ़ंक्शन बनाते हैं, उन्हें विशिष्ट नाम देते हैं, और प्रोग्राम में कहीं से भी उस कोड को कॉल कर सकते हैं।
  • 📝 घोषणा एवं परिभाषा: एक प्रोटोटाइप रिटर्न टाइप, नाम और आर्गुमेंट टाइप घोषित करता है; परिभाषा फंक्शन बॉडी प्रदान करती है।
  • 📞 कॉल और तर्क: किसी फ़ंक्शन को कॉल करने पर उसका बॉडी चलता है; आर्गुमेंट की संख्या और प्रकार पैरामीटर से मेल खाने चाहिए, और डिफ़ॉल्ट मानों की अनुमति है।
  • 🤖 एआई सहायता: GitHub Copilot और इसी तरह के सहायक ढाँचा तैयार करते हैं C++ एक संक्षिप्त टिप्पणी से फ़ंक्शन हस्ताक्षर, बॉडी और कॉल।

C++ कार्य

फंक्शन क्या है? C++?

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

से प्रत्येक C++ प्रोग्राम में कम से कम एक फ़ंक्शन होता है, main() फ़ंक्शन। आप अपने कोड को अलग-अलग फ़ंक्शन में विभाजित कर सकते हैं। यह विभाजन ऐसा होना चाहिए कि प्रत्येक फ़ंक्शन एक विशिष्ट कार्य करे।

इसमें कई अंतर्निहित कार्य हैं C++ मानक लाइब्रेरी। आप अपने प्रोग्राम के भीतर इन फ़ंक्शन को कॉल कर सकते हैं।

फ़ंक्शन का उपयोग क्यों करें?

फ़ंक्शन के उपयोग से कई लाभ जुड़े हैं। इनमें शामिल हैं:

  • प्रत्येक फ़ंक्शन संबंधित कोड को एक साथ रखता है। इससे प्रोग्रामर के लिए कोड को समझना आसान हो जाता है।
  • फंक्शन्स कोड पुनरावृत्ति को समाप्त करके प्रोग्रामिंग को आसान बनाते हैं।
  • फ़ंक्शन कोड के पुनः उपयोग को आसान बनाते हैं। आप प्रोग्राम के विभिन्न अनुभागों या प्रोग्राम के बाहर भी किसी कार्य को करने के लिए एक ही फ़ंक्शन को कॉल कर सकते हैं।

अंतर्निहित कार्य

In C++लाइब्रेरी फ़ंक्शन अंतर्निर्मित हैं C++ फ़ंक्शन। इन फ़ंक्शन का उपयोग करने के लिए, आपको बस उन्हें सीधे इनवोक/कॉल करना होगा। आपको फ़ंक्शन खुद लिखने की ज़रूरत नहीं है।

उदाहरण 1:

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	double num, squareRoot;
	cout << "Enter number: ";
	cin >> num;
	squareRoot = sqrt(num);
	cout << "The square root of " << num << " is: " << squareRoot;
	return 0;
}

आउटपुट:

का आउटपुट C++ अंतर्निर्मित sqrt() फ़ंक्शन का उदाहरण

कोड का स्क्रीनशॉट यहां दिया गया है:

C++ cmath से बिल्ट-इन sqrt() फ़ंक्शन को कॉल करने वाला कोड

Code स्पष्टीकरण:

  1. इसके कार्यों का उपयोग करने के लिए हमारे प्रोग्राम में iostream हेडर फ़ाइल शामिल करें।
  2. इसके फ़ंक्शन का उपयोग करने के लिए cmath लाइब्रेरी को शामिल करें। हम इसमें परिभाषित फ़ंक्शन sqrt() का उपयोग करना चाहते हैं।
  3. अपने कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी क्लासों का उपयोग किया जा सके।
  4. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
  5. दो डबल चर, num, और squareRoot घोषित करें।
  6. कंसोल पर कुछ टेक्स्ट प्रिंट करें। टेक्स्ट में उपयोगकर्ता से एक नंबर दर्ज करने के लिए कहा जाता है।
  7. कीबोर्ड से उपयोगकर्ता इनपुट पढ़ें। इनपुट वेरिएबल num का मान बन जाएगा।
  8. लाइब्रेरी फ़ंक्शन sqrt() को कॉल करें, जो किसी संख्या का वर्गमूल निकालता है। हमने फ़ंक्शन में पैरामीटर num पास किया है, जिसका अर्थ है कि यह num का वर्गमूल निकालेगा। यह फ़ंक्शन cmath लाइब्रेरी में परिभाषित है।
  9. उपयोगकर्ता द्वारा दर्ज की गई संख्या, उसका वर्गमूल और कुछ अन्य पाठ कंसोल पर प्रिंट करें।
  10. प्रोग्राम को सफलतापूर्वक पूरा होने पर मान लौटाना होगा।
  11. main() फ़ंक्शन के मुख्य भाग का अंत.

उपयोगकर्ता-परिभाषित कार्य

C++ प्रोग्रामर को अपने स्वयं के फ़ंक्शन परिभाषित करने की अनुमति देता है। फ़ंक्शन का उद्देश्य संबंधित कोड को समूहीकृत करना है। फिर कोड को एक अद्वितीय पहचानकर्ता, फ़ंक्शन नाम दिया जाता है।

इस फंक्शन को प्रोग्राम के किसी भी दूसरे भाग से कॉल/इनवोक किया जा सकता है। फिर यह अपने बॉडी में परिभाषित कोड को निष्पादित करेगा।

उदाहरण 2:

#include <iostream>
using namespace std;

void sayHello() {
	cout << "Hello!";
}

int main() {

	sayHello();

	return 0;
}

आउटपुट:

का आउटपुट C++ उपयोगकर्ता-परिभाषित sayHello() फ़ंक्शन

कोड का स्क्रीनशॉट यहां दिया गया है:

C++ उपयोगकर्ता-परिभाषित फ़ंक्शन को परिभाषित करने और कॉल करने वाला कोड

Code स्पष्टीकरण:

  1. इसके कार्यों का उपयोग करने के लिए हमारे प्रोग्राम में iostream हेडर फ़ाइल शामिल करें।
  2. अपने कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी क्लासों का उपयोग किया जा सके।
  3. sayHello() नामक एक उपयोगकर्ता-परिभाषित फ़ंक्शन बनाएँ.
  4. जब sayHello() फ़ंक्शन को कॉल किया जाता है तो कंसोल पर कुछ टेक्स्ट प्रिंट करें।
  5. sayHello() फ़ंक्शन के मुख्य भाग का अंत.
  6. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
  7. sayHello() नामक फ़ंक्शन को कॉल/आह्वान करें।
  8. प्रोग्राम को सफलतापूर्वक पूरा होने पर मान लौटाना होगा।
  9. main() फ़ंक्शन के मुख्य भाग का अंत.

किसी फंक्शन का उपयोग करने से पहले कंपाइलर को उसके बारे में पता होना चाहिए।

फ़ंक्शन घोषणा/प्रोटोटाइप

यदि आप main() फ़ंक्शन के बाद उपयोगकर्ता-परिभाषित फ़ंक्शन परिभाषित करते हैं, तो C++ संकलक एक त्रुटि लौटाएगा। इसका कारण यह है कि कंपाइलर को उपयोगकर्ता-परिभाषित फ़ंक्शन का विवरण नहीं पता है। विवरण में इसका नाम, तर्कों के प्रकार और उनके रिटर्न प्रकार शामिल हैं।

In C++, फ़ंक्शन घोषणा/प्रोटोटाइप बिना बॉडी के फ़ंक्शन घोषित करता है। यह कंपाइलर को उपयोगकर्ता-परिभाषित फ़ंक्शन का विवरण देता है।

घोषणा/प्रोटोटाइप में, हम रिटर्न प्रकार, फ़ंक्शन नाम और तर्क प्रकार शामिल करते हैं। तर्कों के नाम नहीं जोड़े जाते हैं। हालाँकि, तर्क नाम जोड़ने से कोई त्रुटि उत्पन्न नहीं होती है।

C++ फ़ंक्शन घोषणा/प्रोटोटाइप सिंटैक्स आरेख

फ़ंक्शन परिभाषा

फ़ंक्शन घोषणा का उद्देश्य यह बताना है कि C++ कंपाइलर को फ़ंक्शन नाम, रिटर्न प्रकार और पैरामीटर के बारे में बताता है। फ़ंक्शन परिभाषा कंपाइलर को बताती है C++ फ़ंक्शन बॉडी के बारे में संकलक से बात करें।

C++ फ़ंक्शन परिभाषा संरचना आरेख

वाक्य - विन्यास

return_datatype function_name( parameters) {
   function body 
}

ऊपर से, फ़ंक्शन परिभाषा में फ़ंक्शन हेडर और बॉडी होती है। यहाँ पैरामीटर्स की व्याख्या दी गई है:

  • return_datatype- कुछ फ़ंक्शन मान लौटाते हैं। यह पैरामीटर लौटाए गए मान के डेटा प्रकार को दर्शाता है। कुछ फ़ंक्शन मान नहीं लौटाते हैं। ऐसे में, इस पैरामीटर का मान शून्य (void) होता है।
  • फ़ंक्शन_नाम- यह फ़ंक्शन का नाम है। फ़ंक्शन नाम और पैरामीटर फ़ंक्शन हस्ताक्षर बनाते हैं।
  • पैरामीटर - यह फ़ंक्शन पैरामीटर का प्रकार, क्रम और संख्या है। कुछ फ़ंक्शन में पैरामीटर नहीं होते हैं।
  • फ़ंक्शन बॉडी- ये कथन हैं जो परिभाषित करते हैं कि फ़ंक्शन क्या करेगा।

फंक्शन कॉल

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

फ़ंक्शन को उसके नाम से कॉल किया जाता है। यदि फ़ंक्शन पैरामीटर लेता है, तो कॉल के दौरान उनके मान पास किए जाने चाहिए। यदि फ़ंक्शन कोई पैरामीटर नहीं लेता है, तो कॉल के दौरान कोई मान पास न करें।

C++ फ़ंक्शन कॉल सिंटैक्स आरेख

तर्क पारित करना

In C++, एक तर्क/पैरामीटर एक फ़ंक्शन को उसके कॉल के दौरान दिया गया डेटा है। मानों को उनके संबंधित चर में आरंभीकृत किया जाना चाहिए।

किसी फ़ंक्शन को कॉल करते समय, आर्गुमेंट्स की संख्या बराबर होनी चाहिए। इसका मतलब है कि आपके द्वारा पास किए गए मान पैरामीटर्स की संख्या के बराबर होने चाहिए। साथ ही, मानों का प्रकार भी पैरामीटर्स के प्रकार से मेल खाना चाहिए। यदि पहला पैरामीटर एक पूर्णांक है, तो उसे पास किया गया मान भी पूर्णांक होना चाहिए।

फ़ंक्शन पैरामीटरों को डिफ़ॉल्ट मान दिए जा सकते हैं। यदि आप फ़ंक्शन कॉल के दौरान पैरामीटर के लिए कोई मान नहीं देते हैं, तो डिफ़ॉल्ट मान का उपयोग किया जाएगा।

उदाहरण 3: फ़ंक्शन कैसे लिखें और कॉल करें

#include <iostream>
using namespace std;
int addFunc(int, int);
int main() {
	int x, y, sum;
	cout << "Enter two numbers: ";
	cin >> x >> y;
	sum = addFunc(x, y);
	cout <<"The sum of "<<x<< " and " <<y<<" is: "<<sum;
	return 0;
}
int addFunc(int num1, int num2) {
	int addFunc;
	addFunc = num1 + num2;
	return addFunc;
}

आउटपुट:

का आउटपुट C++ addFunc() फ़ंक्शन योग लौटाता है

कोड का स्क्रीनशॉट यहां दिया गया है:

C++ addFunc() फ़ंक्शन में आर्गुमेंट पास करने वाला कोड

Code स्पष्टीकरण:

  1. इसके कार्यों का उपयोग करने के लिए हमारे प्रोग्राम में iostream हेडर फ़ाइल शामिल करें।
  2. अपने कोड में std नामस्थान को शामिल करें ताकि उसे कॉल किए बिना उसकी क्लासों का उपयोग किया जा सके।
  3. addFunc() नामक एक फ़ंक्शन घोषित करें जो दो पूर्णांक पैरामीटर लेता है। यह फ़ंक्शन प्रोटोटाइप बनाता है।
  4. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इस फ़ंक्शन के मुख्य भाग में जोड़ा जाना चाहिए।
  5. तीन पूर्णांक चर, x, y, और योग घोषित करें।
  6. कंसोल पर कुछ टेक्स्ट प्रिंट करें। टेक्स्ट में उपयोगकर्ता से दो नंबर दर्ज करने के लिए कहा जाता है।
  7. कीबोर्ड से उपयोगकर्ता इनपुट पढ़ें। उपयोगकर्ता को चर x और y के लिए दो संख्याएँ दर्ज करनी चाहिए, जिन्हें स्पेस से अलग किया गया हो।
  8. फ़ंक्शन addFunc() को कॉल करें और इसमें पैरामीटर x और y पास करें। फ़ंक्शन इन पैरामीटर पर काम करेगा और आउटपुट को वेरिएबल sum को असाइन करेगा।
  9. कंसोल पर अन्य पाठ के साथ चर x, y, और sum के मानों को प्रिंट करें।
  10. फ़ंक्शन को सफलतापूर्वक पूरा होने पर मान लौटाना होगा.
  11. main() फ़ंक्शन के मुख्य भाग का अंत.
  12. फ़ंक्शन परिभाषा। हम addFunc() फ़ंक्शन को परिभाषित कर रहे हैं। हम बताएंगे कि फ़ंक्शन अपने बॉडी, { } के भीतर क्या करेगा।
  13. addFunc नामक एक पूर्णांक चर घोषित करना.
  14. पैरामीटर num1 और num2 के मानों को जोड़ना और परिणाम को वेरिएबल addFunc में निर्दिष्ट करना।
  15. addFunc() फ़ंक्शन को addFunc वेरिएबल का मान लौटाना चाहिए।
  16. फ़ंक्शन बॉडी का अंत, अर्थात फ़ंक्शन परिभाषा.

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

कॉल बाय वैल्यू आर्गुमेंट की कॉपी बनाता है, इसलिए फंक्शन के अंदर किए गए बदलाव मूल फंक्शन को प्रभावित नहीं करते। कॉल बाय रेफरेंस वेरिएबल को एक एम्परसैंड (&) के साथ पास करता है, जिससे फंक्शन कॉलर के मान को सीधे संशोधित कर सकता है। C++ डिफ़ॉल्ट रूप से वैल्यू द्वारा कॉल किया जाता है।

फंक्शन ओवरलोडिंग कई फंक्शनों को एक ही नाम साझा करने की अनुमति देता है, भले ही उनके पैरामीटरों की संख्या या प्रकार अलग-अलग हों। कंपाइलर आपके द्वारा पास किए गए आर्गुमेंट्स में से सही संस्करण का चयन करता है, जिससे संबंधित कार्यों के लिए पठनीयता में सुधार होता है।

इनलाइन फ़ंक्शन कंपाइलर से अनुरोध करता है कि वह सामान्य कॉल करने के बजाय प्रत्येक कॉल साइट पर अपना बॉडी डाले। इससे छोटे फ़ंक्शनों के लिए ओवरहेड कम हो सकता है, हालांकि कंपाइलर इस संकेत को अनदेखा कर सकता है।

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

आप पैरामीटर को पॉइंटर या साइज़्ड ऐरे के रूप में पास करते हैं और आमतौर पर इसकी लंबाई अलग से भेजते हैं, क्योंकि ऐरे पॉइंटर में परिवर्तित हो जाता है। पासिंग देखें सरणियों में C++ कार्यों पूर्ण हल किए गए उदाहरणों के लिए।

एक फ़ंक्शन सीधे एक मान लौटाता है, लेकिन आप आउटपुट संदर्भ पैरामीटर, एक संरचना, एक std::pair, एक std::tuple, या एक std::vector का उपयोग करके कई मान लौटा सकते हैं। संरचित बाइंडिंग फिर कॉल साइट पर लौटाए गए टपल को अनपैक करती हैं।

जी हां। एआई कोडिंग सहायक एक साधारण टिप्पणी को पूर्ण कोड में बदल देते हैं। C++ फ़ंक्शन के सिग्नेचर, बॉडी और रिटर्न टाइप का सुझाव देते हुए। वे लंबे फ़ंक्शन को रिफैक्टर भी करते हैं, हालांकि आपको जेनरेट किए गए लॉजिक की समीक्षा करनी चाहिए।

गिटहब कोपिलॉट पूर्ण हो जाता है C++ यह आपके कमेंट्स या नामों से फंक्शन डेफिनिशन, प्रोटोटाइप और कॉल तैयार करता है, ओवरलोड का प्रस्ताव देता है और यूनिट टेस्ट का ड्राफ्ट बनाता है। यह संदर्भ के लिए रेफरेंस्ड हेडर का उपयोग करता है, लेकिन हर सुझाव की समीक्षा आवश्यक है।

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