Introduction of function:-

    function कुछ स्टेटमेंट का समूह होता हैं। सी लैंग्वेज में फंक्शन का प्रयोग किसी विशेष कार्य को करने के लिए किया जाता हैं। फंक्शन का प्रयोग करने से प्रोग्राम का आकार छोटा हो जाता है तथा प्रोग्राम में छूट गई गलतियों(errors) को सुधारना(Debugging) बहुत आसान हो जाता हैं। 

    फंक्शन दो प्रकार के होते हैं:- 

    1. In build or library function
    2. User defined function

    In build or library function

    इस प्रकार के function(फंक्शन) C language(सी लैंग्वेज) की header file(हैडर  फाइल) में पहले से ही defied(डिफाइंड) होते हैं। इन्हें प्रयोग करने के लिए हमें अपने प्रोग्राम में संबंधित  header files(हैडर  फाइल) को  include करना होता है। एक बार हैडर फाइल को  include करने के बाद इसमें परिभाषित फंक्शन को हम अपने प्रोग्राम में कई बार प्रयोग कर सकते हैं। 

    उदाहरण के लिए printf(...) फंक्शन को  ही  लीजिए, यह फंक्शन stdio.h नाम की हैडर फाइल में परिभाषित होता हैं। जब हम stdio.h फाइल को अपने प्रोग्राम में   include(शामिल)  कर देते हैं तो printf() फंक्शन को अपने प्रोग्राम में कई बार काम में ले सकते हैंं। इस प्रकार की कुछ फंक्शनो  को हम स्ट्रिंग वाले अध्याय में पहले से ही पढ़ चुके हैं।  

    User defined function

    User defined function(यूजर डिफाइंड फंक्शन) वे function  होते हैं जिन्हें यूजर अपनी आवश्यकता के अनुसार किसी special Task(विशेष कार्य) को करने के लिए बनाता हैं। यदि किसी प्रोग्राम में कोई कार्य बार-बार करना उसके लिए एक function(फंक्शन) बनाया जा सकता है तथा आवश्यकता पड़ने पर उसे कई बार call(कॉल) किया जा सकता हैं। यूजर एक प्रोग्राम में अपनी आवश्यकतानुसार कई function(फंक्शन) बना सकता है और उन्हें किसी भी क्रम में कई बार प्रयोग में ले सकता हैं। function(फंक्शन) को रन कराने की प्रक्रिया को फंक्शन को कॉल करना भी कहते हैं। 

    User defined function(यूजर डिफाइंड फंक्शन) को प्रयोग में लेने के लिए तीन कार्य:- 

    1. फंक्शन को Declare(डिक्लेअर) करना।
    2. फंक्शन को Define(डिफाइन) करना।
    3. फंक्शन को कॉल करना।

    (i) function को Declare करना:-

    जिस प्रकार किसी variable(वेरिएबल) को प्रयोग में लेने से पहले उसे declare(डिक्लेअर) करना होता है उसी प्रकार function(फंक्शन) को भी प्रयोग में लेने से पहले declare(डिक्लेअर) किया जाता हैं। हालांकि यह जरूरी नहीं है कि हर स्थिति में फंक्शन को डिक्लेअर किया ही जाए, किंतु इसे declare कर देना बेहतर रहता है। function declaration(फंक्शन डिक्लेरेशन) को function prototype(फंक्शन प्रोटोटाइप) भी कहा जाता हैं। इसे डिक्लेअर करने का प्रारूप निम्न प्रकार है:- 

    Return_data_type function_name(...); 

    Example:- 

     void fun();  

    उपरोक्त declaration(डिक्लेरेशन) compiler(कंपाइलर) को यह बताता है कि नए बनाए जाने वाले फंक्शन का नाम fun रखा गया है। void यह बताता है कि output(आउटपुट) में कुछ भी return(रिटर्न) नहीं करेगा। 

    (ii) function को Define करना:-

    फंक्शन को  define(डिफाइन) करने से आशय उस में रखे जाने वाले real statement(वास्तविक स्टेटमेंट) से हैं। यह फंक्शन का मूल भाग होता है, जिसे प्रोग्राम में बार-बार कॉल  करवाया जा सकता है। अभी तक हम सिर्फ main() फंक्शन को ही define(डिफाइन) करते हुए आए हैं। किसी अन्य फंक्शन को डिफाइन करने के लिए यह ध्यान रखें कि वह फंक्शन main() के अंदर ना हो। नए डिफाइन किए जाने वाले फंक्शन को main() के पहले या बाद में लिखा जा सकता हैं। 

    main(){
            new_function_declaration();
            - - - - - - - - - - - - - - - - -
            - - - - - - - - - - - - - - - -
    }
    new_function_definition(){
                - - - - -- - - -
                - - - - - - - --
    }

    इसे डिफ़ाइन करने का प्रारूप निम्न प्रकार हैं:


    return_data_type function_name(...)
    {
            statement_1;
            statement_2;
            - - - - - - - - 
            statement_n;
            return();
    }


       void fun(){
          printf("\n hello word");
       }

    उपरोक्त फंक्शन hello word संदेश प्रिंट करवाने का कार्य कर रहा है। इस फंक्शन को प्रयोग में लेने के लिए इसे किसी अन्य फंक्शन से कॉल करना होगा। 

    (iii) फंक्शन को Call(कॉल) करना:-

    किसी फंक्शन को बनाने का उद्देश्य उसे प्रयोग में लेना होता हैं। किसी फंक्शन को प्रोग्राम में प्रयोग में लेने के लिए उसे कॉल करवाया जा सकता हैं। कॉल करवाने का आशय फंक्शन विशेष के definition(डेफिनेशन) में लिखे गए statement(स्टेटमेंट) को रन करवाना हैं। 

     किसी फंक्शन को को प्रारूप में निम्न प्रकार है:- 

    fanction_name(); 

    उदाहरण: 

    fun(); 

    जब उपरोक्त फंक्शन कॉल होगा तो उस फंक्शन की स्टेटमेंट रन हो जाएंगें। 

    Example:- 

    नीचे दिए गए उदाहरण में यह दर्शाया गया है कि फंक्शन को किस प्रकार कॉल करवाया जा सकता हैं। 


       #include <stdio.h>
       #include <conio.h>
       void main()
       {
         printf("this is MAIN");
         fun();
         printf("\nThis is Main again");
         getch();
       }

       void fun(){
          printf("\n hello word");
       }

    Output:-

    this is MAIN
    hello word
    This is Main again

    Explain Example:-

    ऊपर दिए गए उदाहरण में फंक्शन main() में fun(); पंक्ति के माध्यम से fun() फंक्शन को कॉल करवाया गया है। जब fun() रण होगा तो उसकी definition(डेफिनेशन) में लिखे स्टेटमेंट रन हो जाएंगे। चूंकि प्रस्तुत उदाहरण में एक ही स्टेटमेंट    printf("\nHello!")   है, अतः Hello! संदेश प्रिंट कर देगा। 

    इसे नीचे दिए गए चित्र के द्वारा समझा जा सकता है:- C Functions, query boat, queryboat

    Note:- 
     यदि फंक्शन को declare(डिक्लेअर) किए बिना काम में लिया जाता है तो प्रोग्राम में compile(कंपाइल) करने से पहले .c extension(एक्सटेंशन) द्वारा सेव किया जाना आवश्यक होता हैं। 

    User Define function(यूजर डिफाइंड फंक्शन)  जिस फंक्शन  द्वारा call(कॉल) किया जाता है उसे calling function(कॉलिंग फंक्शन) करते हैं तथा जिससे user defined function(यूजर डिफाइंड फंक्शन) को कॉल किया जा रहा रहा है उसे called function(कोल्ड फंक्शन) कहते हैं। उपरोक्त उदाहरण में main() calling function(फंक्शन कॉलिंग) तथा fun() called function(कोल्ड फंक्शन) हैं। 

    Example:-

    दिए 👇 गए उदाहरण में समझाया गया है कि एक फंक्शन को हम अपने प्रोग्राम में कई बार कॉल कर सकते हैंं।


       #include <stdio.h>
       #include <conio.h>
       void main()
       {
         printf("\nthis is MAIN!");
         fun();
         printf("\nThis is Main again!");
         fun();
         printf("\nThis is Main again!");
         fun();
         getch();
       }

       void fun()
       {
          printf("\n This is a fun function called ");
       }

    Output:-

    this is MAIN!
    This is a fun function called
    This is Main again!
    This is a fun function called
    This is Main again!
    This is a fun function called

    Explain Example:-

    ऊपर 👆 दिए गए उदाहरण में फंक्शन fun() को तीन बार को ध्यान रखें कि जब किसी फंक्शन को कॉल किया जाता है तो संबंधित फंक्शन की definition(डेफिनेशन ) रन होने के बाद प्रोग्राम का control(कंट्रोल) वापस पहले वाले फंक्शन में आ जाता है।  यही कार्य प्रस्तुत उदाहरण में भी हो रहा हैं।

    Example:-

    नीचे 👇 दिए के उदाहरण में समझाया गया है कि एक प्रोग्राम में एक से अधिक फंक्शन बनाए जा सकते हैं तथा उन्हें भी  क्रम में कॉल किया जा सकता हैं। 


       #include <stdio.h>
       #include <conio.h>
       void main()
       {
        printf("\nMain");
        fun_2();
        printf("\nAgain Main");
        fun_1();
        printf("\nBYE!");
        getch();
       }

       void fun_1()
       {
          printf("\n FUN 1");
       }
       void fun_2()
       {
          printf("\n FUN 2");
       }

    Output:-

    Main
    FUN 2
    Again Main
    FUN 1
    BYE!

    Explain Example:-

    ऊपर 👆 दिए गए उदाहरण में fun_1 तथा fun_2  नाम के दो अलग-अलग फंक्शन उन्हें कॉल किया गया हैं। fun_1();  तथा fun_2(); के माध्यम से fun_2 फंक्शन को कॉल करने से FUN 2 संदेश प्रिंट हुआ,  उसके बाद में कंट्रोल वापस फंक्शन main() में गया तथा Again Main संदेश प्रिंट कर दिया। 
    इसके बाद fun_1(); के माध्यम से कंट्रोल fun_1  फंक्शन में गया और FUN 1 संदेश प्रिंट कर दिया गया। 
    अंत में क्योंकि कंट्रोल वापस main() में आ गया अतः BYE! संदेश प्रिंट हो गया।

    इसे नीचे👇 दिए गए चित्र के द्वारा समझा जा सकता हैं। C Functions, query boat, queryboat