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

From Vigyanwiki

कंप्यूटर प्रोग्रामिंग में, फ़ंक्शन प्रोटोटाइप या फ़ंक्शन इंटरफ़ेस एक फ़ंक्शन का डीक्लेरेशन (कंप्यूटर प्रोग्रामिंग) है जो फ़ंक्शन का नाम और टाइप सिग्नेचर को (एरिटी, डेटा टाइप के पैरामीटर (कंप्यूटर प्रोग्रामिंग) और रिटर्न टाइप) निर्दिष्ट करता है, लेकिन फ़ंक्शन बॉडी को छोड़ देता है। जबकि फ़ंक्शन परिभाषा निर्दिष्ट करती है कि फ़ंक्शन वह कैसे करता है, जो उसके द्वारा किया जाता है ("कार्यान्वयन"), फ़ंक्शन प्रोटोटाइप केवल अपने इंटरफ़ेस को निर्दिष्ट करता है, अर्थात कौन से डेटा टाइप इसमें जा सकते है और इससे बहार आ सकते है। शब्द "फ़ंक्शन प्रोटोटाइप" का उपयोग विशेष रूप से प्रोग्रामिंग भाषाओं सी (प्रोग्रामिंग भाषा) और सी ++ के संदर्भ में किया जाता है, जहां हेडर फ़ाइलों में फ़ंक्शन के आगे की डीक्लेरेशंस को रखने से प्रोग्राम को रूपांतर इकाई (प्रोग्रामिंग) में विभाजित करने की आज्ञा मिलती है, अर्थात उन भागों में जिन्हें कंपाइलर भिन्न प्रकार से ऑब्जेक्ट फ़ाइलों में रूपांतर कर सकता है, लिंकर (कंप्यूटिंग) द्वारा निष्पादन योग्य या लाइब्रेरी में संयोजित किया जाता है।

एक प्रोटोटाइप में, पैरामीटर का नाम वैकल्पिक होता है, (और सी/सी++ में फ़ंक्शन प्रोटोटाइप स्कोप होता है, जिसका अर्थ है कि उनका दायरा प्रोटोटाइप के अंत में समाप्त होता है), चूंकि, सभी संशोधक के साथ टाइप आवश्यक है। यदि यह अकेले कॉन्स्ट को छोड़कर सूचक (कंप्यूटर प्रोग्रामिंग) या कॉन्स्ट पैरामीटर का संदर्भ है।

इसी प्रकार ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, इंटरफ़ेस और अमूर्त विधियाँ ही उद्देश्य को पूरा करती हैं।

उदाहरण

निम्नलिखित फ़ंक्शन प्रोटोटाइप पर विचार करें:

void Sum( int a, int b );

या

void Sum( int, int );

फ़ंक्शन प्रोटोटाइप में फ़ंक्शन सिग्नेचर, फंक्शन का नाम, रिटर्न टाइप और एक्सेस विनिर्देशक सम्मलित हैं। इस स्थिति में फ़ंक्शन का नाम "सम" है। फ़ंक्शन सिग्नेचर पैरामीटरों की संख्या और उनके टाइप को परिभाषित करता है। रिटर्न टाइप "वॉइड" है। इसका अर्थ यह है कि फ़ंक्शन कोई मान वापस नहीं करता है। ध्यान दें कि पहले उदाहरण में पैरामीटर नाम वैकल्पिक हैं।

उपयोग

सी के शुरुआती संस्करणों में, यदि कोई फ़ंक्शन पहले घोषित नहीं किया गया था और उसका नाम बाएं कोष्ठक के पश्चात अभिव्यक्ति में आया था, तो इसे अंतर्निहित रूप से फ़ंक्शन के रूप में घोषित किया गया था जो int लौटाता है और इसके तर्कों के बारे में कुछ भी नहीं माना गया था। इस स्थिति में कंपाइलर तर्कों की संख्या और टाइप की संकलन-समय वैधता जांच करने में सक्षम नहीं होता है। C99 मानक के लिए प्रोटोटाइप के उपयोग की आवश्यकता होती है।

char MyFunction ( int a ); /* Function prototype */

#include <stdio.h>
#include <limits.h> 
int main( void ) 
{   

  putchar( MyFunction( -1 ) );   /* Correctly formatted call */

  putchar( MyFunction( 1.5 ) );  /* Compiler generates a warning because of type mismatch */

  putchar( MyFunction("IncorrectArgType") ); /* Compiler will generate a warning */

  putchar( MyFunction() );     /* Compiler will generate an Error too few arguments */
  
  int one=1;
  putchar( MyFunction( INT_MAX + one ) ); /* Although adding 1 to the maximum integer 
                                        /* is an error it cannot be detected at compile time */

  return 0;
}

char MyFunction( int n )  /* Function definition */
{
  if (n > 0)   return '>';
  if (n < 0)   return '<'; 
  return '=';
}

फ़ंक्शन MyFunction को पूर्णांक तर्क के साथ कॉल किए जाने की अपेक्षा करता है। फ़ंक्शन प्रोटोटाइप को सम्मलित करके, आप कंपाइलर को सूचित करते हैं कि फ़ंक्शन पूर्णांक तर्क लेता है और आप कंपाइलर को गलत विधि से निर्दिष्ट कॉल पकड़ने में सक्षम बनाते हैं।

लाइब्रेरी इंटरफ़ेस बनाना

फ़ंक्शन प्रोटोटाइप को हेडर फ़ाइल में रखकर, कोई लाइब्रेरी (कंप्यूटिंग) के लिए इंटरफ़ेस (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) निर्दिष्ट कर सकता है।

वर्ग डीक्लेरेशन

सी++ में, फ़ंक्शन प्रोटोटाइप का उपयोग क्लास (कंप्यूटर विज्ञान) परिभाषाओं में भी किया जाता है।

यह भी देखें

संदर्भ

  • Kernighan, Brian W.; Ritchie Afree, Dennis M. (1988). The C Programming Language (2nd ed.). Upper Saddle River, NJ: Prentice Hall PTR. ISBN 0-13-110362-8.