सीधे मुख्य सामग्री पर जाएं

फंक्शन (function)

C प्रोग्रामिंग में फंक्शन(function) एक ऐसी युक्ति है जिसके माध्यम से हम किसी भी C प्रोग्राम को सरल एवं सहज रूप प्रदान करते हैं। कहने का तात्पर्य यह है कि जब हमें प्रोग्राम की कुछ पंक्तियों को बार बार run/execute करना होता है तो हम उसे फंक्शन के अंदर लिखतें हैं और जहाँ पर उन पंक्तियों को execute करना होता है वहाँ पर उस फंक्शन को कॉल (call) कर लेतें हैं। फंक्शन के माध्यम से हम न केवल पंक्तियों के पुनरावृत्ति से बचतें हैं बल्कि हम इसके माध्यम से प्रोग्राम को छोटे छोटे इकाई में बाँट देतें हैं जिससे हमे प्रोग्राम लिखने और समझने में आसानी होती है।

तो चलिए एक साधारण से उदाहरण के माध्यम से फंक्शन को समझने का प्रयास करते हैं। मान लीजिये कि हमें 1 से 5 तक की गिनती 3 बार प्रिंट करनी है तो हम सामान्य रूप से बिना फंक्शन का प्रयोग किये प्रोग्राम को नीचे दिए गए तरीक़े से लिखेंगे।

#include <stdio.h>

int main(){
 int i;
 for( i = 1; i <= 5; i = i+1){
  printf("%d  ", i);
 }

 for( i = 1; i <= 5; i = i+1){
  printf("%d  ", i);
 }

 for( i = 1; i <= 5; i = i+1){
  printf("%d  ", i);
 }
 return 0;
}


और इसी प्रोग्राम को फंक्शन के माध्यम से इस प्रकार लिखेंगे-

#include <stdio.h>

void printnumber(){
 int i;
 for( i = 1; i <= 5; i = i+1){
  printf("%d  ", i);
 }
}

int main(){
 printnumber();
 printnumber();
 printnumber();
 return 0;
}

हमने लाइन 4 से 7 तक को फंक्शन printnumber के अंदर लिख दिया और main फंक्शन में लाइन 11, 12 और 13 पर फंक्शन printnumber के आगे ( ) लगाकर उसको call कर लिया। जैसे ही हम लाइन 11 पर printnumber फंक्शन को कॉल करेंगे कम्पाइलर उस लाइन के बाद फंक्शन printnumber की लाइन (3 से 8) को run करेगा और फिर लौट कर लाइन 11 पर आजायेगा और प्रोग्राम में आगे की लाइन को run करेगा। ध्यान रहे की किसी भी फंक्शन को हम main फंक्शन के ऊपर ही लिखेंगे।

आगे बढ़ने से पहले अब हम फंक्शन के प्रारूप (structure) को समझ लेते हैं। हम यहाँ पर एक फंक्शन लिखेंगे जिसमे हम एक पूर्णांक देंगे और फंक्शन यह प्रिंट करेगा की पूर्णांक सम संख्या है या विषम संख्या। तो चलिए फंक्शन को लिखते हैं।
#include <stdio.h>

void is_even_odd(int num){
 if(num%2 == 0){
  printf("%d is even", num);
 }
 else{
  printf("%d is odd", num);
 }
}

int main(){
 int i;
 i = 4;
 is_even_odd(i);
 return 0;
}

जैसा कि हम जानते हैं कि कोई पूर्णांक सम है या विषम इसकी जाँच के लिए हम उसे 2 से भाग देतें हैं और यदि शेषफल 0 आता है तो वह सम संख्या होगी और 1 आता है तो वह विषम संख्या होगी। यहाँ पर ऑपरेटर % के माध्यम से हमें शेषफल प्राप्त होता है जैसा कि हम पहले पढ़ चुके हैं। अब चलिए ऊपर लिखे फंक्शन के विभिन्न अंगों को समझ लेते हैं।
return_type name_of_function( argument list ){
//body_of_function
}
return_type - ये भाग बताता है कि फंक्शन क्या वापस (return) करेगा। void से तात्पर्य ये है कि यह फंक्शन कुछ भी return नहीं करेगा।

name_of_function - यह फंक्शन का नाम है जोकि case-sensitive होता है। कहने का तात्पर्य यह है कि कैपिटल और स्माल लेटर में लिखे दो फंक्शन अलग अलग फंक्शन को प्रदर्शित करेगा। is_even_odd यहाँ पर फंक्शन का नाम है।

(argument_list) - इस कोष्ठक के अंदर आर्गुमेंट (argument) या पैरामीटर (parameter) होते हैं। इस के अंदर एक या एक से अधिक parameter हो सकते हैं जोकि comma के द्वारा अलग किये जाते हैं। ( ) के बीच में लिखे parameter, वेरिएबल की भांति declared होते हैं और ये parameter फंक्शन का भाग होतें हैं। कहने का तात्पर्य यह है कि यदि argument list में int i; लिखा है तो हम body _of_function में दोबारा वेरिएबल i को डिक्लेअर नहीं कर सकतें बल्कि हम इसी i को फंक्शन के अंदर प्रयोग कर सकते है जैसा की हमने ऊपर के फंक्शन में int num; वेरिएबल का प्रयोग फंक्शन के अंदर किया है।

{ } - इस कोष्ठक के  कोड फंक्शन की बॉडी (body) कहलाता है। जब भी हम फंक्शन को call करते हैं तो { } के अंदर लिखा कोड run करता है।

( ) के द्वारा फंक्शन को कॉल करना - फंक्शन को call करने के लिए हम फंक्शन के नाम के आगे ( ) कोष्ठक के अंदर फंक्शन को पास होने वाले calling parameter/argument लिख देतें हैं। जैसा कि हमने लाइन 15 पर किया है। ध्यान ये रहे कि calling argument, फंक्शन के argument की संख्या, क्रम और उनके डाटा टाइप से मेल खाने चाहिए वरना प्रोग्राम run नहीं करेगा।
चलिए आगे बढ़ते हैं और फंक्शन क्या और कैसे कोई मान return करता है उसके बारे में जान लेते हैं। नीचे लिखे प्रोग्राम को देखिये :
#include <stdio.h>

int sum(int a, int b){
 int add;
 add = a + b;
 return add;
}

int main(){
 int i, j, result;
 i = 2;
 j = 3;
 result = sum(i, j);
 printf("Sum = %d", result);
 return 0;
}

आइये ऊपर लिखे प्रोग्राम को समझने का प्रयास करतें हैं। main फंक्शन में हमने पहले 3 वेरिएबल i , j , result को डिक्लेअर और फिर i और j को मान प्रदान किया और फिर result वेरिएबल के आगे = लगा कर sum फंक्शन को i और j calling argument पास करते हुए call कर लिया।
अब कम्पाइलर sum फंक्शन को run करेगा। sum फंक्शन का return_type int है अर्थात ये फंक्शन int मान वापस करेगा। जैसे ही हम लाइन 13 पर sum को कॉल करेंगे i का मान वेरिएबल a में तथा j का मान वेरिएबल b में कॉपी हो जायेगा। मतलब ये की अब a = 2 और b = 3 होगा। sum फंक्शन की body में लाइन 5 पर वेरिएबल a और b का योग add वेरिएबल में संरक्षित हो जायेगा और लाइन 6 पर add का मान return होगा और वापस main फंक्शन में लाइन 13 पर आजायेगा और return किया गया मान result वेरिएबल में संरक्षित हो जायेगा। और फिर लाइन 14 पर ये मान प्रिंट हो जायेगा।
महत्त्वपूर्ण निष्कर्ष:
१- फंक्शन के प्रयोग से हम लाइन की पुनरावृत्ति से बचतें हैं।
२- फंक्शन के चार प्रमुख भाग होते हैं - return_type , फंक्शन का नाम , argument list और फंक्शन की body।
३- फंक्शन को हम उसे नाम के आगे  ( ) लगाकर call करतें हैं।
४- किसी भी फंक्शन को हम main फंक्शन के  लिखतें हैं।
५- फंक्शन के calling argument और फंक्शन के argument का डाटा टाइप, उनकी संख्या तथा उनका क्रम मेल खाना चाहिए। 

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

Stack Data Structure in Hindi / स्टैक डाटा स्ट्रक्चर