Pages

Saturday, October 18, 2014

Java Part 7 ( star patterns part 1 )


How to program Star PATTERNS in JAVA ( part 1 )

අපි අන්තිමටම කතා කලේ java වල cast කරන්නෙ කොහොමද කියලානේ.. අද අපි බලමු කොහොමද programming use කරලා එක එක රටා print කරන්න program එකක් ලියන්නෙ කියලා.. ඉතින් හැමදාම කියනවා වගේ අපි පුරුදු වෙන්න ඕන program එකක් ගහන්න හිතන්නෙ කොහොමද කියලානේ.. ඒක නිසා අපි හෙමිහිට හිතන විදිය පුරුදු වෙමු.. එතකොට ඕනම කෙනෙකුට ඕනම රටාවක් තමන්ම හිතලා print කරගන්න program එකක් ලියා ගන්න පුළුවන් වෙයි.. එහෙනම් අපි වැඩේ පටන් ගමුකො..

ඉතින් තරු රටා ගහන්න කලින් අපිට ඕන වෙන programming theory ටිකක් නම් තියෙනවා.. අපි මුලින්ම ඒ ටික බලලා ඉමු.. කලින් ඒ ටික අපි කතා කරපු නිසා එතනට යන link ටික විතරක් දුන්නම ඇති නේද? නැත්නම් අපිට අළුත් දේවල් වලට යන්න වෙලාවත් මදි වෙනවානේ..

  • අපිට මුලින්ම operators ඕන වෙනවා.. කවුරු හරි operators ගැන දන්නෙ නැතිනම් මෙතනින් ගිහින් ඒ ටික බලලා එන්න..

  • if-else ඕන වෙනවා.. කවුරු හරි if-else ගැන දන්නෙ නැතිනම් මෙතනින් ගිහින් ඒ ටික බලලා එන්න..

  • for loop ඕන වෙනවා සැරටම.. for loop වල හිතන විදිය හොඳටම පුළුවන් වෙන්න ඕන.. ඒක නිසා ඒක නම් දන්න අයත් පොඩ්ඩක් බලලා ආවට කමක් නෑ.. මෙතනින් ගිහින් ඒක බලලා එන්න..

programming කියන්නෙ තනි කරම හිතන විදිය මත පදනම් වෙච්ච දෙයක්නේ.. ඒ කියන්නෙ හිතන විදියයි පුරුදුවෙන්න ඕන.. ඉතින් ඔය හිතන විදිය පුරුදු වෙන්න නම් කොච්චර කරත් තනියම කරලා try කරන්නම ඕන.. ඒක නිසා තමයි මම මේ තරු රටා print කරන විදිය කොටස් දෙකකට කරන්න හිතුවෙ.. 

ඕනම තරු රටාවක් ගහන්න හිතන විදිය පුරුදු වෙන්න නම් අමාරු එකකින් පටන් ගන්නෙ නැතුව ලේසි එකක ඉඳන් අමාරු එ්වට යන්න ඕන.. මම ඒක නිසා එහෙම සරලම එකක ඉඳන් ටික ටික අමාරු වෙනකම් රටා ටිකක් දෙන්නම් මුලින්ම කට්ටිය try කරලා ඉන්න.. නැත්නම් එක පාරටම කියලා දුන්නොත් මම කරන්නෙ ලොකු වැරැද්දක් මොකද හිතන විදිය බැරි programmer කෙනෙක්ට මුකුත් කරන්න බෑ.. ඔන්න එහෙනම් පහළ තියෙන රටා ටික එකින් එක තනියම කරන්න try එකක් දෙන්න.. ඕනම වෙලාවක හිර වුනොත් උදව් කරන්නම් ඒක නිසා දෙපාරක් හිතන්නෙ නැතුව අහන්න හොඳද.. ( hint එකක් දෙන්නම් තරු රටා වලදි for loop එක තමයි mainly use වෙන්නෙ.. print statement එක උපරිම 3 පාරකට වැඩිය use කරන්න බෑ හොඳද.. )



මෙතන මුලින්ම තනි තරුවක් විතරක් තියෙන නිසා මේක මොකක්ද කියලා අහන්න එපා.. හැමදේකම තේරුමක් තියෙනවා.. ඒකයි මම කලින්ම කිව්වෙ හිතන විදිය පුරුදු වෙන්න නම් මේ පිළිවෙලට පුරුදු වෙන්න කියලා.. කට්ටියම තනියම try එකක් දෙන්න තමන්ගෙ code අනිත් අයත් එක්ක බෙදාගන්න අපේ face book page එක හරි use කරලා. එහෙනම් ඊළඟ කොටසින් අපි මේ pattern ටික ගහන්න හිතන විදිය පුරුදු වෙන්නෙ කොහොමද කියලා බලමු..


මතුසම්බන්ධයි..

Tuesday, October 7, 2014

Java Part 6 ( casting )

Java Casting

ඔන්න එහෙනම් අද අපි java casting ගැන ඉගෙන ගන්න යන්නෙ.. ඊට කලින් කවුරු හරි java වල variable ගැනයි data type ගැනයි බැලුවෙ නැත්නම් මෙතනින් ගිහිල්ලා ඒ ටික බලලම එන්නකො..

කෙලින්ම වැඩේට බහිමු. casting කියන්නෙ මොකක්ද කියලා කතා කරන්න කලින් අපිට casting ඕන වෙන්නෙ මොකටද කියලා බලලා හිටියොත් හොඳයි කියලා මට හිතෙනවා.. හැබැයි casting අවශ්‍ය වෙන්නෙ මොකටද කියලා දැන ගන්න කලින් java වල තියෙන data type වල capacity එක පොඩ්ඩක් බලා ගත්තොත් කට පාඩම් කරන්නෙ නැතුව casting ගැන හොඳටම තේරුම් ගන්න පුළුවන් වෙයි කියලා හිතෙන නිසා මම java වල තියෙන data types වල capacity එක මුලින් කියලා ඉන්නම්..

දැන් එහෙනම් කට්ටිය පොඩ්ඩක් මතක් කරන්න බලන්න java වල තියෙන data type 8 මොනවද කියලා......

Variable Capacity


data type 8 තමයි,

  • byte
  • short
  • int
  • long
  • float
  • double
  • char
  • boolean
හරි ගොඩක් අය දන්නවනේ byte වල capacity එක, ඒ කියන්නෙ bit ගාන 8යි කියලා.. දැන් එතන ඉඳන් බලමු. integer data type 4 දි bit ගාන 8න් පටන් අරගෙන 2න් ගුණ වෙවී තමයි යන්නෙ..

ඒ කියන්නෙ,

  • byte          8 bit
  • short        16 bit
  • int            32 bit
  • long         64 bit
ඊළඟට තියෙන floating point data type 2 දි integer data type 4න් අන්තිම දෙකේ තියෙන bit ගාන තමයි තියෙන්නෙ..

ඒ කියන්නෙ,

  • float         32 bit
  • double      64 bit
char වල තියෙන්නෙ short වලට සමාන capacity එකක්..

ඒ කියන්නෙ,

  • char       16 bit
boolean වල තියාගන්නෙ logic එකක් (true or false) නිසා true කියන එක 1 විදියට ගත්තොත් false එක 0 විදියට ගන්න පුළුවන්. එහෙම වුනොත් 1 හරි 0 හරි තියාගන්න ඕන වෙන්නෙ එක bit එකක් නිසා boolean data type එකේ capacity එක bit 1යි.

  • boolean  1 bit

variable වල bit size එකත් කියපු නිසා මට හිතෙනවා දැන් මෙහෙම එකම type එකේ data දාන්න data type ගොඩක් තියෙන්නෙ ඇයි කියලත් කියලම ඉන්න.. 

ඇත්තටම අපි මොකක් හරි program එකක්, software එකක් හදන්නෙ අපේ computer එකේ run වෙන්න විතරක් නෙවෙයිනේ.. ඒක නිසා ඒක use කරන user ගෙ machine එකෙත් වැඩ කරන්න ඕන. හැබැයි අපි දන්නෙ නෑ user ගෙ machine එකේ ram එක ලොකු අගයක්ද පොඩි එකක්ද කියලා. ඒක නිසා අපි කෝකටත් කියලා හදන program එකක ram usage එක අඩු වෙන්න හදන්න ඕන..

variable එකක් කියන්නෙ ram එකෙන් වෙන් කරන ඉඩ ප්‍රමාණයක් නිසා අපි ram එක ඉතුරු කර ගන්න නම් variable හදද්දි අවශ්‍ය ප්‍රමාණයටම විතරක් ඉඩ වෙන් කරගන්න ඕන..

උදාහරණයක් විදියට අපි 5 කියන value එක ram එකේ store කරනවා කියලා හිතමුකො.. machine එකේ data save වෙන්නෙ binary විදියට නිසා අපි මුලින්ම මේක 2 පාදයට හදා ගනිමු..

  • 5    =    101 දෙක
මේකට ගිහින් තියෙන්නෙ bit 3යි නේ.. ඉතින් අපි මේ value එක int එකකට දාන්න ගියොත් නිකරුනේ අපි bit 32ක් ram එකේ වෙන් කරලා ඒකෙන් 29 ක්ම use කරන්නෙත් නැතුව තියාගෙන ඉන්නවා. ඇත්තටම මේක අපිට bit 8 කට දැම්මනම් අපරාදෙ වුනත් වෙන්නෙ bit 5ක් නිසා int එකකට නොදා byte එකකට දානකොට ram එකේ ඉඩ ඉතුරු වෙනවා..

අන්න එහෙම අවශ්‍ය විදියට manage කරගෙන data දාන්න තමයි එකම type එකෙන් වුනත් වෙනස් bit size වලින් data type කිහිපයක්ම java වලදි අපිට දීලා තියෙන්නෙ..

Casting

මෙහෙම හිතන්නකෝ.. int variable එකක 5 කියන value එක තියෙනවා.. එතකොට ram එකේ ඉඩ වැඩිපුර යන නිසා අපිට ඒක byte variable එකකට දාන්න ඕන නිසා අපි මෙහෙම ලිවුවොත් හරිද?


අපිට කරන්න ඕන දේ නම් මෙතනදි කරලා තියෙන්නෙ.. හැබැයි compiler මෙහෙම කරන්න ගියාම error එකක් දෙනවා. ඒකට හේතුව තමයි අපි දන්නවා වුනාට 5 කියන value එකට යන්නෙ bit 3ක් විතරක් වුනාට දැන් ඇත්තටම 5 කියන value එක තියෙන්නෙ int variable එකක නිසා ඒක තියෙන්නෙ bit 32 ක පැකට් එකක් විදියට ඉතින් එහෙම bit 32ක් bit 8කට දාන්න බැරි නිසා තමයි මෙහෙම කරන්න ගියාම compiler අපිට error එකක් දෙන්නෙත්..

දැන් අපි කොහොමහරි 5 කියන value එකට අදාළ bit ටික විතරක් වෙන් කරලා ගත්තොත් අපිට byte variable එකකට ඒක දාන්න පුළුවන් වෙනවා නේද?

අන්න එහෙම ලොකු bit ටිකකින් data එකට අදාළ පොඩි bit ප්‍රමාණයක් වෙන් කරගන්න ක්‍රියාවට තමයි casting කියලා කියන්නෙ.. ( සරලව කිව්වොත් එක data type එකක් තව data type එකකට හරවන ක්‍රයාවලිය casting කියලා හඳුන්වන්න පුළුවන්.. )

දැන් අපි බලමු එහෙනම් cast කරලා කොහොමද මේ int variable එකේ තියෙන value එක byte variable එකකට දාගන්නෙ කියලා..

How?

මෙහෙම හිතමුකො... 
අපි byte variable එකක තියෙන value එකක් int variable එකකට දාන්න ගියොත් ප්‍රශ්නයක් වෙනවද? ඇත්තටම bit 8ක packet එකක් ගේමක් නැතුව bit 32 කට දාන්න පුළුවන් නිසා ප්‍රශ්නයක් වෙන්නෙ නෑ.. හැබැයි අනිත් පැත්ත කරන්න ගියාම තමයි අපිට කලින් කතා කරපු ප්‍රශ්නෙ එන්නෙ..

ඒක නිසා ලොකු එකක් පොඩි එකකට දාන්න යනකොට අපිට compiler ට විශේෂයෙන්ම කියන්න වෙනවා එයාගෙන් අදාළ ටික විතරක් කඩලා ගන්න කියලා. එහෙම කියන්න නම් අපිට කරන්න තියෙන්නෙ වරහන් ඇතුලෙ cast කරන්න ඕන type එක ලියන එක විතරයි..

තේරුනේ නෑ නේද? උදාහරණයක් අරගෙනම බලමුකො..


අපිට integer variable එකේ තියෙන 5 කියන value එකට අදාළ data එක තියෙන bit 8ක් කඩලා අරගෙන byte variable එකකට දාන්න ඕන නිසා අපි byte variable එකට int variable එක assign කරන්න කලින් වරහන් ඇතුලෙ byte කියලා දාන්න යන variable එකේ data type එක දීලා compiler ට කියනවා මේ x කියන int variable එකෙන් byte වලට අදාළ bit 8 කඩලා b කියන byte variable එකට දාන්න කියලා.. එතකොට casting වෙලා ඒ value එක byte variable එකට වැටෙනවා..

මෙන්න මෙහෙම තමයි casting කරන්නෙ.. මෙතන int එකකින් byte එකකට දාන එක ගැන විතරක් කතා කළාට variable capacity මතක නම් ඕනම data type එකක casting මේ විදියටම කරන්න පුළුවන්..

Note


  • මේක විශේෂම දෙයක්, හොඳට මතක තියාගන්න java වලදි INTEGER operation එකක් වුනාට පස්සෙ processor එකෙන් ඒ output එක එවන්නෙ 32 bit විදියට. එතකොට එහෙම එන result එකක් දාන්න පුළුවන් int එකකට හරි long එකකට හරි විතරයි. byte වලට හරි short වලට හරි දාන්න ඕනනම් cast කරන්න වෙනවා..

  • FLOATING POINT operation එකක් වුනාට පස්සෙ processor එකෙන් result එක දෙන්නෙ 64 bit විදියට. ඒක නිසා එහෙම එන result එකක් දාන්න පුළුවන් double වලට විතරයි. අපිට float වලට දාන්න ඕනනම් (float) කියලා ලියලා cast කරන්න වෙනවා..

  • එහෙමත් නැත්නම් අපි මේ දාන්න යන්නෙ float variable එකකට කියලා compiler ට කියන්න f අකුරක් value එකේ අගට දාන්න වෙනවා..



එහෙනම් casting ගැන හැමෝටම තේරුණා කියලා හිතනවා.. වෙලාවෙ ප්‍රශ්නෙත් එක්ක මට මේ සැරේ එක දිගටම post එක ලියන්න බැරි වුනා. වෙලාව තියෙන තියෙන විදියට ටික ටික ලිව්වෙ. ඒක නිසා මේකෙ ගලා යාමක් නෑ වගෙත් දැනෙනවා.. කොහොම වුනත් කාට හරි තේරෙන්නෙ නැත්නම් අනිවාර්යෙන්ම අහන්න.. එහෙනම් මම අදට සමුගන්නම්.. ඊළඟ දවසෙ අපි IF-Else එක්ක හමුවෙමු..


Contact Form

Name

Email *

Message *