Function with Argument But No Return Value
Function with Argument
But No Return Value
इस प्रकार के User
Defined Function में Calling Function से Arguments
के रूप में Parameters
Pass होते हैं लेकिन Calling Function को
किसी प्रकार का कोई मान Return नहीं होता है |
जब
main()
Function के किसी Variable का मान , किसी User
Defined Function द्वारा उपयोग में लाया जाना होता है , तो वह मान User
Defined Function को Pass का दिया जाता है |
जब main()
Function के कोई Variables या किसी अन्य Function
के कोई Variables के मान किसी User
Defined Function के कोष्टक में भेजे जाते हैं , तो इन मानों को Arguments
को Comma Separator द्वारा अलग रखा जाता है |
जब
हम किसी Calling
Function के Variables के मान User
Defined Function को Pass करते हैं , तो ये Arguments
ACTUAL Parameters कहलाते है , क्योंकि Called Function को Calling Function के Variables के वास्तविक मान भेजे जा रहे होते हैं |
जब किसी Function
को Call करते समय उसमें Arguments के रूप में ACTUAL Parameters Pass किये जाते है ,
तो इस प्रकार से Call किये गए Called Function को Call By Value Function कहा जाता है |
जब हम किसी User
Defined Function को किसी अन्य Function से Argument
Pass करते है , तो हमें User Defined Function के कोष्टक में भी Arguments Declare करने पड़ते हैं ,
ताकि ACTUAL Parameters के रूप में प्राप्त होने वाले मानों
को User Defined Function में किन्ही अन्य Variables में Store करके रखा जा सके और उनके साथ
आवश्यकतानुसार प्रक्रिया करके वांछित परिणाम प्राप्त किये जा सकें |
User Defined Function में Declare किये गए ये Arguments FORMAL
Arguments कहलाते हैं |
Calling
Function से प्राप्त ACTUAL Arguments के Variables
के मान उसी क्रम में User Defined Function के
कोष्टक में Declare किये गए FORMAL Arguments के Variables को प्राप्त हो जाते हैं |
इसे
हम निम्न प्रोग्राम द्वारा समझाने की कोशिश करते हैं |
#include<header file>
main()
{
int x,y; // Variables Declaration
float z;
clrscr();
sum ( x, y , z) // Formal Arguments
int a, b; | | | // Arguments Declaration
getch(); | | |
} \|/ \|/ \|/
sum ( a, b , c) // Formal Arguments
int a, b; //Arguments Declaration
float c;
{
“ “ “ ;
“ “ “ ;
}
इस प्रोग्राम में
तीन Variables
x,y,z लिए गए है | x
व y int प्रकार के हैं , जबकि z Float प्रकार का है | main()
से बाहर एक User Defined Function Sum लिखा
गया है | इस Function
को main() Function में Call किया गया है | main()
Function से Parameters के रूप में गए y
व z को sum के कोष्टक
में लिख दिया गया है | इस
प्रकार यदि हम मान लें की x=20, b=10 है तो x का मान a को व y का मान b
को प्राप्त हो जाएगा | यानी
x=a=20
व y=b=10 हो जाएगा |
इस
प्रकार User
Defined Function में a का मान 20 व b का मान 10 हो जाएगा |
x, y व z
का वास्तविक मान ही sum Function को दे दिया
गया है , इसलिए ये ACTUAL Parameters हैं और इन Variables
की एक Copy a, b व c को
प्राप्त हो रही है , इसलिए a, b व c FORMAL Arguments
हैं |
वास्तव में Sum
Function में गए y,z का जो मान क्रम से a,b
व c को प्राप्त होता है , वह मात्र एक
प्रतिलिपि होती है | यदि
यहां हम b
का मान बदल कर 34 कर दें तो भी ACTUAL
Argument में y का मान 10 ही रहेगा |
यहां ये खास तरह
से धयान रखना होता है कि User Defined Function में
जितने Arguments Declare होते हैं , उतने ही Arguments
वह Calling Function से Accept करता है | यानी
हमने User
Defined Function में केवल तीन Arguments के
लिए Variables Declare किये हैं और Calling Function इस User Defined Function में चार मान Pass करता है तो क्रम से तीन Variables के मान तो User
Defined Function में Declare Variables को
प्राप्त हो जायेंगे लेकिन चौथा Parameter फ़ालतू ही रहेगा |
जैसे
#include<header file>
main()
{
int x,y; // Variables Declaration
float z;
clrscr();
sum ( x, y , z , k); // Formal Argument
……….. | | |
……….. | | |
getch(); | | |
| | |
} \|/ \|/ \|/
sum ( a , b, c ) //Arguments Declaration
float c;
{
“ “ “ ;
“ “ “ ;
}
इस प्रोग्राम में
Sum
User Defined Function केवल तीन Argument ही Accept
कर सकता है | इसलिए
c=a
, y=b व z=c हो जाएगा |
लेकिन
चौथा Arguments
k का यहां पर कोई उपयोग नहीं है |
क्योंकि ये Argument
User Defined Function में Pass ही नहीं होगा
और फ़ालतू में Memory में Space रोकेगा |
इसी
प्रकार यदि Actual Parameters , Formal Parameters से
कम हो , तो User Defined Function में एक Variable खाली रहेगा और उसमें Garbage Value Store रहेगी |
जैसे
#include<header file>
main()
{
int x,y; // Variables Declaration
float z;
clrscr();
sum ( x, y, z ); //Actual Arguments
……….. | | |
……….. | | |
getch(); | | |
} \|/\|/\|/
sum ( a, b, c ,d ) // Formal Arguments
int a, b; // Arguments Declaration
float c;
{
//……..
}
इस उदाहरण में Formal
Parameters , Actual Parameters से अधिक है |
इसलिए
यहां User
Defined Function में Variable d का कोई मतलब
नहीं है और ये Garbage Value दिखायेगा हम जिस क्रम में Actual
Parameters लिखते हैं , उसी क्रम में वे User Defined
Function में Declare किये गए Arguments
को प्राप्त होते हैं |
एक और खास बात
यहां ध्यान रखने की होती है , जो कि पहले भी बताया गया है , कि Actual
Arguments के रूप में प्राप्त होने वाले Variables का Data Type , Formal Arguments के Declared
Data Type के समान होना चाहिए |
जैसे
निम्न प्रोग्राम से प्रारूप को देखें :
#include<header file>
main()
{
int x, y; float z; clrscr();
sum ( x , y , z ); //Actual Arguments
…….. | | |
…….. | | |
getch(); | | |
} \|/ \|/ \|/
sum ( a, b , c ) // Formal Arguments
int a , b; // Arguments Declaration
float c;
{
“ “ “ ;
“ “ “ ;
}
इस प्रोग्राम में
x
व y को int प्रकार का
लिया गया है | इसलिए
जब इन्हें Argument के रूप में sum
Function को भेजा गया तो वे मान क्रमशः a व b
को प्राप्त हो रहें हैं |
इसलिए
ये जरुरी है कि a व b भी int प्रकार के ही साथ z
का मान हमें Float में चाहिए , इसलिए z
को User Defined Function में Argument
के रूप में Pass करने पर z का मान c को प्राप्त होता है , जिससे ये जरुरी हो
जाता है , कि c भी float प्रकार का हो |
इसीलिए Formal
Argument के Declaration के बाद a व b का int व c को float प्रकार का Declare किया
गया है | यहां Call
किये जा रहे Function को main()
Function द्वारा Actual Arguments Pass किये
जा रहें हैं |
जब किसी Called
Function में Actual Value Pass किया जाता है , तो इस प्रकार के Function को Call
by Value Function कहा जाता है |
हम
इस प्रकार के Argument Without Return Value Function को अच्छी तरह से समझने के लिए एक प्रोग्राम बनाते हैं |
इस
प्रोग्राम में दो संख्याओं के जोड़ व गुणा करने के लिए दो Function
Use किये गए हैं |
#include<stdio.h>
main()
{
int j,k;
printf("\n Enter first and Second Value:");
scanf("%d %d",&j,&k);
sum(j,k);
mul(j,k);
getch();
}
//function
sum(int x , int y )
{
int z;
z= x+y;
printf("\n Sum of %d and %d is %d",x,y,z);
}
//function
mul(int l , int m)
{
int n;
n= l*m;
printf("\n Multiplication of %d and %d is %d ",l,m,n);
}
जब ये Program
Execute होता है तो program Control दो int
प्रकार के Variable Declare करता है |
फिर
printf()
Function से एक Message print करके Input
लिया जाता है | ये
मान क्रमशः j व k को प्राप्त
होते हैं |
अब Program
Control को एक User Defined Function Sum प्राप्त
होता है | यहां Actual
Argument के रूप में j व k को Called Function Sum को Pass किया जाता है | sum
में ये मान Formal Arguments के रूप में x
व y को प्राप्त होते हैं |
यहां
Block
में एक अन्य Variable z Declare किया है |
x
व y का योग करके प्राप्त मान को z में Store किया जाता है , और z का मान print करवा दिया जाता है |
Program Control ये मान print करके पुनः main() Function में जाता है | यहां
उसे एक और Function mul प्राप्त होता है और इसमें
भी Actual Argument के तौर पर j व k
का मान क्रमशः l व m को
प्राप्त हो जाता है | Function
Block में एक Local Variable n Declare किया
गया है l व m के गुणनफल का मान इस n
नाम के int प्रकार के Variable में Store कर दिया जाता है , जो कि केवल User
Defined Function के लिए ही Use हो सकता है |
यहां
Output
में n को Print कर दिया
जाता है , जो कि j व k के मान का
गुणनफल print करता है |
Program Control वापस main() में जाता है |
इस
प्रकार इस प्रोग्राम में दो User Defined Function प्रयोग किये गए हैं , जिन्हें
किसी भी अन्य Function या main() Function में प्रोग्राम करके किन्हीं भी दो संख्याओं का योग या गुणनफल प्राप्त किया
जा सकता है | इस
प्रकार यहां दोनों ही Function , main() Function से Argument ले रहें हैं , लेकिन किसी भी प्रकार का
कोई भी मान Return नहीं कर रहें हैं |
#include<stdio.h>
main()
{
int a, b;
printf("Enter the two integer value:");
scanf("%d %d", &a, &b);
sum();
getch();
}
sum(int x, int y)
{
int z;
z=x/y;
printf("z=%d", z);
}
No comments