Read in Hindi
Read in English

Moving forward with this C/C++ programming language tutorial today we will learn about function. To do some task many times and avoid writing same program multiple times we can use function. Remind that in if else statement we have written a program which calculates percent and division and prints it based on total marks and obtained marks. Now if we want to calculate percent and division for 5 students, Then one way is to modify program and run 5 times which is not good way(it can be 100 students). Another way is to copy-paste part of code which calculates division and percent 5 times which is also not good way.
Use of function can solve those problems. We can write a function which gives percent given total marks and obtained marks. Now we will see program to print percentage only. Later we will see program to print division too.
function is define in program given below. Do not run this program, it will not run.
int get_percent(int total marks, int obtained marks) {
  int percent = obtained_marks*100/total_marks;
  return percent;
}

int is written 1st word which tells that this function will give us int type of value. function name comes after that which is get_percent here. After that inside ()input variable comes which is called parameter or argument. while writing input variable we have tell what type of value they will hold(int,char etc) and by what name function will refer to them. here both input are int. In function we can give any number of inputs. If function does not require any argument then do not write anything inside (). here we have 2 inputs. After that inside {} program is written to achieve functionality. In given function percent have been calculated using those 2 input parameters. In the end desired value is returned using return. anything written after return statement won't run because at that point function will know what value to return and proceeding further.
Lets see below how we use the above function.
#include <stdio.h>
int get_percent(int total_marks, int obtained_marks) {
  int percent = obtained_marks*100/total_marks;
  return percent;
}
int main() {
  int percent;
  percent = get_percent(500, 360);
  printf("Percent is %d\n", percent);
  percent = get_percent(500, 340);
  printf("Percent is %d\n", percent);
  scanf("%d", &percent);
  return 0;
}

Firstly we have defined function named get_percent, which returns int value and receives 2 parameters of int type as we have seen above in program.
Program starts to execute from main(). In the main int type percent variable have been defined. Then we called function get_percent which is defined above. We have passed 2 parameters 500 and 360 to this function when calling. Note that order of parameters in function call is very important. According to function defined above value of total_marks will be value 500 and obtained_marks will be 360 when executing get_percent function. On the basis of these values get_percent function will return 80.
percent = get_percent(500, 360);
Writing this will assign percent the return value of function call. Then in the main function we are printing value of percent.
main is also a function which does not take any parameter hence we write main(), nothing in the braces, and main returns int, hence we write return 0 at the end of main function. Whenever we run a c/c++ program, it's main function is called. Program finishes when we reach at the end of main. If you write such a program which does not have main function then running that will give error that main method not found.

Lets see and run a program which gives the percent as well well prints it.
#include <stdio.h>
void get_percent(int total_marks, int obtained_marks) {
  int percent = obtained_marks*100/total_marks;
  if(percent >= 60) {
    printf("Congrats!! You passed in 1st division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else if(percent >= 45) {
    printf("You passed in 2nd division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else if(percent >= 33) {
    printf("You just passed in 3rd division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else {
    printf("Sorry! you failed.\n");
    printf("Your percentage is %d.\n",percent);
  }
}
int main() {
  get_percent(500, 360);
  get_percent(500, 340);

  int abc;
  scanf("%d", &abc);
  return 0;
}

In this example get_percent function also prints division. Difference with previous function is that here we are printing inside get_percent function hence no need to print in main function. return type of this function is void that means this function does not need to return anything, hence in main function this function is just called without storing return value to some variable.
Exercise:
1. Write a function print_month which takes int parameter as month number and that function prints name of month. This function should not return anything, just need to print. Call that function with some parameter from main function.
2. Modify above program to take input at runtime using scanf and pass that value to call function defined above.
We will see some more examples on next topic.
If you liked this blog, tell your friends also because it can useful to them also!!
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम function के बारे में और जानेंगे. किसी एक काम को अलग अलग समय बार बार करवाने के लिए function का use करते हैं. याद करे कि if else statement वाले topic में हमने एक program लिखा था जो कि total marks और obtained marks के आधार पर percent और division निकाल कर print करता था. अब अगर हमें 5 students के लिए percentage और division निकलना है तो एक तरीका यह है कि हम पहले वाले program में total marks और obtained marks को बार बार modify करें और बार बार program को compile करके run करें. पर इसमें बहुत time लग जायेगा. एक और तरीका यह है कि program का वह भाग जो percentage निकाल कर division print करता है उसे 5 बार copy-paste करें.
इसे आसानी से करने का सबसे अच्छा तरीका है function का use. हम एक ऐसा function लिखेंगे जिसे total marks और obtained marks देने पर वह हमें percentage देदे. अभी percentage print करने का program ही देखते हैं, उसके बाद division print करने का program भी देखेंगे.
नीचे लिखे हुए program को देखिये जिसमे हमने function define किया है. पर इसे run न करे क्योंकि यह run नहीं होगा. इसके बाद function call करने और run करके का तरीका देखेंगे.
int get_percent(int total marks, int obtained marks) {
  int percent = obtained_marks*100/total_marks;
  return percent;
}

सबसे पहले int लिखा गया है जोकि यह बताता है कि function किस तरह का मान हमें return करेगा. इस example में function int type का मान हमें return करेगा. उसके बाद function का नाम लिखते हैं, जोकि यहाँ पर get_percent है. उसके बाद () में function के input variable लिखते हैं जिन्हें parameter या argument कहते हैं input variable लिखते समय यह भी बताना पड़ता है कि वो किस type के हैं और उन्हें function के अंदर किस नाम से access करेंगे. यहाँ दोनों input int हैं. किसी function में हम कितने भी input दे सकते हैं, या फिर अगर एक भी input नहीं देना चाहते तो () के अंदर कुछ नहीं लिखते. यहाँ 2 input दिए गए हैं. उसके बाद {} के अंदर वो लिखते हैं जो function काम करेगा. यहाँ हमने दिए गए input का उपयोग करके percent निकाला है. अंत में return करते हैं.
शुरू में लिखा हुआ int यह बता रहा था कि यह function int type की value हमें देगा(return करेगा). अंत में return लिखकर हम percent return कर रहे हैं जो int type का ही है. अगर return statement के बाद कुछ लिखा है तो वह run नहीं होगा, क्योंकि return आते ही function को यह पता लग जाता है कि क्या value return करना है और function वह value return करके उसी समय खत्म हो जाता है.
अब यह देखते हैं कि इस function का use कैसे करेंगे. नीचे दिए गए program को run करके देखें.
#include <stdio.h>
int get_percent(int total_marks, int obtained_marks) {
  int percent = obtained_marks*100/total_marks;
  return percent;
}
int main() {
  int percent;
  percent = get_percent(500, 360);
  printf("Percent is %d\n", percent);
  percent = get_percent(500, 340);
  printf("Percent is %d\n", percent);
  scanf("%d", &percent);
  return 0;
}

सबसे पहले हमने function define किया है किसका नाम है get_percent, जो int type की value return करेगा और 2 int type के parameter लेगा जैसे कि हम ऊपर भी देख चुके हैं. फिर
main() के अंदर से program run होना start होता है जैसा कि हम अभी तक देखते आये हैं. main के अंदर पहले int type का percent variable define किया है. उसके बाद get_percent function call किया है जो ऊपर define किया था. इस function को हमने 2 parameter 500 और 360 दिए हैं. यहाँ parameter का क्रम भी important है. इस function को call करने पर ऊपर वाला function run होना शुरू हो जायेगा, जिसमे total_marks की value 500 और obtained_marks की value 360 चली जायेगी. इन values के basis पर get_percent percent की value 80 निकालकर return कर देगा.
percent = get_percent(500, 360);
यह लिखने पर get_percent जो भी return करेगा वह percent में store जायेगा. उसके बाद हम main() के अंदर ही percent print कर रहे हैं. इसी तरह एक बार और get_percent function को call करके जो value आती है उसे percent variable में store करके print कर रहे हैं.
यहाँ एक बात note करें कि main भी एक function है जो कोई भी parameter नहीं लेता(इसलिए main() लिखा है () में कुछ नहीं लिखा) और int return करता है इसीलिए हम अंत में हर बार return 0; लिखते आ रहे हैं. जब हम कोई भी C program run करते हैं तो सिर्फ उसका main function call होता है. main के अंदर हम जो जो function call करते हैं वो उसी sequence में call होते हैं. अंत में जब main function के अंत में पहुँच जाते हैं तो program finish हो जाता है. अगर आप किसी ऐसे program को run करे जिसमे main function न हो तो वह कुछ इस तरह कि error देगा कि main method not found.

अब हम एक और program देखते हैं जो division भी print करे. इसे run करके देखें.
#include <stdio.h>
void get_percent(int total_marks, int obtained_marks) {
  int percent = obtained_marks*100/total_marks;
  if(percent >= 60) {
    printf("Congrats!! You passed in 1st division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else if(percent >= 45) {
    printf("You passed in 2nd division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else if(percent >= 33) {
    printf("You just passed in 3rd division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else {
    printf("Sorry! you failed.\n");
    printf("Your percentage is %d.\n",percent);
  }
}
int main() {
  get_percent(500, 360);
  get_percent(500, 340);

  int abc;
  scanf("%d", &abc);
  return 0;
}

इस example में get_percent function division भी print कर रहा है. इसमें पहले वाले function से थोडा difference यह है कि यह function ही सब कुछ print कर रहा है इसलिए main में अलग से print करने कि जरुरत नहीं है. शुरू में void लिखा गया है इसका मतलब है कि यह function कुछ return नहीं करेगा, इसलिए main में function को सिर्फ call किया गया है, जबकि पहले वाले example में जो value function return कर रहा था उसे एक variable में store कर रहे थे.
Exercise:
1. एक function print_month लिखो जिसे एक int parameter दे जो किसी महीने का number होगा और वह function महीने का नाम print कर दे. जैसे अगर हम उसे 10 दे तो वह October print कर दे. इस function को कुछ return नहीं करना चाहिए, सिर्फ print करना चाहिए. उसके बाद इस function को main से अलग अलग parameter देके call करें.
2. ऊपर वाले program में main में पहले scanf का use करके input ले और इस input parameter के साथ print_month call करें.
अगले लेख में हम कुछ और example देखेंगे.
अगर आपको यह लेख पसंद आया हो तो अपने दोस्तों को भी बताएं क्योंकि ये उनके लिए भी उपयोगी सिद्ध हो सकता है !! नीचे दिए गए link के माध्यम से इसे आसानी से facebook twitter और Google Buzz पर भी Share कर सकते हैं.