कार्य#

परिचय#

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

यह पृष्ठ C++ में फ़ंक्शन के उपयोग की बुनियादी बातों को कवर करता है, जिसमें शामिल हैं:

फ़ंक्शन संरचना और सिंटैक्स#

C++ में, फ़ंक्शन को उसके रिटर्न टाइप, नाम और पैरामीटर के साथ घोषित किया जाना चाहिए। मूल सिंटैक्स इस प्रकार है:

return_type function_name(parameters) {
  // Code to execute when the function is called
  return result;  // Optional, used to return a value
}

कार्यात्मक भाग

विवरण

return_type

फ़ंक्शन द्वारा लौटाए जाने वाले डेटा प्रकार के कुछ सामान्य विकल्प इस प्रकार हैं:

  • void — कुछ भी नहीं लौटाता
  • int — एक पूर्णांक मान लौटाता है
  • double — एक फ़्लोटिंग-पॉइंट संख्या लौटाता है
  • bool — true या false लौटाता है true या false
  • char — एक एकल अक्षर लौटाता है
  • const char* — एक टेक्स्ट स्ट्रिंग लौटाता है
  • उपयोगकर्ता-परिभाषित प्रकार — एक struct या class ऑब्जेक्ट लौटाता है struct

function_name

फ़ंक्शन का नाम।

parameters

वैकल्पिक। टाइप किए गए पैरामीटरों की अल्पविराम से अलग की गई सूची, जिसे type nameके रूप में लिखा जाता है, जहाँ type पैरामीटर के डेटा प्रकार को निर्दिष्ट करता है और name फ़ंक्शन के अंदर उस मान तक पहुँचने के लिए उपयोग किया जाने वाला पहचानकर्ता है। फ़ंक्शन को कॉल किए जाने पर पैरामीटर इनपुट मान प्राप्त करते हैं।

result

वैकल्पिक। फ़ंक्शन द्वारा लौटाया गया मान। यदि फ़ंक्शन का return_type शून्य return_typeयह मान प्रदान किया जाना चाहिए और इसका प्रकार निर्दिष्ट void से बिल्कुल मेल खाना चाहिए।

नोट: किसी फ़ंक्शन को कॉल करने से पहले हमेशा घोषित किया जाना चाहिए, या आपको एक फ़ंक्शन प्रोटोटाइप प्रदान करना होगा।

फ़ंक्शन प्रोटोटाइप#

C++ में, कोड को ऊपर से नीचे तक पढ़ा जाता है। इसका मतलब है कि किसी फ़ंक्शन को कॉल करने से पहले कंपाइलर को उसके बारे में पता होना चाहिए।

फंक्शन प्रोटोटाइप आपको फंक्शन का पूरा कोड लिखने से पहले ही उसका उपयोग करने की सुविधा देता है। इससे आप main() प्रोग्राम के शीर्ष पर रख सकते हैं, जबकि फंक्शन की परिभाषाओं को बाद में रख सकते हैं, जहाँ उन्हें व्यवस्थित करना और पढ़ना आसान होता है।

प्रोटोटाइप के बिना, आपको main()परिभाषित करना होगा, जो परियोजनाओं को बढ़ने पर उनका अनुसरण करना कठिन बना सकता है।

फ़ंक्शन प्रोटोटाइप को परिभाषित करें ( int main() के बाहर)

// The function's prototype
void greeting();

int main() के अंदर फ़ंक्शन को कॉल करें

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  greeting();
}

फंक्शन का बॉडी लिखें

void greeting() {
  Brain.Screen.print("Hello!");
}

फ़ंक्शन को परिभाषित करना और कॉल करना#

Functions with No Parameters#

यदि किसी फ़ंक्शन को इनपुट की आवश्यकता नहीं है, तो आप उसे बिना पैरामीटर के परिभाषित कर सकते हैं। यदि फ़ंक्शन कोई मान वापस नहीं करता है, तो रिटर्न टाइप के रूप में void उपयोग करें।

फ़ंक्शन को परिभाषित करें ( int main() के बाहर)

// Define a function to display a message
void greeting() {
    Brain.Screen.print("Hello!");
}

int main() के अंदर फ़ंक्शन को कॉल करें

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Call the function to display the message
  greeting();
}

Functions with Parameters#

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

नोट: टेक्स्ट को सी-स्टाइल स्ट्रिंग्स (const char*) या सी++ स्ट्रिंग्स (std::string ) का उपयोग करके पास किया जा सकता है।

फ़ंक्शन को परिभाषित करें ( int main() के बाहर)

// Define a function with a parameter
void namedGreeting(const char* name) {
    Brain.Screen.print("Hello, %s!", name);
}

फ़ंक्शन को पैरामीटर के साथ कॉल करें int main()

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Call the function to display the message
  namedGreeting("Stranger");
}

वापसी मान#

फ़ंक्शन return कीवर्ड का उपयोग करके कॉलर को डेटा वापस भेज सकते हैं। इससे आप आउटपुट को कैप्चर कर सकते हैं और अपने प्रोजेक्ट में उसका उपयोग कर सकते हैं।

फ़ंक्शन को परिभाषित करें ( int main() के बाहर)

// Define a function that multiplies numbers by 2
int timesTwo(int number) {
    return number * 2;
}

फ़ंक्शन को पैरामीटर के साथ कॉल करें int main()

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Display the return value
  Brain.Screen.print("%d", timesTwo(2));
}

संदर्भ द्वारा गुजरना#

डिफ़ॉल्ट रूप से, C++ फ़ंक्शन पैरामीटर को मान द्वारा पास करता है, जिसका अर्थ है कि फ़ंक्शन को मूल चर की एक प्रति प्राप्त होती है। फ़ंक्शन के अंदर किए गए परिवर्तन मूल मान को प्रभावित नहीं करते हैं।

फ़ंक्शन को परिभाषित करें ( int main() के बाहर)

// Add 1 to the number
void addOne(int number) {
  number++;
}

फ़ंक्शन को पैरामीटर के साथ कॉल करें int main()

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  int value = 5;
  addOne(value);
  // "value" will still be 5
}

किसी फ़ंक्शन को मूल चर को संशोधित करने की अनुमति देने के लिए, पैरामीटर को & प्रतीक का उपयोग करके संदर्भ द्वारा पारित किया जा सकता है।

फ़ंक्शन को परिभाषित करें ( int main() के बाहर)

// Add 1 to the number
void addOne(int& number) {
  number++;
}

फ़ंक्शन को पैरामीटर के साथ कॉल करें int main()

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  int value = 5;
  addOne(value);
  // "value" will now be 6
}

संदर्भ द्वारा पास करने से फ़ंक्शन को मान लौटाए बिना फ़ंक्शन के बाहर परिभाषित चर को अपडेट करने की अनुमति मिलती है।

कॉलबैक फ़ंक्शन#

कॉलबैक फ़ंक्शन एक ऐसा फ़ंक्शन है जिसे किसी अन्य फ़ंक्शन में पास किया जाता है और किसी विशिष्ट घटना के घटित होने पर स्वचालित रूप से कॉल किया जाता है।

कॉलबैक का उपयोग आमतौर पर बटन दबाने या सेंसर अपडेट जैसी घटनाओं के लिए किया जाता है।

फंक्शन को खुद कॉल करने के बजाय, जब कोई घटना घटित होती है तो प्रोजेक्ट अपने आप उसे कॉल कर देता है।

कॉलबैक फ़ंक्शन को परिभाषित करें ( int main() के बाहर)

// Create a callback function
void onPressed() {
  Brain.Screen.print("Screen pressed!");
}

int main() के अंदर कॉलबैक को रजिस्टर करें

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Call onPressed whenever the screen is pressed
  Brain.Screen.pressed(onPressed);
}

Callback Signatures#

प्रत्येक कॉलबैक फ़ंक्शन को एक विशिष्ट सिग्नेचर का पालन करना चाहिए, जो परिभाषित करता है:

  • वापसी प्रकार

  • मापदंडों की संख्या

  • पैरामीटर प्रकारों

आवश्यक हस्ताक्षर API द्वारा निर्धारित किया जाता है। कॉलबैक फ़ंक्शन को इस हस्ताक्षर से बिल्कुल मेल खाना चाहिए।

// This callback function cannot include any parameters
void callback(void);

// This callback function includes four parameters
void callback(axisType axis, double x, double y, double z);

पैरामीटर के नाम वर्णनात्मक होते हैं और भिन्न हो सकते हैं, लेकिन रिटर्न टाइप, पैरामीटर का क्रम और पैरामीटर के प्रकार बिल्कुल मेल खाने चाहिए।

डिफ़ॉल्ट तर्कों वाले फ़ंक्शन#

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

डिफ़ॉल्ट आर्गुमेंट्स के लिए नियम:

  • डिफ़ॉल्ट आर्गुमेंट फ़ंक्शन की परिभाषा में अंतिम पैरामीटर होने चाहिए।

  • एक बार किसी पैरामीटर का डिफ़ॉल्ट मान निर्धारित हो जाने पर, उसके बाद के सभी पैरामीटरों का भी डिफ़ॉल्ट मान निर्धारित होना आवश्यक है।

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

फ़ंक्शन को परिभाषित करें ( int main() के बाहर)

// Required parameter first, default parameter last
void greeting(const char* name, int repeatCount = 1) {

    for (int i = 0; i < repeatCount; i++) {
        Brain.Screen.print("Hello, %s!", name);
        Brain.Screen.newLine();
    }
}

int main() के अंदर फ़ंक्शन को कॉल करें

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  // Say what name to greet (IQ) and
  // use default value for repeatCount (1)
  greeting("IQ");

  Brain.Screen.newLine();

  // Overrides the default value to 3
  greeting("IQ", 3);
}