Friday, March 22, 2019

Java Programming sinhala tutorial - Methods - Part 13

Java Methods

        අද අපි Java method ගැන විස්තර ටිකක් දැනගමු. Java program එකක් තුල යම් කිසි ක්‍රියාවලියක් වැඩි වාර ගණනක් විවිධ ස්ථාන වලදී භාවිතා කල යුතු විටදී මෙම Java method අවශ්‍යවේ. Program එකක part එකක් ලෙස method එකක් සරලවම හදුනා ගන්න පුළුවන්. Java methods වර්ග 3 ක් පවතී.
  1. Default Method
  2. Parameterized Method
  3. Return typed Method

Default Method

      Program එකක යම් කිසි ක්‍රියාවලියක් වැඩි වාර ගණනක් අවශ්‍ය වූ විට method calling statement ලිවිම මගින් එම ක්‍රියාවලිය (method එක) execute කල හැක.මෙම method type එකේ විශේෂත්වය වන්නේ මෙම method එක call කරන විට කිසිම value එකක් method එකට pass නොකිරීමය.


Parameterized Method

      Default method වගේම ක්‍රියා කරන parameterized method  හි වෙනස්කම වන්නේ එම method එක මගින් method එක තුලට inputs යැවීමට හැකි වීමයි. එනම් method calling statement එකේදී method එකෙහි parameters සදහා data යැවීම සිදු කරයි. method calling statement එකේදී යවනු ලබන data, argument ලෙස හදුන්වයි.


Return Typed Method

         මෙම method එකේ විශේෂත්වය වන්නේ මෙම method එක call කල විට නැවත value එකක් return වීමයි. ඉහත උදාහරණ 2 හිම return type එක void වේ. එනම් කිසිම value එකක් නැවත return නොකරයි. Return කරන value එකේ data type එක අනුව return type එක නිර්මාණය කල යුතුවේ.


        යම් class එකක තිබෙන method එකක් වෙනත් class එකක සිට වුවද call කල හැක. ඒ සදහා method calling statement එක පහත පරිදි ලිවිය යුතු වේ.


තවත් Java ගැන ඉගෙන ගන්න ඊලග ලිපියෙන් හමුවෙමු.

- චමෝදි -

Thursday, March 14, 2019

Blender Sinhala Tutorial - How to apply table cloth for a table

ඉතින් ඔයාලට මතක ඇතිනේ මං පොස්ට් එකකින් ගේනවා table එකක් හදන හැටි. අද අපි බලමු මේ table එකට table cloth එකක් දාන හැටි.



මේ තියෙන්නේ මන් කලින් හදාගත්තු table එක.


ඉස්සෙල්ලම කරන්න ඕනි මේ table එකේ top view  එකට යන එක.

ඊට පස්සේ මේ වම් පැත්තේ තියෙන tab එකින් create කියන tab  එකට තෝරලා  එකේ තියෙන plane  කියන  button  එක  click  කරන්න. ඊට පස්සේ මේ විදියට table එක වැහෙන්න මේ  plane ඇඳගන්න. මේකෙදි මතක තියාගන්න ඕනේ කාරණයක් තමයි මේ  plane  එක table එකට වඩා ටිකක් විශාල වෙන්න ඕනේ කියන එක.


ඊට පස්සේ Edit mode තෝරලා වම් පැත්තේ තියෙන tools ටැබ් එක click කරන්න. එකේදී ඔයාට හොයාගන්න පුළුවන් subdivide කියලා  button එකක්. එක click කරහම ඔයාට බලාගන්න පුළුවන්  plane එකේ surface එක කොටු කොටු වලට බෙදෙනවා. පස් හය පාරක් surface එක subdivide කරන්න. මේකේ තියෙන කොටු ප්‍රමාණය වැඩි වෙන තරමට තමයි  table cloth එකට smooth බවක් ලැබෙන්නේ. මේ තියෙන්නේ එහෙම  subdivide කරාට පස්සේ surface  එක පේන හැටි.


දැන් ආයෙත්  object mode එකට යන්න. ඊට පස්සේ දකුණු පැත්තේ තියෙන මෙනු එකින්  add modifier තෝරලා එකේ තියෙන cloth  කියන කැටගරි එක තෝරන්න. මතක් තියාගන්න අපි මේ වෙනස් කම් කරන්නේ plane එකට
එහෙම නැත්නම්  table cloth එකට.

දැන් table එක select කරන්න. ඊට පස්සේ අර විදියටම table එකට collision කියන modifier එක දෙන්න.

ඊටපස්සේ play කරලා බැලුවොත් ඔයාට බලන්න පුළුවන් table cloth එක උඩ ඉදන් table එක උඩට වැටෙන animation එකක්.




ඉතින් මං මේ විදියට තමයි මගේ table එකේ table cloth එක තියෙන්න ඕනේ කියල හිතුවේ. ඒ කියන්නේ මේ අවස්ථාව එද්දී මම animation එක play වෙන එක නතර කරලා මේ වගේ still එකක් ගත්තා.

හැබැයි ඔයාලට හොදට බැලුවොත් පෙනේවි මේ table cloth එකේ දාර smooth නැහැ කියලා . ඒ නිසා මම මේ වම් පැත්තේ තියෙන මෙනු එකින් tools tab  එක තෝරලා එකේ shading වල තියෙන smooth  button  එක  click  කරා. මේ තියෙන්නේ දාර smooth කරපු table cloth එක.


ඔයාලට මතක ඇතිනේ මන් කලින් පොස්ට් එකේ texture එකක් දාන්න කියල දුන්නා. ඉතින් මන් ඒ විදියට table එකට සහ table cloth එකට මේ වගේ textures දෙකක් add කර ගත්තා. මේ තියෙන්නේ render කර ගත්තට පස්සේ final output එක.



ඉතින් මේ වගේ තවත් පොස්ට් එකකින් නැවත හමුවෙමු.

-හසිනි-

Wednesday, February 20, 2019

Java Programming sinhala tutorial - Variable scope and Lifetime - Part 12

Variable scope and Lifetime

      අද අපි ඉගෙනගන්න යන්නේ variable scope හා  variable lifetime කියන්නේ මොකක්ද කියලා. සාමාන්‍යයෙන් variable scope ලෙස හදුන්වන්නේ variable එකක් අපිට access කරන්න පුළුවන් කොහේදිද යන්නයි. ඒ අනුව සාමාන්‍යයෙන් variable scope එක වන්නේ variable එක නිර්මාණය කල block එක වේ. Variable lifetime එක යනු variable එකක් program එකක් තුල කොපමණ කාලයක් run කල හැකිද  යන්නයි. එයද variable එක නිර්මාණය කල block එක මත රදා පවතී. Variable එකක්, එය පවතින block එක execute වී අවසන් වූ පසු RAM එකේ මතකයෙන් ඉවත් වේ. ඒ අනුව එකම නමින් variable දෙකක් block එකක් තුල හා ඉන් පිටත නිර්මාණය කල හැක.


Variable scope and Lifetime of loop


       Java loop ගැන අපි කලින් ලිපිය මගින් ඉගෙන ගත්තා. ඒ අනුව loop එකක control variable එකෙහි variable lifetime එක එම loop එකේ condition එක false වන තෙක් body එක run වන සම්පුර්ණ කාලය වේ. මෙහිදී body එක 1 වරක් execute වී condition එක නැවත true වීමෙන් 2 වන වර body එක execute වුවත් control variable එකෙහි පෙර අගය RAM එකේ මතකයේ පවතී. 2 වන වර body එක run වීමේදී control variable එක නැවත වරක්  නිර්මාණය වීමක් ( Initialization ) සිදු නොවේ. එම නිසා loop එකක control variable එකෙහි variable lifetime එක එම loop එකේ condition එක false වන තෙක් body එක run වන සම්පුර්ණ කාලය වේ.


        loop එකක control variable එකෙහි variable lifetime එක එම loop එකේ condition එක false වන තෙක් body එක run වන සම්පුර්ණ කාලය වන නිසා i හි අගය loop එක ආරම්භයේ සිට අවසානය දක්වා 1 වරක් නිර්මාණය වී RAM එකේ මතකයේ පවති. a variable එක loop එක run වන සෑම වාරයකදීම නැවත නිර්මාණය වේ.

අපි ඊලග ලිපියෙන් Java Language ගැන තවත් විස්තර ඉගෙන ගනිමු.

- චමෝදි -

Thursday, February 14, 2019

MongoDB sinhala tutorial part-3





කලින් post එකේදි අපි කතා කලේ  MongoDB database එකක තියන collection එකකට කොහොමද data insert කරන්නෙ  සහ view  කරන්නෙ කියලා. Data view කරද්දි විවිද queries පාවිච්චි කරලා විවිද අාකාරයට data view  කරන්න  පුලුවන්.දැන් බලමු ඒ විදි මොනවද කියලා.කලින් post  එකේ කිව්වෙ db.collectionName.find() query එක  ගැන විතරයි.

ඒ ඇරෙන්න  තව ආකාර තියනවා.
ඊට කලින් කියන්න ඕනි MongoDB   database එකකට  අපි data  document එකක්  insert කරද්දි  document එකට unique  වෙච්ච id  එකක් ලැබෙනවා.ඒක  "object ID "එක විදියට හදුන්නනවා. id එක add වුනාම document තියෙන්නෙ කොහොමද කියලා මේ example එක බැලුවම තේරෙයි.

හරි.කලින්post එකේදි කිව්වා වගේ db.collectionName.find()  execute කලාම අදාල collection එකේ තියන data ඔක්කොම  ටික view  කරන්න පුලුවන්.

ඒ වගේම pretty() command එක පාවිච්චි කරලා database එකේ documents ටික පෙන්නන විදියටම (structured විදියට)  view කරන්න පුලුවන්.


ඒ වගේම අපිට  collection එකේ තියන පලවෙනි document එක view කරන්න ඕනි නම් db.collectionName.findOne() කියන  command එක පාවිච්චි කරන්න  පුලුවන්.


මේ db.collectionName.findOne() command එක execute කරද්දි data view  වෙන්නෙ pretty() format  එකට අදාලවමයි.
දැන් අපි බලමු  condition එකකට අදාලව document වල data,  view කරන්නෙ කොහොමද කියලා.
උදාහරණයක් විදියට අපි බලමු customer collection  එකේ Last Name  එක "Dasanayaka" එක වෙන  customersලා කව්ද  කියලා


ඉලක්කම් තියන  data view කරද්දි  condition පාවිච්චි කරන්නෙ කොහොමද කියලා බලමු.
ඒකට  data  ටිකක් insert කරගමු.


දැන් බලමු වයස 18  වෙන customer කෙනෙක් ඉන්නවනම් එයගෙ  data view කරන්නෙ කොහොමද කියලා. 

ඊළගට  බලමු වයස 21  වෙන customer කෙනෙක් ඉන්නවනම් එයගෙ  data view කරන්නෙ කොහොමද කියලා.  


අපිට ඕනිනම්  වයස  අවුරුදු 20 ට වැඩි අයගේ data view කරන්න "$gt" කියන  keyword එක පාවිච්චි කරන්න ඕනි.



ඒ වගේම  වයස  අවුරුදු 20 ට අඩු අයගේ  data view කරන්න "$lt" කියන  keyword එක පාවිච්චි කරන්නත් පුලුවන්.



අපිටඕනිනම්  වයස   අවුරුදු  21 ට වැඩි හෝ සමාන  අයගේ data view කරන්න "$gte" කියන  keyword එක පාවිච්චි කරන්න පුලුවන්.


ඒ වගේම වයස අවුරුදු 21 ට අඩු  හෝ සමාන  අයගේ data view කරන්න "$lte" කියන  keyword එක පාවිච්චි කරන්න පුලුවන්.


ඒ වගේම වයස අවුරුදු  21  ට සමාන නොවන  අයගේ data view කරන්න "$ne" කියන  keyword එක පාවිච්චි කරන්න පුලුවන්.


මෙතනදි වයස කියන attribute  එක document එකේ තිබුනොත්  වයස අවුරුදු 21 ට අසමාන අයගේ data  පෙන්නනවා.  වයස කියන attribute එක නැති  documents තිබුනොත් ඒවගේ data ත් පෙන්නනවා. ඒ MongoDB කියන්නේ  non relational database වර්ගයක් හින්දා.

හරි එහෙනම්.. අදට ඇති. ඊලග post  එකෙන් හම්බෙමු..
--පියුමි--





Tuesday, February 12, 2019

Java Programming sinhala tutorial - Loops - Part 11

Java Flow Control " Loops "

     Java program හි, instruction හෝ function එකක් හෝ කිහිපයක්, එක ළග, කිහිප වරක්, යම් condition එකක් true වන තෙක් අවශ්‍ය නම් loop පාවිච්චි කල හැක. Java වල ප්‍රධාන ලෙස loop වර්ග 3 ක් පවතී.
  1. For loop 
  2. While loop
  3. Do while loop

For Loop

     කලින් කිව්වා වගේම for loop පාවිච්චි කරන්නේ instruction හෝ function එකක් හෝ කිහිපයක්, එක ළග, කිහිප වරක්, යම් condition එකක් true වන තෙක් අවශ්‍ය විට. For loop එකේ විශේෂත්වය වන්නේ loop එක execute විය යුතු වාර ගණන දැනගෙන ඉන්න ඕනේ.

Simple For Loop

     Simple for loop එකේ කොටස් 4 කට වෙන් කර හදුනා ගන්න පුළුවන්. 
  1. Initialization - loop එක execute වීමට පටන් ගන්නා විට control variable එක initialize වේ. 
  2. Condition - loop එක execute වන සැම වාරයකදීම condition එක evaluate කරන අතර එය false වන තෙක් loop එක execute වේ. 
  3. Statement - loop එක execute වන සැම වාරයකදීම සිදු විය යුතු කරුණු මෙහි අඩංගු වේ.
  4. Increment/ Decrement - loop එක execute වන සැම වාරයකදීම control variable එක වැඩි වීම හෝ අඩු වීම සිදු කරයි.

Syntax


for (initialization; condition; increment/decrement){
       // code to be executed
}


For each Loop / enhance For Loop


      For each loop එක මගින් array එකක එක් එක් element එක return කරයි. මේ ගැන වැඩි විස්තර මම ඉදිරි ලිපි වලදී කියන්නම්.

Syntax


for (Type var : array){
       // code to be executed
}


While Loop


     For loop වගේම while loop පාවිච්චි කරන්නේ instruction හෝ function එකක් හෝ කිහිපයක්, එක ළග, කිහිප වරක්, යම් condition එකක් true වන තෙක් අවශ්‍ය විට. While loop එකේ විශේෂත්වය වන්නේ loop එක execute විය යුතු වාර ගණන දැනගෙන හිදිම අවශ්‍ය නොවීමයි. Condition එක false වන තෙක් loop එක execute වේ.

Syntax


while ( condition ){
       // code to be executed
}


Do While Loop


     For loop වගේම do while loop පාවිච්චි කරන්නේ instruction හෝ function එකක් හෝ කිහිපයක්, එක ළග, කිහිප වරක්, යම් condition එකක් true වන තෙක් අවශ්‍ය විට. Do while loop එකේ විශේෂත්වය වන්නේ loop එක execute විය යුතු වාර ගණන දැනගෙන හිදිම අවශ්‍ය නොවීම හා එක් වරක් අනිවාර්යෙන්ම loop එකේ body එක execute වීමයි. Condition එක false වන තෙක් loop එක execute වේ.

Syntax


do{
       // code to be executed
}while ( condition )


අපි ඊලග ලිපියෙන් Java ගැන තවත් විස්තර ඉගෙන ගනිමු.

- චමෝදි -

Saturday, February 9, 2019

Java Programming sinhala tutorial - Operators - Part 10

Operators in Java

  අද අපි බලමු Java වල පාවිච්චි කරන්න පුළුවන් operators මොනවාද කියලා. මේ operators අපිට floating-point වගේම integer numbers සදහා භාවිතා කරන්න පුළුවන්.

Arithmetic operators


    ප්‍රධාන වශයෙන් අපි arithmetic operators වර්ග 5 ක් හදුනා ගන්න පුළුවන්. ඒවා එකතු කිරීම (+), අඩු කිරීම (-), ගුණ කිරීම (*), බෙදීම (/) හා Modulus (%) . එකතු කිරීම (+), අඩු කිරීම (-), ගුණ කිරීම (*) හා බෙදීම (/) අපි සාමාන්යෙන් එදිනෙදා කරන එකතු කිරීම, අඩු කිරීම, ගුණ කිරීම හා බෙදීම ට සමාන වේ. Modulus operator එක මගින් පළමු සංඛ්‍යාව දෙවන සංඛ්‍යාවෙන් බෙදා ශේෂය (ඉතිරිය) ලබා දෙයි.


ඒවගේම අපිට arithmetic operators String 2ක් concatenate කිරීමටද භාවිතා කල හැක.


    Incrementer (++) හා decrementer (--) operators මගින් පිළිවලින් operand එකෙහි අගය 1 ක් එකතු කිරීම හා අඩු කිරීම කරයි. මෙය postfix හා prefix ලෙස ආකාර 2 කින් සිදු කල හැක.


     n++ (postfix incrementer) මගින් n හි අගය 1කින් වැඩි කළත් එම වෙලාවේදී n ට තිබු පෙර අගය භාවිතා කරයි. ඉන් පසුව n හි අගය 1කින් වැඩි කළ අගය වේ. ++n (prefix incrementer) මගින් n හි අගය 1කින් වැඩි කරන අතර එම අගයම භාවිතා කරයි. 
     n-- (postfix decrementer) මගින් n හි අගය 1කින් අඩු කළත් එම වෙලාවේදී n ට තිබු පෙර අගය භාවිතා කරයි. ඉන් පසුව n හි අගය 1කින් අඩු කළ අගය වේ. --n (prefix decrementer) මගින් n හි අගය 1කින් අඩු කරන අතර එම අගයම භාවිතා කරයි. 

Relational Operators


     Relational operators මගින් සංඛ්‍යා 2 ක් හෝ variable 2 ක් අතර සම්බන්ධතාවය පෙන්නුම් කරයි. මෙයින් ලැබෙන ප්‍රතිඵලය සැම විටම true හෝ false වේ. 


Boolean Logical Operators


    Command එකක යම් statement 2 ක් අතර සිදු විය යුතු logical operation දැක්වීමට යොදන සංකේත boolean logical operators නම් වේ.

  • &  - Boolean AND - statement 2 ම true වේ නම් true, නැත්නම් false 
  • |   - Boolean OR- statement 2 න් එකක් හෝ  true වේ නම් true, නැත්නම් false 
  • ^  - Boolean XOR- statement 2 න් එකක් පමණක් true වේ නම් true, නැත්නම් false 
  • !  - Boolean NOT- statement එකේ logical state එකෙහි විරුද්ධ අගය result එක වේ 
  • &&  - Short circute AND - statement 2 ම true වේ නම් true, නැත්නම් false. නමුත් මෙහිදී පළමු statement එක false නම් දෙවන statement එක execute නොකරයි.
  • ||  - Short circute OR- statement 2 න් එකක් හෝ  true වේ නම් true, නැත්නම් false. නමුත් මෙහිදී පළමු statement එක true නම් දෙවන statement එක execute නොකරයි.


Ternary Operator (?:)


     if - else මගින් කරන ක්‍රියාවලිය එක් පේලියකින් සිදු කිරීම ternary operator මගින් සිදු කරයි. 



Assignment Operator


      Variable එකකට යම් arithmetic operation එකක් සිදු කර එම variable එකටම assign කිරීම කෙටියෙන් දැක්වීම මෙමගින් සිදු කරයි.



Operation Order


     යම් command line එකක operators එකකට වඩා ඇති විට ඒවා ක්‍රියා කරන අනුපිළිවෙල operation order නම් වේ. එය පහත පරිදි වේ.

  1. () , []
  2. ++ , -- , !
  3. * , / , %
  4. + , -
  5. > , < , <= , >= , == , !=
  6. & , | , && , || , ^
  7. ?:
  8. =op
     ඉහත දක්වා ඇති operation order එකෙහි එකම මට්ටමේ ඇති operators, command line එකක ඇති විට ඒවා වමේ සිට දකුණට ක්‍රියා කරයි.

- චමෝදි -

Sunday, February 3, 2019

Java Programming sinhala tutorial - "if" , "if/ else" , "if ladder" - Part 9

Java Flow Control "if" , "if/ else" , "if ladder (if/ else if)"

    Code කිරීමේදී අපිට යම් condition එකකට අනුව run විය යුතු code එක වෙනස් කල යුතු අවස්ථා බොහෝ විට ලැබෙනවා. ඒ වගේ අවස්ථා වලදී if , if - else , if ladder පාවිච්චි කරන්න පුළුවන්.

if

    යම් condition එකක් true වේ නම් කිසියම් code section එකක් run වීමට run time ඉඩ දීම if මගින් සිදු කරයි. ඒ වගේම එම condition එක false වේ නම් එම code section එක run නොවේ.




Condition එක true වූ විට සිදු විය යුතු statement ගණන 1ක් නම් curly bracket තුල statement එක ලිවිම අත්‍යවශ්‍ය නොවේ.



if/ else

 යම් condition එකක් true වේ නම් කිසියම් code section එකක් run වීමට හා එම condition එක false වේ නම් වෙනත් code section එක run වීමට if else භාවිතා කරයි.


if ladder

 යම් condition එකක් true වේ නම් කිසියම් code section එකක් run වීමට හා එම condition එක false වේ නම් වෙනත් condition එකක් check කිරීමට if ladder එක භාවිතා කරයි. මෙලෙස if ladder එකක් භාවිතා කිරීමේදී, එහි ඇති එක් section එකක් පමණක් execute වේ.


Java ගැන තවත් නොදන්න කරුණු දැනගන්න අපි ඊලග ලිපියෙන් හමුවෙමු.

- චමෝදි -

Friday, January 25, 2019

Java Programming sinhala tutorial - Conversion & Casting - Part 8

Conversion & Casting ( Primitive type )

         අද අපි conversion වගේම casting කියන්නේ මොකක්ද කියලා බලමු. Java වල primitive data types 8 ක් තියෙනවා කියලත් ඒවාට වෙනත් data range තියෙනවා කියලත් ඔයාලා කලින් ලිපි වලින් ( 4 වෙනි ලිපිය ) දැනගන්න ඇති. එක data type එකක variable එකක value එකක් වෙනත් data type එකක variable එකක store කිරීමේදී ඒවායේ data range එක බලපායි. 
        කුඩා data range එකක් පවතින variable එකක value එක වෙනත් විශාල data range එකක් පවතින variable එකක automatically store කිරීමට compiler ඉඩ ලබා දෙයි. මෙම ක්‍රියාවලිය conversion ලෙස හදුන්වනවා.
        විශාල data range එකක් පවතින variable එකක value එක වෙනත් කුඩා data range එකක් පවතින variable එකක store කිරීමට උත්සහ කිරීමේදී error ලැබේ. එම නිසා ඒවා casting කල යුතු වේ.




පහත ගැලීම් සටහනේන්  data type හි කුඩා data range එකේ සිට විශාල data range එක දක්වා පෙන්නුම් කරයි.


    ඉහත ගැලීම් සටහනේ ඊ හිස අතට auto conversion වේ.
    char data type එකේ data range එක 0 සිට 65535 දක්වා වන නිසා char variable එකක value එක byte, short variable වල store කල නොහැක. byte, short variable වල value char variable එකක store කිරීමටද නොහැක. char data type එකේ data range එක int data type එකේ data range එක අතර පවතින නිසා char variable එකක value එක int variable එකක store කල හැක. 

casting කිරීමේදී විශාල data range එකක් පවතින variable එකේ අගින් කුඩා data range එකක් පවතින variable එකේ data range එකට අදාල bit ප්‍රමාණය පමණක් සැලකිල්ලට ගැනීම සිදු වේ. 

Ex : - ( Casting )



- චමෝදි -