முந்தைய பாகத்தில் ஒரு procedure ரை call செய்யும் போது அதில் இருக்கும் அத்தனை parameter ருக்குமான input களையும் அதே வரிசைப்படி கொடுக்கவேண்டும். இல்லையானால் error message வரும் என்பதை பார்த்தோம்.
function ArithmeticFunction (Number1 : Float; Operator : Integer; Number2 : Float) : Float;
begin
If Operator = 1
then Result := Number1 + Number2
else If Operator = 2
then Result := Number1 - Number2
else If Operator = 3
then Result := Number1 * Number2
else Result := Number1 / Number2;
end;
மேலே ArithmeticFunction என்ற function declare செய்யப்பட்டுள்ளது. இதில் 2 float type, 1 integer type parameter கள் உள்ளன. இது function ஆக இருக்கின்றதால் ஒரு value வை return செய்கிறது. Return ஆகக்கூடிய value float data type ஆக இருக்கிறது.
இந்த function னை பார்த்த உடன் அது என்ன செய்கிறதென்று உங்களுக்கு புரிந்தால் உங்களுக்கு புரோகிராமிங் புரிகிறது என்று அர்த்தம். புரோகிராம் இன்னும் சரளமாக எழுதத் தெரியாவிட்டாலும் குறைந்தபட்சம் என்ன எழுதப்பட்டுள்ளதென்பதாவது புரிகிறதே. புரோகிராமர் ஆவதற்கு இதுவே அடிப்படை. நமது புரோகிராமின் ஒவ்வொரு வரியும் என்ன செய்கிறதென்று நமக்கு புரியவேண்டும். ஒரு வரி புரியாவிட்டாலும் அந்த புரோகிராம் நமது கட்டுப்பாட்டில் இல்லை என்று அர்த்தம். மண்குதிரையை நம்பி ஆற்றில் இறங்கின கதைதான்.
ஒவ்வொரு வரியும் புரிந்துவிட்டால் மனப்பாடம் செய்யாமல் புரோகிராம் எழுத ஆரம்பித்துவிடலாம். ஒரு புரோகிராமில் எங்கு பிழையிருக்கிறது என்பதையும் கண்டுபிடித்துவிடலாம்.
-- புரியாதவர்களுக்காக மேற்கண்ட புரோகிராமுடைய pseudo-code இதோ:
function ArithmeticFunction (Number1 : Float; Operator : Integer; Number2 : Float) : Float;
begin
If Operator = 1 என்றால் கூட்டச் சொல்கிறார்கள் என்று புரிந்துகொள்
then Result := இரண்டு நம்பரையும் கூட்டவும்
else If Operator = 2 என்றால் கழிக்கச் சொல்கிறார்கள் என்று புரிந்துகொள்
then Result := முதல் நம்பரிலிருந்து இரண்டாவதை கழி
else If Operator = 3 என்றால் பெருக்கச் சொல்கிறார்கள் என்று புரிந்துகொள்
then Result := இரண்டு நம்பரையும் பெருக்கவும்
else 1,2,3 தவிர வேறெதுவும் இருந்தால்
Result := முதல் நம்பரை இரண்டாவதைக் கொண்டு வகுக்கவும்.
end;
மேற்கண்ட function னானது கொடுக்கப்பட்ட parameter ருக்கு தக்கவாறு 4 விதமான செயல்களை செய்து result ஐ திருப்பிதரும் வகையில் வடிவமைக்கப்பட்டுள்ளது.
இந்த function னை call செய்யவேண்டுமென்றால் 3 value க்களை கட்டாயம் நாம் அனுப்பவேண்டும். அதில் உள்ள வரிசைப்படி அனுப்ப வேண்டும். இதில் ஏதாவது ஒன்றை செய்யாவிட்டாலும் error என்று வரும்.
அடுத்து Main program மிலிருந்து நமது function னை call செய்து test செய்து பார்ப்போம்.
procedure Main;
Var
FirstNumber, SecondNumber, Answer : Float;
begin
FirstNumber := 10.10;
SecondNumber := 20.20;
Answer := ArithmeticFunction (FirstNumber, 1, SecondNumber) ; //addition operation. Answer is 30.3
ShowMessage( Answer) ;
Answer := ArithmeticFunction (10.10, 2, 5) ; //subtract operation. Answer is 5.1
ShowMessage( Answer) ;
Answer := ArithmeticFunction (FirstNumber, 3, 5.5) ; //multiplicative operation. Answer is 55.55
ShowMessage( Answer) ;
Answer := ArithmeticFunction (FirstNumber, 4, 5) ; //division operation. Answer is 2.02
ShowMessage( Answer) ;
//next line has data type mismatch problem. Incorrect order of values; //second parameter is declared as integer; but float value is passed here; Answer := ArithmeticFunction (FirstNumber, SecondNumber, 1) ; ShowMessage( Answer) ;end;
இதில் உள்ள பிரச்சினை என்னவென்றால் formal parameter signature ரும் actual parameter signature ரும் வேறுவேறாக இருக்கின்றன. சரியான வரிசையில் value க்களை ஒழுங்கு படுத்தி திருத்தினால் புரோகிராம் வேலை செய்யும். அல்லது நாம் கொடுக்கும் value வை எந்த parameter ருக்குரியது என்று சொல்லவேண்டும். சொல்லிவிட்டால் புரோகிராம் அதை புரிந்து கொள்ளும். Error காட்டாது.
குறிப்பு : Parameter களுக்கான input value க்களை arguments என்றும் குறிப்பிடுவார்கள்.
Named Arguments என்றால் என்ன?எந்த value எந்த parameter ருக்குரியது என்று குறிப்பிடுவதை Named Arguments என்பர்.
மேலே உள்ள Main Procedure ரில் சிவப்பு வண்ணத்தில் இருக்கும் வரியை இந்த வசதியை கொண்டு திருத்துவோம்.
பிழையான வரி