செயற்கூற்றை அழைப்பதற்கான வழிமுறைகள்
C++ மொழியில் செயலுருபுக்களை செயற்கூறுக்கு இரு வழிகளில் அனுப்பலாம். செயலுருபுக்களை அனுப்பும் முறையைப் பொருத்து, செயற்கூற்றை அழைக்கும் வழிமுறைகள் மதிப்பு மூலம் அழைத்தல் (Call by Value)மற்றும் குறிப்பு மூலம் அல்லது முகவரி மூலம் அழைத்தல் (Call by Reference or Address) என்று இரு வகைப்படுத்தப்படும்.
மதிப்பு மூலம் அழைத்தல் முறை
இந்த முறையில் மெய்யான அளபுருவின் மதிப்பை முறையான அளபுருவில் நகலெடுக்கும். இந்த முறையில் முறையான அளபுருவின் மதிப்பில் ஏதேனும் மாற்றங்கள் செய்தால் அது மெய்யான அளபுருவின் மதிப்பில் பிரதிபலிப்பதில்லை.
நிரல் 11.17
#include<iostream>
using namespace std;
void display(int x)
{
int a=x*x;
cout<<"\n\nThe Value inside display function (a * a):"<<a;
}
int main()
{
int a;
cout<<”\nExample : Function call by value:”;
cout<<"\n\nEnter the Value for A :";
cin>>a;
display(a);
cout<<"\n\nThe Value inside main function "<<a;
return(0);
}
வெளியீடு :
Example : Function call by value
Enter the Value for A : 5
The Value inside display function (a * a) : 25
The Value inside main function 5
குறிப்பு மூலம் அழைத்தல் முறை
இந்த முறையில் மெய்யான அளபுருவின் குறிப்பை அல்லது முகவரியை முறையான அளபுருவில் நகலெடுக்கும். முகவரியின் மூலம் அழைப்பதால் முறையான அளபுருவின் மதிப்பில் ஏதேனும் மாற்றம் செய்தால் மெய்யான அளபுருவில் அந்த மாற்றம் பிரதிபலிக்கும்.
நிரல் 11.18
#include<iostream>
using namespace std;
void display(int &x) //passing address of a//
{
x=x*x;
cout<<"\n\nThe Value inside display function (n1 x n1) :"<<x ;
}
int main()
{
int n1;
cout<<"\nEnter the Value for N1 :";
cin>>n1;
cout<<"\nThe Value of N1 is inside main function Before passing : "<< n1; display(n1);
cout<<"\nThe Value of N1 is inside main function After passing (n1 x n1) : "<< n1; return(0);
}
வெளியீடு :
Enter the Value for N1 :45
The Value of N1 is inside main function Before passing : 45
The Value inside display function (n1 x n1) :2025
The Value of N1 is inside main function After passing (n1 x n1) : 2025
display() செயற்கூற்றின் தலைப்புப் பகுதியில் உள்ள மாற்றத்தை கவனிக்கவும். & என்ற குறியுடன் x என்ற அளபுருவை அறிவிக்கப்பட்டு, இதை குறிப்பு மாறி என்பதை உணர்த்தும் இதனால் இந்த செயற்கூறை அழைக்கப்படும்போது குறிப்பு மூலம் அழைக்கப்பட வேண்டும். இதனால் display() செயற்கூறை அழைக்கும் போது num1 என்ற மாறியின் முகவரியை x மாறி பகிர்ந்து கொள்ளும். main() செயற்கூறில் num1 என்ற மாறியின் பெயரும் display() செயற்கூறில் x என்ற மாறியின் பெயரும் ஒரே சேமிப்பு பகுதியைக் குறிக்கிறது. இதனால் x மாறியின் மதிப்பை மாற்றியமைத்தால் அந்த மாற்றம் num1 மாறியின் மதிப்பை உண்மையில் மாற்றும்.
Inline செயற்கூறு
ஒரு செயற்கூறை அழைக்கும் கூற்று நிரல்பெயர்ப்பியை செயற்கூறுக்கு (வரையறுக்கப்பட்ட செயற்கூறுகள் அடுக்கங்களில் (STACKS) சேமிக்கப்படும்) தாவச் செய்து மற்றும் செயற்கூறு செயல்பாட்டின் பின் அழைப்புக்கூறுக்கு அடுத்திருக்கும் கட்டளைக்குத் தாவச்செய்கிறது. இதனால் நிரலின் இயக்க நேரத்தின் வேகம் குறையும். சிறிய செயற்கூறின் வரையறுப்புக்கு அடுக்கங்களைப் பயன்படுத்துவதைக் குறைக்க Inline செயற்கூறுகள் பயன்படுத்தலாம்.
inline செயற்கூறு மூல நிரலில் சாதாரணச் செயற்கூறு போன்றே தோற்றமளிக்கும். ஆனால் செயற்கூறின் கட்டளைகள் முழுமையும் அழைப்புக் கூற்றுக்குப் பதிலாக அப்படியே நிரலில் செருகப்பட்டுவிடும். Inline சிறப்புச் சொல்லை செயற்கூறின் தலைப்பில் இணைத்து அந்த செயற்கூறை inline செயற்கூற்றாக மாற்ற முடியும்.
தொடரியல் :
inline returntype functionname (datatype parametername1.... datatype parameternameN)
inline செயற்கூற்றுகளின் நன்மைகள்
• inline செயற்கூறுகள் வேகமாக செயல்படும். ஆனால் அதிக நினைவக இடத்தை எடுத்துக் கொள்ளும்.
• அடுக்கங்களை பயன்படுத்தும் போது உள்ள சிக்கல்பாட்டினைக் குறைக்கிறது.
நிரல் 11.19
#include <iostream>
using namespace std;
inline float simpleinterest(float p1,float n1, float r1)
{
float si1=(p1*n1*r1)/100;
return(si1);
}
int main ()
{
float si,p,n,r;
cout<<"\nEnter the Principle Amount Rs. :";
cin>>p;
cout<<"\nEnter the Number of Years :";
cin>>n;
cout<<"\nEnter the Rate of Interest :";
cin>>r;
si=simpleinterest(p,n,r);
cout << "\nThe Simple Interest = Rs."<<si;
return 0;
}
வெளியீடு:
Enter the Principle Amount Rs. :60000
Enter the Number of Years :10
Enter the Rate of Interest :5
The Simple Interest = Rs.30000
மேலே கொடுக்கப்பட்டுள்ள நிரலில் உள்ள செயற்கூறின் வரையறுப்பு பொதுவான வடிவில் இருந்தாலும் நிரல்பெயர்ப்பிக்கு பின் செயற்கூறை இயக்கும் போது (p1*n1*r1)/100 என்ற செயற்கூறின் கூற்று si=simpleinterest(p,n,r); என்று அழைக்கும் கூற்றை si= (p1*n1*r1)/100; என்று மாற்றியமைக்கும்.