फंक्शन (Function)
Function (फंक्शन):
C भाषा में फंक्शन एक कोड का ब्लॉक होता है जो किसी विशेष कार्य (specific task) को करता है और जिसे प्रोग्राम में कई बार उपयोग किया जा सकता है।
यह बड़े प्रोग्राम को छोटे-छोटे हिस्सों में बाँटने में मदद करता है ताकि उसे समझना और संभालना आसान हो।
Subroutine (सबरूटीन):
सबरूटीन भी कोड का एक ब्लॉक होता है जो कोई विशेष कार्य करता है,
लेकिन यह कोई मान (value) वापस नहीं करता।
C भाषा में सबरूटीन को void function के रूप में लिखा जाता है।
फंक्शन और सबरूटीन के उपयोग (Uses)
| उद्देश्य (Purpose) | व्याख्या (Explanation) |
|---|---|
| कोड पुन: उपयोग (Code Reusability) | एक फंक्शन को एक बार लिखकर कई बार उपयोग किया जा सकता है। |
| मॉड्यूलरिटी (Modularity) | बड़े प्रोग्राम को छोटे-छोटे हिस्सों (modules) में बाँट देता है। |
| आसान डीबगिंग (Easy Debugging) | छोटे-छोटे फंक्शनों में त्रुटियाँ (errors) आसानी से खोजी जा सकती हैं। |
| बेहतर पठनीयता (Improved Readability) | प्रोग्राम को पढ़ना और समझना आसान बनाता है। |
| टीम वर्क (Teamwork) | अलग-अलग प्रोग्रामर अलग-अलग फंक्शन बना सकते हैं। |
फंक्शन और सबरूटीन की कमियाँ (Drawbacks)
| कमी (Drawback) | व्याख्या (Explanation) |
|---|---|
| अधिक मेमोरी का उपयोग (Extra Memory Use) | फंक्शन कॉल के लिए पैरामीटर और रिटर्न वैल्यू की मेमोरी लगती है। |
| धीमा निष्पादन (Execution Overhead) | फंक्शन कॉल्स के कारण प्रोग्राम थोड़ा धीमा हो सकता है। |
| जटिलता (Complexity) | बहुत अधिक छोटे-छोटे फंक्शन को संभालना मुश्किल हो सकता है। |
घोषणा और प्रारंभिककरण (Declaration and Initialization)
(a) Function Declaration (फंक्शन घोषणा)
इसे Function Prototype भी कहा जाता है।
यह कंपाइलर को बताता है कि फंक्शन का नाम, रिटर्न टाइप और पैरामीटर क्या होंगे।
सिंटैक्स (Syntax):
उदाहरण:
Function Definition (फंक्शन परिभाषा)
यह बताता है कि फंक्शन वास्तव में क्या कार्य करेगा।
सिंटैक्स:
उदाहरण:
Function Call (फंक्शन कॉल)
फंक्शन को चलाने के लिए उपयोग किया जाता है।
सिंटैक्स:
उदाहरण:
फंक्शनों के प्रकार (Types of Functions)
1. लाइब्रेरी फंक्शन (Library Function)
परिभाषा:
लाइब्रेरी फंक्शन पहले से बने होते हैं और C की हेडर फाइलों (जैसे stdio.h, math.h, string.h) में मौजूद रहते हैं।
इन्हें सीधे प्रोग्राम में उपयोग किया जा सकता है।
उदाहरण:
नोट:
लाइब्रेरी फंक्शन का उपयोग करने से पहले उसकी हेडर फाइल शामिल करनी होती है।
उदाहरण:
2. यूज़र-डिफाइंड फंक्शन (User-Defined Function)
परिभाषा:
ऐसे फंक्शन जो प्रोग्रामर स्वयं किसी विशेष कार्य के लिए बनाता है।
यह प्रोग्राम को मॉड्यूलर, पुन: प्रयोग योग्य और समझने में आसान बनाता है।
उदाहरण:
सिंटैक्स:
C में फंक्शन के प्रकार (आर्ग्युमेंट और रिटर्न वैल्यू के आधार पर)
1. बिना आर्ग्युमेंट और बिना रिटर्न वैल्यू के
परिभाषा: यह फंक्शन कोई इनपुट नहीं लेता और कोई आउटपुट नहीं लौटाता।
उदाहरण:
उपयोग: केवल कोई कार्य करवाना हो, जैसे संदेश दिखाना।
2. आर्ग्युमेंट के साथ लेकिन बिना रिटर्न वैल्यू के
परिभाषा: यह फंक्शन इनपुट तो लेता है, लेकिन कोई मान वापस नहीं करता।
उदाहरण:
उपयोग: जब आउटपुट को सीधे फंक्शन के अंदर दिखाना हो।
3. बिना आर्ग्युमेंट लेकिन रिटर्न वैल्यू के साथ
परिभाषा: यह कोई इनपुट नहीं लेता, लेकिन कोई मान वापस करता है।
उदाहरण:
उपयोग: जब फंक्शन खुद कोई मान उत्पन्न करता है।
4. आर्ग्युमेंट और रिटर्न वैल्यू दोनों के साथ
परिभाषा: यह फंक्शन इनपुट भी लेता है और आउटपुट भी लौटाता है।
यह सबसे अधिक उपयोग किया जाने वाला प्रकार है।
उदाहरण:
उपयोग: जब इनपुट और आउटपुट दोनों की आवश्यकता हो।
Recursion in Function
परिभाषा:
Recursion वह प्रक्रिया है जिसमें कोई फंक्शन स्वयं को ही बार-बार कॉल करता है।
सरल शब्दों में, Recursive Function वह फंक्शन होता है जो खुद को कॉल करता है।
सिंटैक्स:
महत्वपूर्ण शब्दावली:
-
Recursive Call: जब कोई फंक्शन खुद को कॉल करता है।
-
Base Case: वह स्थिति जो फंक्शन को खुद को दोबारा कॉल करने से रोकती है (अनंत लूप से बचने के लिए)।
उदाहरण: फैक्टोरियल निकालना (Factorial using Recursion)
आउटपुट:
Recursion के लाभ और हानियाँ (Advantages and Disadvantages)
लाभ (Advantages)
| क्रम | लाभ | व्याख्या |
|---|---|---|
| 1. | जटिल समस्याओं को सरल बनाता है | जैसे Factorial, Fibonacci, Tree traversal को आसानी से हल किया जा सकता है। |
| 2. | कोड छोटा होता है | Recursive कोड लूप की तुलना में छोटा होता है। |
| 3. | तर्क स्पष्ट होता है | दोहराव वाले कार्यों की लॉजिक को समझना आसान होता है। |
| 4. | पुनरावृत्ति में सहायक | लूप की बजाय खुद को कॉल करके दोहराव करता है। |
हानियाँ (Disadvantages)
| क्रम | हानि | व्याख्या |
|---|---|---|
| 1. | अधिक मेमोरी का उपयोग | हर कॉल में नई स्टैक मेमोरी लगती है। |
| 2. | धीमी गति | बार-बार फंक्शन कॉल होने से निष्पादन धीमा होता है। |
| 3. | डीबग करना कठिन | Recursive कॉल्स में त्रुटि ढूंढना मुश्किल होता है। |
| 4. | अनंत पुनरावृत्ति का खतरा | यदि बेस कंडीशन गलत हो तो प्रोग्राम कभी नहीं रुकता। |
No comments:
Post a Comment