උපක්රමලේඛ (Sub Programs)
උපක්රමලේඛනයක් යනු විශේෂිත කාර්යයක් සිදු කරන කරමලේඛන කොටසකි / ඒකකයකි.
ක්රමලේඛනයක සංකීර්ණත්වය මගහරවා ගැනීම සඳහාත් , ක්රමලේඛනය හැකිතාක් දුරට සරල කර දැක්වීම සඳහාත් ක්රමලේඛ උපක්රමලේඛ ලෙස ලියනු ලබයි.
උපක්රමලේඛ වර්ග 2 කි.
කාර්යය පටිපාටි (Procedure)
ප්රධාන ක්රමලේඛය හා සම්බන්ධ උපක්රමලේඛ මගින් ප්රධාන ක්රමලේඛය වෙත ප්රතිදානයක් ලබාදිය නොහැකි උපක්රමලේඛ කාර්යය පටිපාටි (Procedure) ලෙස හඳුන්වනු ලබයි.
කාර්යය පටිපාටි (Procedure) මගින් ආදානයන් එකක් ලබාගෙන, ප්රතිදානයන් කිහිපයක් ලබාදිය හැකිය.
කාරක රීතිය (Syntax)
Procedure Name_of_Procedure (Name_of_variable:data type);
Local declarations;
begin
< procedure body >
end;
ප්රධාන කමලේඛය ආරම්භ කිරීමට පෙර කාර්යය පටිපාටි හදුන්වා දිය යුතුය.
ප්රධාන කමලේඛය අවසානයේ උපකරමලේක වලට ඇමතිය (Calling Procedure) යුතුය.
උදාහරණ 1 : පහත පරිදි සංඛ්යා දෙකක එකතුව ගණනය කිරීම සඳහා කාර්යය පටිපාටියක් ගොඩනැගිය හැකිය.
Procedure getAB(var A,B:integer);
begin
writeln('Enter tha values of A and B');
read(A,B);
end;
Procedure Add(var A,B:integer);
var Add:integer;
begin
Add:=A+B;
writeln('Sum = ',Add);
end;
උදාහරණ2 : පහතින් දැක්වෙන්නේ එය ප්රධාන පැස්කල් වැඩසටහන් මගින් අමතන (Calling Procedure) ආකාරයයි.
getAB(A,B);
Add(A,B);
උදාහරණ 3 : කාර්යය පටිපාටි උපයෝගී කරගෙන ලියන ලද සම්පූර්ණ කරමලේඛය පහතින් දැක්වේ.
program checkProcedure(input,output);
var A,B:integer;
Procedure getAB(var A,B:integer);
begin
writeln('Enter tha values of A and B');
read(A,B);
end;
Procedure Add(var A,B:integer);
var Add:integer;
begin
Add:=A+B;
writeln('Sum = ',Add);
end;
begin
getAB(A,B);
Add(A,B);
end.
චතුරස්රයක දිග හා පළල ආදානයන් ලෙස ගෙන චතුරස්රයේ වර්ගඵලය හා පරිමිතිය කාර්යය පටිපාටි භාවිතයෙන් ගණනය කරන්න.
program Area_pro(input,output);
var length,width:integer;
Procedure getdata(var length,width:integer);
begin
writeln('Enter tha values of length and width of squre');
read(length,width);
end;
Procedure Area_squre(var length,width:integer);
var Area:integer;
begin
Area:=length*width;
writeln('Ara of squre is : ',Area);
end;
Procedure Perimeter_squre(var length,width:integer);
var Perimeter:integer;
begin
Perimeter:=((length*2)+(width*2));
writeln('Perimeter of squre is : ',Perimeter);
end;
begin
getdata(length,width);
Area_squre(length,width);
Perimeter_squre(length,width);
end.
ශ්රිත (Function) හා කාර්යය පටිපාටි (Procedure) අතර වෙනස.
ශ්රිත (Function) | කාර්යය පටිපාටි (Procedure) |
ප්රධාන ක්රමලේඛය හා සම්බන්ධ උපක්රමලේඛ මගින් ප්රධාන ක්රමලේඛය වෙත ප්රතිදානයක් ලබාදිය හැකිය. |
ප්රධාන ක්රමලේඛය හා සම්බන්ධ උපක්රමලේඛ මගින් ප්රධාන ක්රමලේඛය වෙත ප්රතිදානයක් ලබාදිය නොහැකි |
ශ්රිත මගින් ආදාන කිහිපයක් ලබා ගත්ත ද, ප්රතිදානය කරන්නේ එක් අගයක් පමණි. |
කාර්යය පටිපාටි (Procedure) මගින් ආදානයන් එකක් ලබාගෙන, ප්රතිදානයන් කිහිපයක් ලබාදිය හැකිය. |