फंक्शन प्रोटोटाइप: Difference between revisions
(Created page with "{{Short description|Declaration of a function's name and type signature but not body}} {{About|function declarations|the prototype property of JavaScript functions and objects...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{Short description|Declaration of a function's name and type signature but not body}} | {{Short description|Declaration of a function's name and type signature but not body}} | ||
{{About|function declarations|the prototype property of JavaScript functions and objects|JavaScript#Object-orientation (prototype-based)|other uses|Software prototyping}} | {{About|function declarations|the prototype property of JavaScript functions and objects|JavaScript#Object-orientation (prototype-based)|other uses|Software prototyping}}[[कंप्यूटर प्रोग्रामिंग]] में, एक फ़ंक्शन प्रोटोटाइप या फ़ंक्शन इंटरफ़ेस एक फ़ंक्शन (प्रोग्रामिंग) की [[घोषणा (कंप्यूटर प्रोग्रामिंग)]] है जो फ़ंक्शन के नाम और प्रकार के हस्ताक्षर (एरीटी, [[डेटा प्रकार]] के [[पैरामीटर (कंप्यूटर प्रोग्रामिंग)]], और रिटर्न प्रकार) को निर्दिष्ट करता है, लेकिन छोड़ देता है समारोह शरीर। जबकि एक फ़ंक्शन परिभाषा निर्दिष्ट करती है कि "कैसे" फ़ंक्शन वह करता है जो वह करता है (कार्यान्वयन), एक फ़ंक्शन प्रोटोटाइप केवल इसके इंटरफ़ेस को निर्दिष्ट करता है, अर्थात "क्या" डेटा प्रकार इसमें जाते हैं और इससे बाहर आते हैं। शब्द फ़ंक्शन प्रोटोटाइप विशेष रूप [[समारोह (प्रोग्रामिंग)]] भाषाओं [[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]] के संदर्भ में प्रयोग किया जाता है जहां [[हेडर फाइल]]ों में फ़ंक्शंस की [[आगे की घोषणा]]एं प्रोग्राम को [[अनुवाद इकाई (प्रोग्रामिंग)]] में विभाजित करने की अनुमति देती हैं, यानी भागों में जो एक [[ संकलक |संकलक]] कर सकता है एक [[निष्पादन]] योग्य या एक पुस्तकालय (कंप्यूटिंग) में एक [[लिंकर (कंप्यूटिंग)]] द्वारा संयुक्त होने के लिए अलग से [[वस्तु फ़ाइल]] में अनुवाद करें। | ||
[[कंप्यूटर प्रोग्रामिंग]] में, एक फ़ंक्शन प्रोटोटाइप या फ़ंक्शन इंटरफ़ेस एक फ़ंक्शन (प्रोग्रामिंग) की [[घोषणा (कंप्यूटर प्रोग्रामिंग)]] है जो फ़ंक्शन के नाम और प्रकार के हस्ताक्षर (एरीटी, [[डेटा प्रकार]] के [[पैरामीटर (कंप्यूटर प्रोग्रामिंग)]], और रिटर्न प्रकार) को निर्दिष्ट करता है, लेकिन छोड़ देता है समारोह शरीर। जबकि एक फ़ंक्शन परिभाषा निर्दिष्ट करती है कि "कैसे" फ़ंक्शन वह करता है जो वह करता है (कार्यान्वयन), एक फ़ंक्शन प्रोटोटाइप केवल इसके इंटरफ़ेस को निर्दिष्ट करता है, अर्थात "क्या" डेटा प्रकार इसमें जाते हैं और इससे बाहर आते हैं। शब्द फ़ंक्शन प्रोटोटाइप विशेष रूप [[समारोह (प्रोग्रामिंग)]] भाषाओं [[सी (प्रोग्रामिंग भाषा)]] और [[सी ++]] के संदर्भ में प्रयोग किया जाता है जहां [[हेडर फाइल]]ों में फ़ंक्शंस की [[आगे की घोषणा]]एं प्रोग्राम को [[अनुवाद इकाई (प्रोग्रामिंग)]] में विभाजित करने की अनुमति देती हैं, यानी भागों में जो एक [[ संकलक ]] कर सकता है एक [[निष्पादन]] योग्य या एक पुस्तकालय (कंप्यूटिंग) में एक [[लिंकर (कंप्यूटिंग)]] द्वारा संयुक्त होने के लिए अलग से [[वस्तु फ़ाइल]] में अनुवाद करें। | |||
एक प्रोटोटाइप में, पैरामीटर नाम वैकल्पिक होते हैं (और C/C++ में फ़ंक्शन प्रोटोटाइप स्कोप (कंप्यूटर विज्ञान) होता है, जिसका अर्थ है कि उनका दायरा प्रोटोटाइप के अंत में समाप्त होता है), हालांकि, सभी संशोधक के साथ प्रकार आवश्यक है (उदाहरण के लिए यदि यह है एक [[सूचक (कंप्यूटर प्रोग्रामिंग)]] या एक संदर्भ {{mono|[[const]]}} पैरामीटर) को छोड़कर {{mono|const}} अकेला। | एक प्रोटोटाइप में, पैरामीटर नाम वैकल्पिक होते हैं (और C/C++ में फ़ंक्शन प्रोटोटाइप स्कोप (कंप्यूटर विज्ञान) होता है, जिसका अर्थ है कि उनका दायरा प्रोटोटाइप के अंत में समाप्त होता है), हालांकि, सभी संशोधक के साथ प्रकार आवश्यक है (उदाहरण के लिए यदि यह है एक [[सूचक (कंप्यूटर प्रोग्रामिंग)]] या एक संदर्भ {{mono|[[const]]}} पैरामीटर) को छोड़कर {{mono|const}} अकेला। | ||
[[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग ]] में, [[प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] और मेथड (कंप्यूटर प्रोग्रामिंग) #Abstract_methods एक ही उद्देश्य को पूरा करते हैं। | [[ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग | ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] में, [[प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)]] और मेथड (कंप्यूटर प्रोग्रामिंग) #Abstract_methods एक ही उद्देश्य को पूरा करते हैं। | ||
== उदाहरण == | == उदाहरण == | ||
Line 62: | Line 59: | ||
=== वर्ग घोषणा === | === वर्ग घोषणा === | ||
C++ में, फंक्शन प्रोटोटाइप का उपयोग [[ कक्षा (कंप्यूटर विज्ञान) ]] परिभाषाओं में भी किया जाता है। | C++ में, फंक्शन प्रोटोटाइप का उपयोग [[ कक्षा (कंप्यूटर विज्ञान) |कक्षा (कंप्यूटर विज्ञान)]] परिभाषाओं में भी किया जाता है। | ||
== यह भी देखें == | == यह भी देखें == |
Revision as of 09:20, 26 June 2023
कंप्यूटर प्रोग्रामिंग में, एक फ़ंक्शन प्रोटोटाइप या फ़ंक्शन इंटरफ़ेस एक फ़ंक्शन (प्रोग्रामिंग) की घोषणा (कंप्यूटर प्रोग्रामिंग) है जो फ़ंक्शन के नाम और प्रकार के हस्ताक्षर (एरीटी, डेटा प्रकार के पैरामीटर (कंप्यूटर प्रोग्रामिंग), और रिटर्न प्रकार) को निर्दिष्ट करता है, लेकिन छोड़ देता है समारोह शरीर। जबकि एक फ़ंक्शन परिभाषा निर्दिष्ट करती है कि "कैसे" फ़ंक्शन वह करता है जो वह करता है (कार्यान्वयन), एक फ़ंक्शन प्रोटोटाइप केवल इसके इंटरफ़ेस को निर्दिष्ट करता है, अर्थात "क्या" डेटा प्रकार इसमें जाते हैं और इससे बाहर आते हैं। शब्द फ़ंक्शन प्रोटोटाइप विशेष रूप समारोह (प्रोग्रामिंग) भाषाओं सी (प्रोग्रामिंग भाषा) और सी ++ के संदर्भ में प्रयोग किया जाता है जहां हेडर फाइलों में फ़ंक्शंस की आगे की घोषणाएं प्रोग्राम को अनुवाद इकाई (प्रोग्रामिंग) में विभाजित करने की अनुमति देती हैं, यानी भागों में जो एक संकलक कर सकता है एक निष्पादन योग्य या एक पुस्तकालय (कंप्यूटिंग) में एक लिंकर (कंप्यूटिंग) द्वारा संयुक्त होने के लिए अलग से वस्तु फ़ाइल में अनुवाद करें।
एक प्रोटोटाइप में, पैरामीटर नाम वैकल्पिक होते हैं (और C/C++ में फ़ंक्शन प्रोटोटाइप स्कोप (कंप्यूटर विज्ञान) होता है, जिसका अर्थ है कि उनका दायरा प्रोटोटाइप के अंत में समाप्त होता है), हालांकि, सभी संशोधक के साथ प्रकार आवश्यक है (उदाहरण के लिए यदि यह है एक सूचक (कंप्यूटर प्रोग्रामिंग) या एक संदर्भ const पैरामीटर) को छोड़कर const अकेला।
ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में, प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) और मेथड (कंप्यूटर प्रोग्रामिंग) #Abstract_methods एक ही उद्देश्य को पूरा करते हैं।
उदाहरण
निम्नलिखित फ़ंक्शन प्रोटोटाइप पर विचार करें:
void Sum( int a, int b );
या
void Sum( int, int );
फंक्शन प्रोटोटाइप में फंक्शन सिग्नेचर, फंक्शन का नाम, रिटर्न टाइप और एक्सेस स्पेसियर शामिल हैं। इस स्थिति में फ़ंक्शन का नाम Sum है। फ़ंक्शन हस्ताक्षर मापदंडों की संख्या और उनके प्रकार को परिभाषित करता है। वापसी का प्रकार शून्य है। इसका मतलब है कि फ़ंक्शन कोई मान नहीं लौटाएगा। ध्यान दें कि पहले उदाहरण में पैरामीटर नाम वैकल्पिक हैं।
उपयोग
सी के शुरुआती संस्करणों में, यदि कोई फ़ंक्शन पहले घोषित नहीं किया गया था और इसका नाम बाएं कोष्ठक के बाद अभिव्यक्ति में हुआ था, तो इसे एक फ़ंक्शन के रूप में स्पष्ट रूप से घोषित किया गया था जो एक 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 एक पूर्णांक तर्क के साथ बुलाए जाने की अपेक्षा करता है। फ़ंक्शन प्रोटोटाइप को शामिल करके, आप कंपाइलर को सूचित करते हैं कि फ़ंक्शन एक पूर्णांक तर्क लेता है और आप कंपाइलर को गलत तरीके से निर्दिष्ट कॉल को पकड़ने में सक्षम करते हैं।
पुस्तकालय इंटरफेस बनाना
एक शामिल निर्देश में फ़ंक्शन प्रोटोटाइप रखकर, एक लाइब्रेरी (कंप्यूटिंग) के लिए एक प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) निर्दिष्ट कर सकता है।
वर्ग घोषणा
C++ में, फंक्शन प्रोटोटाइप का उपयोग कक्षा (कंप्यूटर विज्ञान) परिभाषाओं में भी किया जाता है।
यह भी देखें
- मॉड्यूलर प्रोग्रामिंग
- प्रोटोकॉल (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग)
- विधि (कंप्यूटर प्रोग्रामिंग) # सार विधियाँ
संदर्भ
- 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.