Skip to main content

C  Functions :


Introduction to C Functions

कई बार आपके program में कुछ ऐसे statements हो सकते है जिन्हें आपको compiler से बार बार execute करवाने की आवश्यकता होती है। ऐसी situation में इन statements को बार बार लिखने में बहुत समय लग सकता है। साथ ही इससे program बहुत बड़ा हो जाता है जिससे उसे पढ़ने और समझने में मुश्किल होती है। 
इस situation से बचने के लिए C आपको एक mechanism provide करती है जिसे function कहते है। जिन भी statements को आप program में कई जगह बार बार execute करवाना चाहते है उन्हें एक block में लिखते है और इस block को एक unique नाम देते है।
इसके बाद program में जँहा भी जितनी भी बार इन statements को आप execute करवाना चाहते है तब आप function के उस unique नाम के द्वारा उस function को call करते है। Call करते ही function (block) में लिखे गए सभी statements execute हो जाते है।   
Function का name और parameters (इनके बारे में आप आगे पढ़ेंगे) जब आप लिखते है तो उसे function declaration कहा जाता है। जब आप function में execute होने वाले सभी statements लिखते है तो उसे function definition कहा जाता है। जब आप पूरे program में कँही भी function को use करते है तो उसे function call कहा जाता है।
किसी भी program में functions को use करने की advantages नीचे दी जा रही है।
  1. Functions create करने से programmer का time और computer की memory बचती है। 
  2. एक ही code को आसानी से बार बार use किया जा सकता है। इससे code re-usability बढ़ती है।
  3. Program modules में divide हो जाता है जिससे उसे आसानी से manage और debug किया जा सकता है। 
  4. Program की readability बढ़ती है। 

C language में दो प्रकार के functions होते है।
  • Predefined Functions 
  • User-defined Functions

PREDEFINED FUNCTIONS   

Predefined functions or Built in function वो functions होते है जो C library में पहले से ही provide किये गए है। इन function को पहले से ही declare और define किया गया होता है। बस इन्हें use करने के लिए header files को include करना होता है
उदाहरण के लिए यदि आप अपने program में scanf() और printf() जैसे functions use करना चाहते है तो इसके लिए आप <stdio> header file को अपने program में include करते है। ये दोनों ही predefined functions है।
Predefined functions के कुछ उदाहरण –
  • scanf() 
  • printf()
  • strcpy()
  • void *malloc()
  • int to lower() आदि है।  

USER DEFINED FUNCTIONS  

User defined functions वो function होते है जो programmer (आप) खुद create करते है। Programmer अपनी आवश्यकता के अनुसार कितने भी functions create कर सकता है। ये functions कैसे create किये जाते है और इन्हें कैसे use किया जाता है। 
      

Creating and Using C Functions

C में functions create करना और उन्हें use करना बहुत ही आसान है। इस process के 3 मुख्य steps होते है।
  1. Functions Declaration
  2. Function Definition 
  3. Function Call

FUNCTION DECLARATION

इस part में आप function का नाम, उसका return type और parameters define करते है। Function declaration का general syntax नीचे दिया गया है। 
<return-type> <function-name>(<list-of-parameters>);
  • return-type  –  आपका function execution complete होने पर किस प्रकार की value return करेगा ये आप return type के द्वारा define करते है। यदि आप एक addition का program बना रहे है जो 2 whole numbers को add करता है तो आपका return type int होगा। 
  • function-name  –  ये आपके function का नाम होता है। ये पूरे program में unique होना चाहिए। जब आप function को call करते है तो इस नाम को ही लिखते है। 
  • list-of-parameters  –  ये उन variables की list होती है जो आप function को call करते समय पास करेंगे। जैसे की यदि आप addition का function बना रहे है तो parameters के रूप में आप 2 numbers या 2 variables पास कर सकते है और फिर function के अंदर उनको add करके result show कर सकते है। यह आवश्यक नहीं की आप सभी functions में parameters define करें।   
        
एक बात आपको हमेशा याद रखनी चाहिए की function declaration statement को आप semicolon से terminate करते है। लेकिन function definition के साथ ऐसा नहीं होता है। मान लीजिये की आप addition का function बना रहे है जो दो numbers को add करता है तो उसे आप इस प्रकार declare करते है।
/* A function declaration with two parameters */
int add(int a, int b);  
   

FUNCTION DEFINITION  

इस part को function body भी कहा जाता है। इसमें आप वो statements लिखते है जिन्हें आप execute करवाना चाहते है।
<return-type> <function-name>(<list-of-parameters>)
{
      statement 1;
      statement 2;
       .
       .
      statement N; 
  
}
   
Function definition में return-type, function-name और list-of-parameters उसी प्रकार होते है जैसे की function declaration में होते है। इनके बाद में curly brackets के block में वो statements लिखे जाते है जो आप execute करवाना चाहते है।
यदि आप addition के function की बात करे तो उसकी definition आप इस प्रकार लिख सकते है।
/* Definition of add function */
int add(int a, int b)
{
    /* Statements to be executed when add function is called */
    int c;
    c = a+b;
   
    return c;
    
}
    

FUNCTION CALL

Program में जब भी आप function को use करना चाहते है तो उसे call करते है। 
<function-name>(<arguments-list>); 
argument-list –  arguments वो real values होती है जो आप functions को call करते समय पास करते है। ये values function definition में parameters को assign होती है। इसके बाद इन values पर processing होती है और result return किया जाता है।
Addition के function को call करते समय कोई 2 values पास करेंगे जैसे की 2 और 7, इनकी जगह variables भी pass किये जा सकते है जिनमें values store की गयी है।
ये values parameter variables a और b को assign हो जाएँगी और function के अंदर इन variables पर ही processing होती है। ऐसे functions जिनमें parameters defined किये गए है और यदि आप function call करते समय arguments पास नहीं करते है तो program में error आती है।  
  
Addition के function को आप इस प्रकार call कर सकते है।
/* Calling add function with arguments 2 and 7*/
add(2,7); 
C language में functions को 2 प्रकार से call किया जा सकता है।
  • Call by Value – इस तरीके में argument के रूप में values और variables पास किये जाते है। 
  • Call by Reference – इस तरीके में argument के रूप में variables का reference पास किया जाता है।  

CALL BY VALUE 

जब आप function call करते समय argument के रूप में कोई value पास करते है तो वह parameter variables में copy हो जाती है और इसके बाद उन variables पर operations perform किये जाते है।
इसी प्रकार जब आप function को call करते समय कोई variable पास करते है तो असल में वह variable function में नहीं pass किया जाता है बल्कि उस variable की value parameter variable में copy की जाती है और उसके बाद उस parameter variable पर operations perform किये जाते है। 
यदि ऊपर दिए गए addition के function को call करते समय दो integer variables x और y pass किये जाएँ तो ऐसा करने पर उन दोनों variables की value parameter variables a और b में copy हो जायेगी और उन पर addition perform करके result return किया जाएगा। 
इस तरह के function call को call by value कहा जाता है। इसमें असल argument variables की value change नहीं होती है और जो भी operation होता है वह parameter variables पर ही perform होता है।
#include<stdio.h>
int add(int a, int b);
int main()
{
   int result;
   int x=5;
   int y=4;
   printf(“This addition is performed using function call by valuen”);
   /* Calling add function by value */
   result = add(x,y);
   printf(“n Result is : %d”,result);
   printf(“nn Value of a is %d and value of b is %d”,x,y);
}
/* Below function takes values from variables
as arguments and performs operations on them */
int add(int a, int b)
{
    int c;
    c=a+b;
    return c;
}
This addition is performed using function call by value
Result is 9
Value a is 5 and value of b is 4

CALL BY REFERENCE 

किसी function को call करते समय असल variables pass करने की बजाय उनका address भी पास किया जा सकता है। ऐसा करने पर उन variables का address parameter variables में copy होगा और parameter variable memory में असल argument variables को ही point करेंगे। 
इस तरह के function call को call by reference कहा जाता है। इस तरह के function call में असल argument variables का address pass किया जाता है। ऐसा करने से function के अंदर यदि parameter variables की values में changes आते है तो उससे असल argument variables की values में भी changes आते है। यानी parameters में change आने पर arguments भी change हो जाते है। 
इस तरह के function call में arguments को address of operator (&) के साथ pass किया जाता है। यह operator argument का address parameter variables को pass करता है। इसके अलावा function के declaration और definition में parameters को value at (*) operator के साथ define किया जाता है।
#include<stdio.h>
/* Function declaration with value at operator */
int add(int *s);
int main()
{
    int s=2;
    printf(“Call by Reference Demon”);
    /*  Function call with variable reference */
    add(&s);
    printf(“Sum is %dn”,s);
}
/* Function definition with value at operator */
int add(int *s)
{
     *s = *s+2;
     return 0;
}
Call by Reference Demo
Sum is 4

Example of C Functions

#include<stdio.h>

/* Function declaration */
int add(int a, int b);
int main()
{
   int result;
    printf(“This is  addition program using function!n”);
    /* Function call */
    result = add(2,7); 
    printf(“Result is : %d”, result);
 }

/* Function definition */
int add(int a, int b)
{
     int c;
     c = a + b;
    
     return c;
}       
This is addition program using function!
Result is : 9 

Comments

Popular posts from this blog

C in Hindi : File Handling Introduction to C File Handling  एक file bytes की sequence होती है। File किसी भी data को store करने के लिए यूज़ की जाती है। Files को permanent storage के लिए यूज़ किया जाता है। जब आप किसी program को run करवाते है और उसका output देखने के बाद उसे बंद कर देते है तो उसका output वहीँ remove हो जाता है । यदि आप इस output को permanently store करना चाहते है तो C language के file handling feature को यूज़ कर सकते है। C file handling का यूज़ यँही ख़त्म नहीं होता है। यदि program में दिए जाने वाला input भी बहुत अधिक है तो किसी human द्वारा इसे enter कराने के बजाय आप file का यूज़ कर सकते है। इससे program automatically file से ही input ले लेगा। C language के द्वारा आप files से related ये काम कर सकते है। Existing files को open कर सकते है और नयी files create कर सकते है।  किसी भी program के output को file में store कर सकते है।  File के द्वारा किसी भी program में input भी दे सकते है।        सभी operatio...
Programming model of microprocessor 8085 prograaming modal  chhah saamaany prayojan rajistar 1.8085 mein chhah saamaany prayojan rajistar hote hain jaise b, ch, d, ai, h, l. 2. mote rajistar ko 16-bit opareshan (beesee, de, echel) karane ke lie rajistar jode ke roop mein joda ja sakata hai. sanchayakarta rajistar 1. yah akshar a dvaara pahachaana jaata hai. 2. yah alu ka ek hissa hai. 3. isamen 8-bit deta storej hai. 4. yah ankaganit aur taarkik sanchaalan karata hai. 5. kisee opareshan ka parinaam sanchaayak mein sangraheet kiya jaata hai. dhvaj panjee 1. yah bhee alu ka ek hissa hai 2.8085 mein paanch jhandon ke naam hain -jiro jhanda (z) -kaary dhvaj (chy) -sain phlaig (es) -parivartan dhvaj (p) sahaayak kairee phlaig (esee) 3. in jhande dhvaj rajistar mein paanch phlip-phlop hain. 4. ek ankaganit / tark sanchaalan ka nishpaadan in jhandon ko set ya reeset kar sakata hai. 5. sophtaveyar nirdeshon ke maadhyam se jhande (set ya reeset) ka pareeks...
Architecture of Microprocessor 8086 in Hindi  8086 vaastukala ko do bhaagon mein vibhaajit kiya gaya hai: 1. nishpaadan ikaee (eeyoo) 2.bas intarafes yoonit (beeaeeyoo) -biu nirdesh praapt karata hai, memoree aur i / o port se deta padhata hai, memoree aur i / o port par deta likhata hai. -eeyoo ne us nirdesh ko nishpaadit kiya hai jo pahale hee beeaeeyoo dvaara praapt kiya ja chuka hai. -beeaeeyoo aur eeyoo alag-alag kaam karate hain. bas intarafes yoonit (biu) pata peedhee: isamen 20 bit edres jenaret karane ke lie samarpit adar hota hai. khand rajistar: isamen chaar 16-bit segament rajistar hain: 1. kod segament (seees) 2. deta segament (deees) 3. staik segament (eses) 4. ekstra segament (ais)  -8086 1mb memoree ko 64k bait tak ke segament mein baanta gaya hai. -8086 kisee samay mein chaar khandon (memoree ke 1 em bait ke bheetar 256 ke baits) ko seedhe sambodhit kar sakata hai. -vigyaapan vaanchhit khandon ko ingit karan...