Functions in C++ Notes | Function Definition, Prototype, Call by Value & Call by Reference | Basic Computer Engineering | RGPV BTech First Year
Functions in C++ Notes | Function Definition, Prototype, Call by Value & Call by Reference | Basic Computer Engineering | RGPV BTech First Year
Functions in C++
Function C++ Programming का एक अत्यंत महत्वपूर्ण Concept है। Function किसी बड़े Program को छोटे-छोटे Modules (Logical Blocks) में विभाजित करने का सबसे प्रभावी तरीका है। प्रत्येक Function किसी निश्चित कार्य (Specific Task) को पूरा करता है तथा आवश्यकता पड़ने पर Program के किसी भी भाग से Call किया जा सकता है।
यदि किसी Program में एक ही प्रकार का Code कई बार उपयोग करना हो, तो उसे बार-बार लिखने के बजाय केवल एक Function बनाया जाता है। बाद में आवश्यकता अनुसार Function को Call किया जाता है। इससे Program का Size कम होता है, Code Reusability बढ़ती है तथा Program को समझना और Maintain करना काफी आसान हो जाता है।
RGPV B.Tech First Year के Basic Computer Engineering Subject में Functions in C++ एक अत्यंत महत्वपूर्ण Topic है। University Examination, Practical तथा Viva में Function Definition, Function Prototype, Function Call, Call by Value, Call by Reference, Inline Function तथा Recursive Function से नियमित रूप से प्रश्न पूछे जाते हैं।
↓
Function
↓
Processing
↓
Result
Introduction to Functions
Programming में कई बार किसी विशेष कार्य को Program के अलग-अलग स्थानों पर करना पड़ता है। यदि प्रत्येक बार वही Statements दोबारा लिखी जाएँ, तो Program बड़ा, जटिल तथा Error-Prone हो जाता है। इस समस्या का समाधान Functions प्रदान करते हैं।
Function एक स्वतंत्र Code Block होता है जिसमें किसी विशेष कार्य से संबंधित Statements लिखी जाती हैं। जब भी उस कार्य की आवश्यकता होती है, Function को Call कर दिया जाता है। इससे Program Modular बनता है और Debugging भी सरल हो जाती है।
What is a Function?
Function Statements का ऐसा समूह (Group of Statements) होता है जो किसी निश्चित कार्य को पूरा करता है। Function को केवल एक बार Define किया जाता है लेकिन Program में आवश्यकता अनुसार अनेक बार Execute किया जा सकता है।
ऊपर दिए गए उदाहरण में display() एक User Defined Function है। जब भी इसे Call किया जाएगा, यह Welcome to My Project HD प्रदर्शित करेगा।
Need of Functions
Programming में Functions की आवश्यकता इसलिए होती है क्योंकि बड़े Programs को छोटे-छोटे Logical Parts में विभाजित करना आवश्यक होता है। यदि पूरा Program केवल main() Function के अंदर लिखा जाए तो उसे समझना, सुधारना तथा Debug करना कठिन हो जाता है।
Functions की सहायता से किसी भी Complex Problem को छोटे-छोटे Modules में विभाजित किया जा सकता है। प्रत्येक Module केवल एक निश्चित कार्य करता है, जिससे Program अधिक Efficient तथा Reusable बन जाता है।
- Repeated Code को कम करने के लिए।
- Program को Modular बनाने के लिए।
- Code Reusability बढ़ाने के लिए।
- Debugging आसान बनाने के लिए।
- Maintenance सरल बनाने के लिए।
- Team Development को आसान बनाने के लिए।
- Program की Readability बढ़ाने के लिए।
Advantages of Functions
Functions का उपयोग करने से Program की Quality तथा Performance दोनों में सुधार होता है। नीचे Functions के प्रमुख लाभ दिए गए हैं।
| Advantage | Description |
|---|---|
| Code Reusability | एक ही Function को Program में कई बार Call किया जा सकता है। |
| Modular Programming | बड़े Program को छोटे Modules में विभाजित किया जा सकता है। |
| Easy Debugging | Error केवल संबंधित Function में खोजी जाती है। |
| Easy Maintenance | Code को Modify तथा Update करना आसान हो जाता है। |
| Less Development Time | बार-बार Code लिखने की आवश्यकता समाप्त हो जाती है। |
| Better Readability | Program को समझना अधिक सरल हो जाता है। |
Characteristics of Functions
प्रत्येक Function की कुछ विशेष विशेषताएँ (Characteristics) होती हैं जिनके कारण Modular Programming संभव हो पाती है।
- प्रत्येक Function का अपना Unique Name होता है।
- Function किसी एक निश्चित कार्य (Specific Task) को पूरा करता है।
- Function को एक बार Define करके कई बार Call किया जा सकता है।
- Function Value Return भी कर सकता है तथा Void भी हो सकता है।
- Function Parameters स्वीकार कर सकता है।
- Function Program की Readability बढ़ाता है।
- Functions Program को Modular एवं Maintainable बनाते हैं।
Types of Functions
C++ Programming Language में Functions मुख्यतः दो प्रकार के होते हैं।
| Type | Description |
|---|---|
| Library Function | Compiler अथवा Standard Library द्वारा पहले से उपलब्ध Functions। |
| User Defined Function | Programmer द्वारा आवश्यकता अनुसार बनाए गए Functions। |
Library Functions
Library Functions वे Functions होते हैं जो C++ Standard Library में पहले से उपलब्ध रहते हैं। Programmer केवल संबंधित Header File Include करके उनका उपयोग कर सकता है।
| Function | Header File | Purpose |
|---|---|---|
| sqrt() | <cmath> | Square Root निकालता है। |
| pow() | <cmath> | Power Calculate करता है। |
| strlen() | <cstring> | String की Length ज्ञात करता है। |
| toupper() | <cctype> | Lowercase Character को Uppercase में बदलता है। |
User Defined Functions
User Defined Functions वे Functions होते हैं जिन्हें Programmer अपनी आवश्यकता (Requirement) के अनुसार स्वयं बनाता है। जब Program में ऐसा कार्य करना हो जो Standard Library में उपलब्ध न हो, तब User Defined Function बनाया जाता है। इससे Program अधिक Flexible तथा Modular बन जाता है।
उदाहरण के लिए यदि किसी Program में बार-बार Student Grade निकालना हो, GST Calculate करना हो अथवा Factorial ज्ञात करना हो, तो प्रत्येक स्थान पर Code लिखने के बजाय User Defined Function बनाया जाता है।
ऊपर दिया गया display() एक User Defined Function है जिसे Programmer ने स्वयं बनाया है।
Difference between Library Function and User Defined Function
| Library Function | User Defined Function |
|---|---|
| Compiler द्वारा पहले से उपलब्ध होता है। | Programmer स्वयं बनाता है। |
| Header File Include करनी होती है। | Program के अंदर Define किया जाता है। |
| Standard Operations के लिए उपयोग किया जाता है। | Custom Logic के लिए उपयोग किया जाता है। |
| Example : sqrt(), strlen(), pow() | Example : add(), factorial(), display() |
Components of a Function
प्रत्येक Function पाँच मुख्य Components से मिलकर बनता है। इन Components को समझना आवश्यक है क्योंकि यही Function की Structure निर्धारित करते हैं।
| Component | Description |
|---|---|
| Return Type | Function कौन-सी Value Return करेगा। |
| Function Name | Function की पहचान (Identifier)। |
| Parameter List | Input Values प्राप्त करने के लिए। |
| Function Body | Statements का समूह जहाँ वास्तविक Processing होती है। |
| Return Statement | Result Calling Function को वापस भेजता है। |
General Syntax of Function
ऊपर दिए गए Syntax में return_type यह बताता है कि Function कौन-सी Value Return करेगा। यदि Function कोई Value Return नहीं करता है, तो void Return Type का उपयोग किया जाता है।
Working of Function
↓
main() Function Executes
↓
Function Call
↓
Control Transfers to Function
↓
Function Executes Statements
↓
Return Statement
↓
Control Returns to main()
जब Function Call किया जाता है, तब Program Control Calling Function से Function Definition के पास चला जाता है। Function अपना कार्य पूरा करने के बाद Return Statement के माध्यम से Control पुनः Calling Function को वापस दे देता है।
Function Definition
Function Definition वह स्थान होता है जहाँ Function का वास्तविक Code लिखा जाता है। इसमें यह निर्धारित किया जाता है कि Function कौन-सा कार्य करेगा। Function Definition में Return Type, Function Name, Parameters तथा Function Body शामिल होते हैं।
Syntax
Example
ऊपर दिए गए उदाहरण में add() Function दो Integer Numbers को जोड़कर उनका Result Return करता है।
Function Declaration (Function Prototype)
Function Declaration अथवा Function Prototype Compiler को पहले से यह जानकारी देता है कि Function का Name क्या है, वह कौन-सी Value Return करेगा तथा उसमें कितने Parameters होंगे। इससे Compiler Function Call को Verify कर सकता है।
Syntax
Example
सामान्यतः Function Prototype को main() Function से पहले लिखा जाता है ताकि Compiler Function के बारे में पहले से जानकारी प्राप्त कर सके।
Function Call
जब किसी Function को Execute करना होता है, तब उसे उसके Name के माध्यम से Call किया जाता है। Function Call होने पर Program Control संबंधित Function के पास चला जाता है तथा Function का कार्य पूरा होने के बाद Control पुनः Calling Function में वापस आ जाता है।
यहाँ add() Function को Call किया गया है तथा उसका Return Value result Variable में Store किया गया है।
Complete Program using Function
Output
Function Execution Process
जब Program Execute होता है, तब सबसे पहले main() Function Execute होता है। यदि main() के अंदर किसी अन्य Function को Call किया जाता है, तो Program Control उस Function के पास चला जाता है। Function अपना कार्य पूरा करने के बाद Return Statement द्वारा पुनः main() Function में लौट आता है।
↓
main()
↓
Function Call
↓
Execute Function
↓
Return Statement
↓
Back to main()
Difference between Function Declaration and Function Definition
| Function Declaration | Function Definition |
|---|---|
| Compiler को Function की जानकारी देता है। | Function का वास्तविक Implementation होता है। |
| Body नहीं होती। | Complete Function Body होती है। |
| Semicolon (;) से समाप्त होता है। | Curly Braces { } का उपयोग होता है। |
| इसे Function Prototype भी कहा जाता है। | इसे Function Implementation भी कहा जाता है। |
Function Definition
Function Definition वह स्थान होता है जहाँ Function का वास्तविक Code लिखा जाता है। इसमें यह निर्धारित किया जाता है कि Function कौन-सा कार्य करेगा। Function Definition में Return Type, Function Name, Parameters तथा Function Body शामिल होते हैं।
Syntax
Example
ऊपर दिए गए उदाहरण में add() Function दो Integer Numbers को जोड़कर उनका Result Return करता है।
Function Declaration (Function Prototype)
Function Declaration अथवा Function Prototype Compiler को पहले से यह जानकारी देता है कि Function का Name क्या है, वह कौन-सी Value Return करेगा तथा उसमें कितने Parameters होंगे। इससे Compiler Function Call को Verify कर सकता है।
Syntax
Example
सामान्यतः Function Prototype को main() Function से पहले लिखा जाता है ताकि Compiler Function के बारे में पहले से जानकारी प्राप्त कर सके।
Function Call
जब किसी Function को Execute करना होता है, तब उसे उसके Name के माध्यम से Call किया जाता है। Function Call होने पर Program Control संबंधित Function के पास चला जाता है तथा Function का कार्य पूरा होने के बाद Control पुनः Calling Function में वापस आ जाता है।
यहाँ add() Function को Call किया गया है तथा उसका Return Value result Variable में Store किया गया है।
Complete Program using Function
Output
Function Execution Process
जब Program Execute होता है, तब सबसे पहले main() Function Execute होता है। यदि main() के अंदर किसी अन्य Function को Call किया जाता है, तो Program Control उस Function के पास चला जाता है। Function अपना कार्य पूरा करने के बाद Return Statement द्वारा पुनः main() Function में लौट आता है।
↓
main()
↓
Function Call
↓
Execute Function
↓
Return Statement
↓
Back to main()
Difference between Function Declaration and Function Definition
| Function Declaration | Function Definition |
|---|---|
| Compiler को Function की जानकारी देता है। | Function का वास्तविक Implementation होता है। |
| Body नहीं होती। | Complete Function Body होती है। |
| Semicolon (;) से समाप्त होता है। | Curly Braces { } का उपयोग होता है। |
| इसे Function Prototype भी कहा जाता है। | इसे Function Implementation भी कहा जाता है। |
Categories of Functions
C++ में Functions को मुख्यतः Parameters (Arguments) तथा Return Value के आधार पर चार Categories में विभाजित किया जाता है। प्रत्येक Category का उपयोग अलग-अलग Programming आवश्यकता के अनुसार किया जाता है। RGPV University Examination में इन चारों Categories से संबंधित Theory एवं Programs नियमित रूप से पूछे जाते हैं।
| Category | Arguments | Return Value |
|---|---|---|
| No Argument No Return Value | No | No |
| Argument No Return Value | Yes | No |
| No Argument Return Value | No | Yes |
| Argument Return Value | Yes | Yes |
Function with No Argument and No Return Value
इस प्रकार के Function में कोई Parameter नहीं होता तथा यह कोई Value Return नहीं करता। इसका उपयोग सामान्य Display तथा Simple Processing के लिए किया जाता है।
Output
Function with Argument and No Return Value
इस प्रकार के Function में Parameters होते हैं लेकिन Function कोई Value Return नहीं करता। Function केवल Input Data पर आवश्यक Processing करता है।
Output
Function with No Argument and Return Value
इस प्रकार के Function में कोई Argument नहीं होता लेकिन Function Result Return करता है। Return की गई Value को किसी Variable में Store किया जा सकता है या सीधे Display किया जा सकता है।
Output
Function with Argument and Return Value
यह सबसे अधिक उपयोग होने वाली Category है। इसमें Function Input Parameters भी स्वीकार करता है तथा Processing के बाद Result भी Return करता है।
Output
Call by Value
Call by Value में Function को Variable की वास्तविक Value की Copy भेजी जाती है। Function के अंदर यदि उस Value में कोई परिवर्तन किया जाता है, तो उसका प्रभाव केवल Copy पर पड़ता है। Original Variable की Value अपरिवर्तित रहती है।
Output
ऊपर दिए गए उदाहरण में Variable a की वास्तविक Value नहीं बदलती क्योंकि Function को केवल उसकी Copy प्राप्त होती है।
Call by Reference
Call by Reference में Function को Variable का Reference (Address) प्राप्त होता है। इसलिए Function के अंदर किया गया परिवर्तन सीधे Original Variable पर लागू होता है।
Output
Difference between Call by Value and Call by Reference
| Call by Value | Call by Reference |
|---|---|
| Value की Copy भेजी जाती है। | Original Variable का Reference भेजा जाता है। |
| Original Data नहीं बदलता। | Original Data बदल जाता है। |
| Memory अधिक उपयोग होती है। | Memory अपेक्षाकृत कम उपयोग होती है। |
| सुरक्षित (Safe) माना जाता है। | बड़े Data के लिए अधिक उपयोगी होता है। |
Default Arguments
Default Arguments ऐसे Parameters होते हैं जिनकी Default Value Function Declaration के समय निर्धारित की जाती है। यदि Function Call करते समय किसी Parameter के लिए Value Pass नहीं की जाती, तो Compiler स्वतः Default Value का उपयोग करता है।
Syntax
Example
Output : 10
Inline Function
Inline Function छोटे Functions के लिए उपयोग किया जाता है। Inline Keyword Compiler को यह निर्देश देता है कि Function Call के स्थान पर Function का Code Insert करने का प्रयास किया जाए। इससे Function Calling का Overhead कम हो सकता है।
Inline Functions सामान्यतः छोटे तथा Frequently Used Functions के लिए उपयुक्त माने जाते हैं।
Recursive Function
Recursive Function वह Function होता है जो स्वयं को ही Call करता है। Recursion का उपयोग Factorial, Fibonacci Series, Tree Traversal तथा Divide and Conquer Algorithms में किया जाता है।
ऊपर दिए गए उदाहरण में प्रत्येक Call के साथ n की Value कम होती जाती है और Base Condition पूरी होने पर Recursion समाप्त हो जाती है।
Function Overloading
Function Overloading C++ की महत्वपूर्ण विशेषता है जिसमें एक ही नाम (Function Name) के अनेक Functions बनाए जा सकते हैं, बशर्ते उनके Parameters अलग-अलग हों। Compiler Parameters की संख्या अथवा Data Type के आधार पर सही Function का चयन करता है।
ऊपर तीनों Functions का नाम समान है लेकिन Parameter Types अलग-अलग हैं, इसलिए यह Valid Function Overloading का उदाहरण है।
Scope of Variables
| Local Variable | Global Variable |
|---|---|
| Function के अंदर Declare होती है। | सभी Functions के बाहर Declare होती है। |
| केवल उसी Function में Accessible होती है। | पूरे Program में Accessible होती है। |
| Function समाप्त होने पर Destroy हो जाती है। | Program समाप्त होने तक उपलब्ध रहती है। |
Applications of Functions
- Banking Software
- Payroll Management System
- Hospital Management System
- Student Result Processing
- Inventory Management
- Compiler Design
- Operating System Development
- Game Development
- Artificial Intelligence
- Machine Learning Applications
Advantages of Functions
- Code Reusability बढ़ती है।
- Program Modular बनता है।
- Program की Readability बढ़ती है।
- Debugging आसान हो जाती है।
- Maintenance सरल हो जाती है।
- Development Time कम हो जाता है।
- Complex Problems को छोटे Modules में विभाजित किया जा सकता है।
Important Viva Questions
- Function क्या है?
- Function Prototype क्या होता है?
- Library Function तथा User Defined Function में अंतर लिखिए।
- Function Definition तथा Function Declaration में अंतर लिखिए।
- Call by Value क्या है?
- Call by Reference क्या है?
- Default Argument क्या होता है?
- Inline Function क्या है?
- Recursive Function क्या होता है?
- Function Overloading क्या है?
University Examination Important Questions
- Function की परिभाषा लिखिए तथा इसके लाभ समझाइए।
- Function Declaration, Definition तथा Function Call को उदाहरण सहित समझाइए।
- Library Function एवं User Defined Function में अंतर लिखिए।
- Function की विभिन्न Categories को उदाहरण सहित समझाइए।
- Call by Value तथा Call by Reference में अंतर लिखिए।
- Inline Function पर संक्षिप्त टिप्पणी लिखिए।
- Recursive Function को उदाहरण सहित समझाइए।
- Function Overloading क्या है? उदाहरण सहित समझाइए।
- Default Arguments क्या हैं?
- Scope of Variables समझाइए।
Summary
Functions C++ Programming की सबसे महत्वपूर्ण विशेषताओं में से एक हैं। इनके माध्यम से बड़े Programs को छोटे-छोटे Modules में विभाजित किया जाता है। Function Definition, Function Prototype, Function Call, Call by Value, Call by Reference, Default Arguments, Inline Function, Recursive Function तथा Function Overloading जैसे Concepts प्रत्येक C++ Programmer तथा RGPV B.Tech विद्यार्थी के लिए अत्यंत महत्वपूर्ण हैं।
Conclusion
Functions in C++ Program को अधिक Organized, Efficient तथा Reusable बनाते हैं। Library Functions एवं User Defined Functions की सहायता से Complex Problems को सरल Modules में विभाजित किया जा सकता है। यही कारण है कि Functions C++ Programming का आधार (Foundation) माने जाते हैं और RGPV University की Theory, Practical तथा Viva Examination में इनका विशेष महत्व है।
Related Articles
Arrays of Objects in C++ Notes | Object Array, Declaration, Initialization & Examples | Basic Computer Engineering | RGPV BTech First Year
Arrays ...
Read More →Object as Function Argument & Returning Object from Function in C++ Notes | Pass Object to Function, Return Object & Examples | Basic Computer Engineering | RGPV BTech First Year
Object ...
Read More →Pointers to Objects in C++ Notes | Object Pointer, Accessing Members using Pointer & Examples | Basic Computer Engineering | RGPV BTech First Year
Pointer...
Read More →Dynamic Memory Allocation in C++ Notes | new & delete Operators, Heap Memory, Dynamic Objects & Examples | Basic Computer Engineering | RGPV BTech First Year
Dynamic...
Read More →this Pointer in C++ Notes | this Keyword, Uses, Advantages & Examples | Basic Computer Engineering | RGPV BTech First Year
this Po...
Read More →