Wednesday, August 7, 2013

Procedures பற்றிய விரிவான விளக்கம்


முந்தைய பாகத்தில் subroutine னுடைய பயன்களை அறிந்துகொண்டோம். இந்த பாகத்தில் இன்னும் விவரமாக பார்ப்போம்.

Procedures / functions / sub-program / subroutine  என்று எப்படி குறிப்பிட்டாலும் அதனுடைய நோக்கம் நமது புரோகிராமை சிறு சிறு துண்டுகளாக பிரிப்பது என்பதால் குழப்பமடையத் தேவையில்லை.

இதில் sub-program / subroutine என்று தனியாக எதுவும் கிடையாது. ஆனால் Procedure ரையோ அல்லது function னையோ குறிப்பிட இவை பயன்படுத்தப்படுகிறது. ஆகையால்procedure மற்றும் function னை பற்றி தெரிந்துகொண்டாலே போதுமானது.

Procedure என்றால் என்ன?

ஒரு செயலை எப்படி செயல்படுத்துவது என்பது பற்றிய கட்டளைகளை உள்ளடக்கியதை procedure எனலாம்.

நமது புரோகிராமில் ஒரு சில கட்டளைகளை திரும்ப திரும்ப செயல்படுத்த நேரிட்டால் அவற்றை ஒரு procedure ஆகவோ அல்லது function ஆகவோ எழுதிக்கொண்டு தேவைப்படும் இடத்தில் call செய்து கொள்ளலாம்.

இந்த procedure ஐ நாம் call செய்தால் தனக்குள் இருக்கும் கட்டளைகளை அது செயல்படுத்தும்.

Procedure Syntax

procedure procedure_name (optional parameters)
begin
-- procedure body..
-- mention what procedure to do
end;

Function Syntax

function function_name (optional parameters) : return_type
begin
-- body of function
-- mention what function to do
   return something;
end;

மேற்கண்ட இரண்டிற்குமிடையே உள்ள வித்தியாசம் என்னவென்று தெரிகிறதா?

ஆம் return என்பது function னில் இருக்கிறது ஆனால் procedure ரில் இல்லை.

Procedure ரும் function னும் ஒரே மாதிரி செயல்பட்டாலும் Procedure எந்த value வையும் return செய்யாது. ஆனால் function இறுதியில் ஒரு value வை return  செய்யும்.

Procedure இல்லாமல் program எழுத முடியுமா?

முடியும். சிறிய program மாக இருந்தால் பிரச்சினை இருக்காது. ஆனால் பெரிய Program மாக இருந்தால் procedure ரை தவிர்க்கவே முடியாது.

ஒருவர் தன்னுடைய கடைக்கு ஒரு program வேண்டுமென்று கேட்கிறார். அவருடைய கடையை நிர்வகிக்க என்னென்னவெல்லாம் தேவைப்படும் என்று யோசனை செய்ததில் cash invoice, credit invoice, purchase invoice, cash receipt, cash payment, voucher என்று பட்டியல் தெரியவந்தது. Sample ளுக்கு இரண்டு format டுகளை தயாரித்து அவரிடம் நம்ம programmer காண்பிக்கிறார். ஆஹா அருமை என்று பாராட்ட அவரும் புரோகிராம் எழுதுகிறார்.

கீழே உள்ள இரு படங்களை பார்க்கவும்.


sample cash invoice, karkandu, tamil programming guide
Sample Cash Invoice

sample credit invoice, procedures vs functions
Sample Credit Invoice

மேற்கண்ட இரண்டு format களையும் print செய்ய எப்படி code எழுதியுள்ளார் என்று பார்ப்போம்.
program without procedures, procedure example, தமிழ் கம்ப்யுட்டர்
மேலோட்டமாக பார்க்கும் போது code சரியாக இருப்பது போல தோன்றினாலும்என்னென்ன பிரச்சினைகள் இதிலுள்ளன என்று பார்ப்போமா?
  1. இரண்டு invoice களிலும் company யினுடைய பெயரை பிரிண்ட் செய்கிறார். இதற்காக இரண்டு invoice களிலும் தனித்தனியாக code எழுதியுள்ளார்.
  2. அதேபோல இரண்டு invoice களிலும் footer note print செய்ய தனித்தனியாக code எழுதியுள்ளார். 
  3. இப்படி ஒரே மாதிரியான code ஒரு புரோகிராமில் திரும்பத்திரும்ப பயன்படுத்துவது code redundancy யை உண்டாக்கும். அதென்ன redundancy? அதாங்க duplicate code.
இப்படியாக 10 வகையான screen களை design செய்து program செய்துவிட்டபின்பு கடைக்காரருக்கு ஒரு யோசனை தோன்றுகிறது. ஏம்ப்பா தம்பி கடை டெலிபோன் நம்பர் தலைப்புல இருந்தா நல்லாயிருக்குமே அதை விட்டுட்டீங்களேன்னு ஒரே போடு போட, நம்மாளும் சரிங்கன்னு போய் மாற்றிவிடுகிறார். 

பின்பு பார்த்தால் 10 invoice ல நான்குல போன் நம்பரை காணோம். என்னாயிற்றுன்னு guess பண்ண முடியுதா? ஆம். அதேதான்... நம்மாளு எல்லா invoice லேயும் மாற்ற மறந்துட்டார். Code redundancy இருந்தால் இந்த தவறு கண்டிப்பாக நிகழும்.

இப்படியாக ஒவ்வொரு modification செய்யும்போதும் ஏதாவதொரு தவறு எங்காவது நிகழத்தான் செய்யும்.

அப்போ இதை தவிர்க்க வழியே கிடையாதான்னு நீங்கள் நினைக்கலாம். வழி இருக்கிறது வாங்க procedure இதற்கு எப்படி பயன்படுதுன்னு பார்க்கலாம்.
program with procedure or function, procedures, functions, தமிழ் கம்ப்யூட்டர்
இங்கே இரண்டு procedure கள்  எழுதப்பட்டுள்ளன. இரண்டையும் எத்தனை தடவை வேண்டுமானாலும் call செய்துகொள்ளலாம். ஒரு Procedure எப்படி வேலை செய்கிறதென்பதும் அம்புக்குறி மூலம் விளக்கப்பட்டுள்ளது. 

Void function 

C, C++ முதலிய Programming Language களில் Procedure  என்று தனியாக எதுவும் இருக்காது. Function மட்டும் தான் இருக்கும். இருப்பினும் அதை Procedure போல வேலை செய்ய வைக்கலாம். எப்படி என்கிறீர்களா? Void Function என்று எழுதிக்கொள்ளலாம். Void என்றால் Function which does not return anything என்று அர்த்தம். அதாங்க Procedure.

Void Function = Procedure  (இரண்டும் சமம்)

இதனால் கிடைக்கும் பயன்கள்:
  1. Code reusability - ஒரே code ஐ பல இடங்களில் பயன்படுத்திக்கொள்ள முடிகிறது. 
  2. Avoid redundancy - ஒரே code ஐ பல தடவை duplicate ஆக திரும்பத்திரும்ப எழுதுவது தவிர்க்கப்படுகிறது.
  3. Reduce complexity - நமது புரோகிராமை பிரித்து subroutine களாக எழுதுவதால் புரிந்து கொள்வது (பராமரிப்பது) எளிதாகிறது.  
இப்போ சொல்லுங்க, கடைக்காரர் தலைப்பிலேயோ அல்லது கீழ்ப்புறத்திலோ எங்கு மாற்றம் செய்ய விரும்பினாலும் ஒரு இடத்தில் மாற்றம் செய்தால் அது அனைத்து இடங்களிலும் பிரதிபலிக்கும்தானே?.

என்ன புரிந்ததா ?

நல்லது...இனி
  • Procedure with parameters
  • Named parameters
  • Optional parameters
  • Pass by value
  • Pass by reference
  • Built-in function
  • User defined function
  • Variable scope
என்றால் என்ன என்பதை அடுத்து பார்க்கலாம்.

No comments:

Post a Comment