පරිගණක ක්රමලේඛනයේ දී දෙන ලද ප්රකාශන හෝ විධාන කිහිපයක එකතුවකින් ශ්රිතයක් (function) හෙවත් ක්රියාවක් සෑදේ. සාමාන්යයෙන් ශ්රිතයකට ආදාන දත්ත එකක් හෝ කිහිපයක් පවතින අතර ඒවා ශ්රිතය ආරම්භයේ දී ලබා දිය යුතු වේ. එම ආදාන දත්ත මත ශ්රිතය තුල ඇති විධාන සහ ප්රකාශන ක්රීයාතාමක වී අවසානයේ දී ප්රතිධාන දත්තයක් ලබා දේ. එකම ආදාන දත්ත සදහා ශ්රිතයක් සෑම විටම එකම ප්රතිධාන දත්තය ලබා දේ. දැන් අපි පයිතන් භාවිතයෙන් ශ්රිතයක් ගොඩනගමු.
අපි ඍජුකෝණාස්රයක වර්ගඵලය ශ්රිතයක් මඟින් ලබා ගනිමු. ඍජුකෝණාස්රයේ දිග පලලින් ගුන කිරීමෙන් එහි වර්ගඵලය ලබා ගත හැකිය. ඒසේ නම් ඍජුකෝණාස්රයක වර්ගඵලය ගණනය කරනු ලබන ශ්රිතයේ ආදාන දත්ත දිග සහ පලල වන අතර ප්රතිධාන දත්තය වර්ගඵලය වේ.
|
රෑපසටහන 5.1 - ඍජුකෝණාස්රයක වර්ගඵලය |
රෑපසටහන 5.1 මඟින් දැක්වෙන පරිදි, def areaOfRectangle(width,height): විධානය මඟින් මෙම ශ්රිතය පයිතන් වලට හදුන්වා දේ. ශ්රිතයක් හදූන්වාදීම def විධානයෙන් ආරම්භවන අතර එය : ලකුණින් අවසාන වේ. def විධානයට පසුව ඇත්තේ ශ්රිතයේ නමය. මේ සදහා කැමති නමක් භාවිතා කල හැක. හැකි සෑම විටම ශ්රිතයේ ක්රියාකාරිත්වයට ගැලපෙන නමක් භාවිතා කරන්න. අපි ඍජුකෝණාස්රයක වර්ගඵලය ගණනය කරණ ශ්රිතය areaOfRectangle ලෙස නම් කරමු. ශ්රිතයේ නමට පසුව ආදාන දත්ත වරහන් තුල දී ඇත. මෙම ශ්රිතය width සහ heigth ලෙස හැදින්වෙන ආදාන දත්ත දෙකක් ලබා ගනියි.
ශ්රිතයේ නම සහ ආදාන දත්ත හදුන්වා දුන් පසු, එයට පහලින් මදක් දකුණු පසට වන්නට ශ්රිතයට අයත් විධාන සහ ප්රකාශන ලබා දිය හැක. රෑපසටහන 5.1 මඟින් දැක්වෙන පරිදි, මෙම ශ්රිතය a=width*height සහ return a යන ප්රකාශයෙන් සහ විධානයෙන් සමන්විත වේ. a=width*height යන ප්රකාශය වර්ගඵලය ගණනය කර, එම අගය a යන විචල්යයට ආදේශ කරයි. ශ්රිතයක කාර්යය අවසානයේ දී, ප්රතිධාන දත්තය ලබා ගැනීම සදහා අපි return යන විධානය භාවිතා කරමු. return විධානය ඒ සමඟ ඇති විචල්යය හෝ ප්රකාශයේ අගය ප්රතිධාන දත්තය ලෙස නැවත ලබා දේ. මෙම උදාහරණයේ දී, retrurn වලට පසුව ඇත්තේ a විචල්යය බැවින්, ප්රතිධාන දත්තය ලෙස a විචල්යයේ අගය ලබා දේ. ශ්රිතයේ ඇති a=width*height සහ return a යන ප්රකාශයන් වෙනුවට return width*height යන තනි ප්රකාශනය වුවද භාවිතා කල හැකිය.
දැන් මෙම ශ්රිතය ක්රීයාත්මක කරවන අයුරු හදුනා ගනිමු. මේ සදහා එම ශ්රිතයේ නම සමඟ ආදාන දත්ත ලබා දිය යුතුවේ. ශ්රිතය ක්රියාත්මක වූ පසු ලබා දෙන ප්රතිධාන දත්තය පරිගණක තිරය් සටහන් කිරීමට හෝ වෙනත් විචල්යකට ආදේශ කිරීමට හැකිය. ඒ අනුව areaOfRectangle ශ්රිතය area=areaOfRectangle(width=24,height=10) ලෙස ක්රියා කරවිය හැකිය. මෙහි දී 24 සහ 10 යන ආදාන දත්ත, ශ්රිතයේ ඇති width සහ height යන විචල්ය දෙකට පිළිවලින් ආදේශ වේ. ශ්රිතය තුලදී, දෙනු ලැබූ ආදාන දත්ත භාවිතා කර, a=width*height යන ප්රකාශය මඟින් වර්ගඵලය ගණනය කරයි. එම අගය return a ප්රකාශය මඟින් ප්රතිධාන දත්තය ලෙස නැවත ලබා දේ. ශ්රිතයේ කාර්යය අවසානයේ දී, ලැබෙන ප්රතිධාන දත්තය area යන විචල්යයට ආදේශ වේ. පසුව ඇති print විධානය එම අගය පරිගණක තිරයේ සටහන් කරයි.
|
රෑපසටහන 5.2 - දිග සහ පලල යතුරු පුවරුව මඟින ලබා ගැනීම |
අපි දැන් ඕනෑම ඍජුකෝණාස්රයක වර්ගඵලය මෙම ශ්රිතය ආධාරයෙන් ගණනය කරමු. ඒ සදහා ඍජුකෝණාස්රයේ දිග සහ පලල යතුරු පුවරුව මඟින් ලබා ගනිමු. යතුරු පුවරුව මඟින් දිග සහ පලල ලබා ගැනීමට input විධානය භාවිතා කරමු. පසුව එම අගයන් areaOfRectangle ශ්රිතයට ලබා දී වර්ගඵලය ගණනය කරමු. මේ සදහා සකසන ලද පරිගණක ක්රමලේඛය රෑපසටහන 5.2 මඟින් නිරෑපනය වේ.
|
රෑපසටහන 5.3 - සමචතුරස්රයක වර්ගඵලය |
අපි දැන් areaOfRectangle ශ්රිතය භාවිතා කර සමචතුරස්රයක වර්ගඵලය සෙවීම සදහා areOfSquare ලෙස ශ්රිතයක් ගොඩනගමු. දිග සහ පලල සමාන ඍජුකෝණාස්රයක්, සමචතුරස්රයක් ලෙස හැදින්වේ. එබැවින් රෑපසටහන 5.3 දැක්වෙන පරිදි areaOfRectangle ශ්රිතයේ දිග සහ පලල සදහා එකම අගය ලබා දීම තුලින් සමචතුරස්රයක වර්ගඵලය ලබාගත හැකිය.
len=input("Length :") විධානය මඟින් සමචතුරස්රයේ පැත්තක දිග ලබා ගෙන, එම අගය සමග areOfSquare ශ්රිතය ක්රියාත්මක කරමු. area=areaOfSquare(length=len) ප්රකාශය එම ශ්රිතය ක්රියාකරවා සමචතුරස්රයේ වර්ගඵලය area විචල්යයට ආදේශ කරයි. areaOfSquare ශ්රිතය තුල return විධානය සමග areaOfRectangle ශ්රිතය ක්රියාකරවා තිබේ. එම ශ්රිතය ක්රියාකර වීමේ දී, areaOfRectangle(width=length,height=length) ලෙස, දිග සහ පලල යන ආදාන දත්ත දෙක සදහාම එකම අගය ලබා දී තිබේ. මෙම සරල උදාහරණය ශ්රිතයක් සෑදිම සදහා තවත් ශ්රිතයක් යොදාගත හැකි අන්දම පැහැදිලි කර දේ.
බිත්තියක තීන්න ආලේප කිරීම සදහා වර්ග මීටරයකට රුපියල් දහසක් වැය වේ. පැත්තක දිග මිටර 1.7 වන සමචතුරස්රාකාර සිදුරක් ඇති, දිග සහ උස පිළිවලින් මිටර 4.1 ක් සහ 2.3 වන බිත්තියක තීන්ත ආලේප කිරීමට කොපමන මුදලක් වැය වේද? ඉහත සාදන ලද ශ්රිතයන් භාවිතා කර මෙම ගැටලුව විසදීම සදහා පයිතන් පරිගණක ක්රමලේකයක් ලියන්න. මේ සදහා ඔබ ප්රථමයෙන් බිත්තියේ තීන්න ආලේප කල යුතු කොටසේ වර්ගඵලය සොයාගත යුතුය. ඒ සදහා බිත්තියේ මුලු වර්ගඵලයෙන්, සිදුරේ වර්ගඵලය අඩුකල යුතුය. වැය වන මුදල වනුයේ වර්ගඵලය*රු. 1000.00 වේ.
අපි දැන් ඔබ ලියූ ක්රමලේඛය රෑපසටහන 5.4 සමඟ සසදමු. මෙම ක්රමලේඛයේ, තීන්න ආලේප කල යුතු කොටසේ වර්ගඵලය area=areaOfRectangle(width=4.1,height=2.3) - areaOfSquare(length=1.7) යන ප්රකාශය මගින් ලැබේ. print "Painting Cost = Rs. ",area*1000 විධානය, වැය වන මුදල ගණනය කර, එම අගය පරිගණක තිරයේ සටහන් කරයි.
|
රෑපසටහන 5.4 - තීන්ත ආලේප කිරම සදහා වැයවන මුදල සෙවීම |
මෙවන් සරල ගණිත ගැටලු ශ්රිතයන් භාවිතයෙන් පහසුවෙන් විසදීමට ඔබට හැකිය.
එකේ සිට දෙන ලද සංඛ්යවක් දක්වා ඇති සෑම සංඛ්යවකම එකතුව ලබා ගත හැකි ශ්රිතයක් දැන් ලියමු. මෙම ශ්රිතයේ ආදාන දත්තය වනුයේ, දෙන ලද සංඛ්යවය. අපි එය 5 යැයි සිතමු. එහි දී මෙම ශ්රිතයේ ප්රතිදාන දත්තය විය යුත්තේ 5+4+3+2+1 හී අගයයි.
මෙම ශ්රිතය def sum(number): ලෙස පයිතන් වලට හදුන්වා දිය හැක. පසුව ශ්රිතය තුල දී 5 සිට 1 දක්වා වන සංඛ්ය එකින එක එකතු කල යුතු වේ. ඒ සදහා while පාලන ප්රකාශය හෙවත් while ලූපය භාවිතා කරමු. රෑපසටහන 5.5 දැක්වෙන පරිදි while ලූපය සමඟ තාර්කික ප්රකාශයක් භාවිතා කර තිබේ. එම තාර්කික ප්රකාශයේ අගය සත්ය විට දී ඒ සමඟ ඇති විධාන හෝ ප්රකාශ නැවත නැවත ක්රියාත්මක වේ. මෙලෙස නැවත නැවත ක්රියා කිරීමේ දී, තාර්කික ප්රකාශයේ අගය අසත්ය වුවහොත්, පයිතන් ඒ සමඟ ඇති විධාන සහ ප්රකාශන ක්රීයත්මක වීම අත්හිටුවයි.
අපි මෙම උදාහරණයේ while (number>0): ලෙස while ලූපය හදුන්වා දී ඇත. මෙහි ඇති තාර්කික ප්රකාශය වන්නේ number>0 යන්නය. එනම් number විචල්යයේ අගය 0 ට වැඩි නම් ඒ සමඟ ඇති ප්රකාශ ක්රියාත්මක වේ. while ලූපය සමඟ ඇති ප්රකාශ අනුච්චෙදනය මඟින් හදුනාගත හැකිය. මෙම while ලූපය සමඟ සම්බන්ධව ඇත්තේ sum=sum+number සහ number=number-1 යන ප්රකාශ දෙකය. while ලූපය ආරම්භ කිරීමට ප්රථම sum විචල්යය් අගය 0 ලෙස හදුන්වා දී තිබේ. ආරම්භයේ දී number විචල්යයේ අගය 5 නම්, තාර්කික ප්රකාශය සත්ය වන බැවින්, while ලූපය තුල ඇති ප්රකාශ දෙක ක්රියා කරයි. මෙහි දී ප්රථමයෙන් sum+number ප්රකාශය ක්රියා කරණ අතර, sum විචල්යයේ අගය 0 සහ number විචල්යයේ අගය 5 බැවින් sum+number ප්රකාශනයේ අගය 5 වේ. මෙම අගය නැවත sum විචල්යයට ආදේශ වේ. පසුව ඇති ප්රකාශය number විචල්යයේ අගය 1 කින් අඩු කර එය නැවත number විචල්යයටම ආදේශ කරයි.
|
රෑපසටහන 5.5 - සංඛ්ය පෙලක එකතුව ලබා ගැනීම |
පසුච පයිතන් while ලූපය සමඟ ඇති තාර්කික ප්රකාශය ක්රියා කරවයි. number විචල්යයේ අගය 4 බැවින් තාර්කික ප්රකාශයේ අගය සත්ය වේ. එබැවින්, while ලූපය සමඟ ඇති විධාන නැවත ක්රියා කරයි. මෙහි දී sum විචල්යයේ අගය 5 ද number විචල්යයේ අගය 4 ද වන බැවින්, sum+number විචල්යයේ අගය 9 වේ. මෙම අගය sum විචල්යයට ආදේශ වි එහි අගය 9 ලෙස වෙනස් වේ. පසුව ඇති number-1 ප්රකාශනය මඟින් number විචල්යයේ අගය 3 බවට පත්වේ.
මෙහි දී ද තාර්කික ප්රකාශයේ අගය සත්ය බැවින්, while ලූපය නැවත ක්රියාමක වේ. මෙලෙස තුන්වන වර ක්රියාත්මක වීමේ දී, sum විචල්යයේ අගය 12 වන අතර number විචල්යයේ අගය 2 වේ. මෙහි දී ද තාර්කික ප්රකාශයේ අගය සත්ය බැවින් while ලූපය හතර වන වරට ද ක්රියා කරයි. හතරවන වර ක්රියාත්මක වීමේ දී, sum විචල්යයේ අගය 14 වන අතර number විචල්යයේ අගය 1 වේ. මෙහි දී ද තාර්කික ප්රකාශයේ අගය නැවතත් සත්ය බැවින් while ලූපය පස්වන වන වරට ද ක්රියා කරයි. පස්වන වර ක්රියාත්මක වීමේ දී, sum විචල්යයේ අගය 15 වන අතර number විචල්යයේ අගය 0 වේ. එවිට (number>0) යන තාර්කික ප්රකාශයේ අගය අසත්ය බැවින්, පයිතන් while ලූපය ක්රියාත්මක කිරීම අත්හිටුවයි.
while ලූපය ක්රියාත්මක වීම අවසන් වූ විට දී, ඉන් පසුව ඇති return sum විධානය sum විචල්යයේ අගය ප්රතිදාන දත්තය ලෙස ලබා දේ. මෙම උදාහරණයේ දී ශ්රිතය ක්රියාත්මක කරනු ලබන්නෙ x=sum(5) යන ප්රකාශයයි. මෙහි දී ශ්රිතයේ ප්රතිදාන දත්තය x විචල්යයට ආදේශ වේ. එනම් ශ්රිතයේ අගය වන 15 හෙවත් 1 සිට 5 දක්වා වන සංඛ්ය වල එකතුව x විචල්යයට ලැබේ. අවසානයට ඇති print x විධානය එම අගය පරිගණක තිරයේ සටහන් කරයි.
1 සිට 100 දක්වා වන සංඛ්ය වල එකතුව ලබා ගැනීමට ඔබ කුමක් කල යුතුද? ඒ සදහා x=sum(100) ලෙස මෙම ශ්රිතය ක්රියා කරයුතු බව ඔබට වැටහෙහු ඇත.
|
රෑපසටහන 5.6 - සංඛ්යවක ඉලක්කම් සියල්ලේ එකතුව ලබාගැනීම |
අපි දැන් දෙන ලද සංඛ්යවක ඇති ඉලක්කම් එකින් එක එකතු කිරීමට ශ්රීතයක් ලියමු. මෙම ශ්රිතයේ ආදාන දත්තය සංඛ්යවක් වන අතර ප්රතිදාන දත්තය එම සංඛ්යවේ ඇති ඉලක්කම් වල එකතුව වේ. මෙම ශ්රිතයට ආදාන දත්තය ලෙස 345 ලබා දුන් පසු, ප්රතිදාන දත්තය ලෙස ඉලක්කම් වල එකතුව (3+4+5) 12 ලබා දිය යුතුය. රෑපසටහන 5.6 දැක්වෙන පරිදි මෙම ශ්රිතය ද while ලූපය භාවිතා කරයි. මෙම while ලූපයේ තාර්කික ප්රකාශය number>0 වේ. ආරම්භයේ දී මෙහි අගය සත්ය වේ. ඉහත උදාහරණයේ දැක්වෙන පරිදි, එකතුව sum විචල්යයේ ගබඩා වන අතර, ආරම්භයේ දී එහි අගය 0 වේ.
ආරම්භයේ දී while සමග ඇති තාර්කික ප්රකාශයේ අගය සත්ය බැවින් ඒ සමග ඇති ප්රකාශන තුන ක්රියා කරයි. දෙන ලද සංඛ්යාවේ එකස්ථානය එම සංඛ්යව 10 බෙදූ විට ඉතිරි වන අගයයි. එම අගය ලබා ගැනීම සදහා mod=number%10 ප්රකාශය භාවිතා කර තිබේ. mod විචල්යයෙහි ගබඩාවන එකස්ථානයෙහි අගය sum=sum+mod ප්රකාශය මඟින් sum විචල්යයට එකතුවේ. ආරම්භයේ දී 345 ආදාන දත්තය ලෙස ලබා දුන්නේ නම්, mod විචල්යයේ අගය 5 වන අතර sum විචල්යයේ අගය ද 5 වේ. පසුච ඇති number=number/10 ප්රකාශය, දෙන ලද සංඛ්යාව 10 බෙදූ විට ලැබෙන පූර්ණ සංඛ්යව එම විචල්යයටම ආදේශ කරයි. මෙම ප්රකාශය ක්රියාකර පසු number විචල්යයේ අගය 34 වේ.
number විචල්යයේ අගය 34 විට දී ද, while සමග ඇති තාර්කික ප්රකාශයේ අගය සත්ය බැවින්, ඒ සමග ඇති ප්රකාශන තුන නැවත ක්රියා කරයි. මෙහි දී එකස්ථානයේ අගය වන 4, mod=number%10 ප්රකාශය මඟින් ලැබේ. එම අගය sum=sum+mod ප්රකාශය මඟින් sum විචල්යයට එකතුවේ. මෙම අවස්ථාවේ දී, sum විචල්යයේ අගය 5 ද mod විචල්යයේ අගය 4 ද වන බැවන්, sum=sum+mod ප්රකාශය ක්රියා කර පසු, sum විචල්යයයට අගය 9 ලැබේ. පසුච ඇති number=number/10 ප්රකාශය ක්රියාකර number විචල්යයේ අගය 3 බවට වේ.
number විචල්යයේ අගය 3 විට දී ද, while සමග ඇති තාර්කික ප්රකාශයේ අගය සත්ය බැවින්, ඒ සමග ඇති ප්රකාශන තුන නැවතත් ක්රියා කරයි. මෙහි දී එකස්ථානයේ අගය වන 3, mod=number%10 ප්රකාශය මඟින් ලැබේ. එම අගය sum=sum+mod ප්රකාශය මඟින් sum විචල්යයට එකතුවේ. මෙම අවස්ථාවේ දී, sum විචල්යයේ අගය 9 ද, mod විචල්යයේ අගය 3 ද වන බැවන්, sum=sum+mod ප්රකාශය ක්රියා කර පසු, sum විචල්යයයේ අගය ලෙස 12 ලැබේ. පසුච ඇති number=number/10 ප්රකාශය ක්රියාකර number විචල්යයේ අගය 0 බවට වේ.
මෙහි දී, while සමග ඇති තාර්කික ප්රකාශයේ අගය අසත්ය බැවින්, ඒ සමග ඇති ප්රකාශන තුන නැවතත් ක්රියාත්මක වීම නවතියි. එවිට ශ්රිතයේ අවසානයට ඇති return sum විධානය, sum විචල්යයේ අගය ප්රතිදාන දත්තය ලෙස ලබා දේ. එනම් 345 යන ආදාන දත්තය සදහා, 12 යන ප්රතිදාන දත්තය ලැබේ. මෙම ශ්රිතය භාවිතයෙන් ඕනෑම සංඛ්යවක ඇති සියලු ඉලක්කම් වල එකතුව ලබාගත හැක. 4583 යන සංඛ්යවේ ඇති ඉලක්කම් වල එකතුව ලබා ගත යුතු නම්, x=sum(4583) ලෙස මෙම ශ්රිතය ක්රියා කරවිය හැකිය. එවිට සියලු ඉලක්කම් වල එකතුව (20) x විචල්යයට ලැබේ.
දැන් අපි මෙම ශ්රිතය භාවිතයෙන් ඔබගේ වාසනා අංකය කුමක් දැයි සොයමු. ඔබගේ උපන්දිනය මැයි 25 නම්, ඔබේ වාසනා අංකය වනුයේ, අංක 3 ය. මෙය ලබා ගන්නේ, ඔබගේ උපන් දිනයේ ඇති ඉලක්කම් තනි ඉලක්කමක් ලැබෙන තෙක් නැවත නැවත එකතු කිරිමෙනි. ඔබගේ උපන්දිනය මැයි(5 වන මාසය) 25 නම්, 5+2+5=12 සහ 1+2=3 ලෙස වාසනා අංකය ගණනය කල හැක. දැන් අපි පයිතන් ක්රමලේඛයක් මඟින් වාසනා අංකය සොයමු. එම ක්රමලේඛය රෑපසටහන 5.7 මඟින් දැක්වේ.
|
රෑපසටහන 5.7 - වාසනා අංකය |
එම ක්රමලේඛයේ දී, ප්රථමයෙන් input විධානය මඟින් පයිතන් ඔබගේ උපන් දිනය විමසයි. ඔබගේ උපන් දිනය මැයි මස 25 වනදා නම්, අපි 525 ඇතුලත් කරමු. ඉන්පසුව ඇති luckyNumber=date ප්රකාශය ඔබගේ උපන් දිනය luckyNumber යන විචල්යයයට ආදේශ කරයි.
පසුව ඇති while පාලන ප්රකාශය හෙවත් while ලූපය, luckyNumber යන විචල්යයේ ඇති ඉලක්කම් වල එකතුව සදහා තනි ඉලක්කමක් ලැබෙන තෙක්, ඒවා නැවත නැවත එකතු කරයි. දෙන ලද සංඛ්යව 525 නම්, ආරම්භයේ දී luckyNumber>9 යන තාර්කික ප්රකාශයේ අගය සත්ය වේ. එහි දී, ඒ සමඟ ඇති luckyNumber=sum(luckyNumber) ප්රකාශය ක්රියා කරයි. මෙහි දී sum ශ්රිතය ක්රීයාත්මක වී, 525 යන සංඛ්යවේ ඇති සියලු ඉලක්කම් වල එකතුව වන අංක 12, luckyNumber යන විචල්යයට ආදේශ කරයි. මෙහි දී ද, while ලූපය සමඟ ඇති තාර්කික ප්රකාශයේ අගය සත්ය වේ. එබැවින් නැවත වරක් අංක 12 සමඟ sum ශ්රිතය ක්රියා කර, luckyNumber විචල්යයයට අංක 3 ආදේශ කරයි. මෙම අගය සදහා තාර්කික ප්රකාශයේ අගය අසත්ය බැවින්, while ලූපය නැවත ක්රීයාත්මක නොවේ. අවසානයට ඇති print විධානය ඔබගේ වසනා අංකය වන අංක 3 පරිගණක තිරයේ සටහන් කරයි.
මෙලෙස උපන් දිනය ලෙස, දෙසැම්මර් 25 එනම් 1225 ලබා දුන් විට, වාසනා අංකය ලෙස, අංක 1 ලැබේ. මෙම පරිගණක ක්රමලේඛය මඟින් ඔබට මිතුරන් ගේ වාසනා අංකය සොයා දී, ඔවුන් සතුටට පත්කල හැකිය.
Copyright © Kasun De Zoysa 2015