11.1.11 උපක්‍රමලේඛ (Sub Programs) - ශ්‍රිත - 11-වසර තොරතුරු හා සන්නිවේදන තාක්ෂණය

11.1.11 උපක්‍රමලේඛ (Sub Programs) - ශ්‍රිත

උපක්‍රමලේඛ (Sub Programs)

උපක්‍රමලේඛනයක් යනු විශේෂිත කාර්‍යයක් සිදු කරන කරමලේඛන කොටසකි / ඒකකයකි.

ක්‍රමලේඛනයක සංකීර්ණත්වය මගහරවා ගැනීම සඳහාත් , ක්‍රමලේඛනය හැකිතාක් දුරට සරල කර දැක්වීම සඳහාත් ක්‍රමලේඛ උපක්‍රමලේඛ ලෙස ලියනු ලබයි.

 

උපක්‍රමලේඛනයේ වාසි (Advantages)

  • ක්‍රමලේඛනයේ සංකීණත්වය අඩුවීම.
  • ක්‍රමලේඛනය තේරුම් ගැනීම පහසුවීම.
  • ක්‍රමලේඛනය නඩත්තු කිරීම පහසුවීම. (Maintainability)
  • ක්‍රමලේඛනය සරල වීම.
  • උපක්‍රමලේඛ නැවත නැවත භාවිතා කළ හැකිවීම.(Reusability)

 

උපක්‍රමලේඛ වර්ග 2 කි.

  1. ශ්‍රිත (Function)
  2. කාර්‍යය පටිපාටි (Procedure)

 

 

ශ්‍රිත (Function)

ප්‍රධාන ක්‍රමලේඛය හා සම්බන්ධ උපක්‍රමලේඛ මගින් ප්‍රධාන ක්‍රමලේඛය වෙත ප්‍රතිදානයක් ලබාදිය හැකි උපක්‍රමලේඛ ශ්‍රිත (Function) ලෙස හඳුන්වනු ලබයි.

ශ්‍රිත මගින් ආදාන කිහිපයක් ලබා ගත්ත ද, ප්‍රතිදානය කරන්නේ එක් අගයක් පමණි.

 

කාරක රීතිය (Syntax)

Function Name_of_function (Name_of_variable:data type):data type;

Local declarations;

begin
...
< statements >
...
Name_of_function:= expression;
end;

 

  • ශ්‍රිතයක් ආරම්භයේ දී Function යන්න අනිවර්ර්යෙන් සඳහන් කළ යුතුය. (ශ්‍රිතයක් බව හදුන්වා දෙනු ලබන්නේ Function යන ඇවිරුණු පදය (keyword / recerved word) මගිනි)
  • Name_of_function වෙනුවට ශ්‍රිතය සඳහා අභිමත නමක් ලබාදිය හැකිය.
  • Name_of_variable මගින් ශිතයේ ආදාන ලෙස ලබාගන්නා විචල්‍යයන් (variables) හදුන්වාදෙනු ලබයි. data type මගින් ආදාන ලෙස ලබාගන්නා විචල්‍යයට අදාල දත්ත ප්‍රරූපය දක්වයි.
  • data type මගින් දක්වන්නේ ශ්‍රිතයට අදාළ දත්ත ප්‍රරූපයයි. එනම් , ශ්‍රිතය අවසානයේ ප්‍රතිදානය කරනු ලබන අගයට අදාළ දත්ත ප්‍රරූපයයි.
  • Local declarations; යටතේ දක්වනු ලබන්නේ ශ්‍රිත්‍යට පමණක් අදාළ විචල්‍යයන් වේ.
  • begin සහ end අතර ශ්‍රිතයට අදාළ පියවරයන් දක්වනු ලබයි.
  • Name_of_function:= expression; මෙමගින් ශ්‍රිතයට අදාළ අගය ප්‍රතිදානය කරයි.

 

ප්‍රධාන කමලේඛය ආරම්භ කිරීමට පෙර ශ්‍රිත හදුන්වා දිය යුතුය.

ප්‍රධාන කමලේඛය අවසානයේ උපකරමලේක වලට ඇමතිය (Calling Function) යුතුය.

 

උදාහරණ 1  : පහත පරිදි සංඛ්‍යා දෙකක එකතුව ගණනය කිරීම සඳහා ශ්‍රිතයක් ගොඩනැගිය හැකිය.

Function Add(var A,B:integer):integer;
begin
    Add:=A+B;
end;

 

 උදාහරණ2 : පහතින් දැක්වෙන්නේ එය ප්‍රධාන පැස්කල් වැඩසටහන් මගින් අමතන (Calling Function) ආකාරයයි.

writeln('Enter tha values of A and B');    
read(A,B);
writeln('Add = ',Add(A,B));

 

උදාහරණ 3 : ශ්‍රිත උපයෝගී කරගෙන ලියන ලද සම්පූර්ණ කරමලේඛය පහතින් දැක්වේ.

program checkFunction(input,output);
var         A,B:integer;

Function Add(var A,B:integer):integer;
begin
       Add:=A+B;
end;

begin
    writeln('Enter tha values of A and B');    
    read(A,B);
    writeln('Add = ',Add(A,B));

end.

  • Add:=A+B; යන්නෙන් Add යන ශ්‍රිතය වෙත අගය පවරයි.
  • writeln('Add = ',Add(A,B)); යන්න උපයෝගී කර ගනිමින් Add යන ශ්‍රිතයට අදාළ අගය ප්‍රධාන ක්‍රමලේඛය වෙත ප්‍රතිදානය කරයි. (ප්‍රතිදානයන් එකකි)
  • Add(var A,B:integer) මගින් A,  සහ B ලෙස ආදානයන් දෙකක් ලබාගනී. (මෙලෙස ආදානයන් කිහිපයක් උව ද ලබා ගත හැකිය.)

 

සමචතුරස්‍රයක දිග , පළල හා වෘත්තයක අරය ආදානයන් ලෙස ගෙන සමචතුරස්‍රයක හා වෘත්තයක වර්ගඵලය ශ්‍රිත භාවිතයෙන් ගණනය කරන්න.

program Area(input,output);
var        length,width:integer;
             radius:real;
const     pi=22/7;

Function Area_squre(var length,width:integer):integer;
begin
    Area_squre:=length*width;
end;

Function Area_circle(var radius:real):real;
begin
    Area_circle:=pi*radius*radius;
end;

begin
       writeln('Enter tha values of length and width of squre');    
       read(length,width);
       writeln('Area of squre is : ',Area_squre(length,width));
    
       writeln('Enter Radius');
       read(radius);
       writeln('Area of circle is : ',Area_circle(radius):0:2);
end.

  • Area_circle(radius):0:2 ලෙස දක්වා ඇත්තේ විද්‍යාත්මක අංකනයෙන් ලැබෙන පිළිතුර සාමාන්‍ය ඉලක්කමක් ලෙස ලබා ගැනීම සඳහාය.

 

කාර්‍යය පටිපාටි (Procedure) පිලිබඳව මීලඟ ලිපියෙන් සාකච්චා කෙරේ.