coding පහසු කරවන for loop


හායි යාලුවේ... title එකට බය වෙන්න එපා. අද කියලා දෙන්න යන්නෙ අපිට ආඩුයිනෝ coding වලදි වැඩ පහසු කරවන for loop ගැන.


ඔයාලා දැනටමත් දන්නවා නේ ආඩුයිනෝ coding වල setup සහ loop කියන ප්‍රදානම කොටස් දෙක. setup කොටස නම් එක වරයි execute වෙන්නෙ. ඒත් loop කොටස ආඩුයිනෝ එකට විදුලිය සපයලා තියන තාක් දිගින් දිගටම චක්‍රයක් විදියට loop වෙනවා. for loop කියන්නෙත් මෙන්න මේ වගේ දෙයක්. නමුත් අපි දෙන උපදෙස් අනුව මේ for loop එක අවශ්‍ය වෙලාවෙදි loop වෙන එක නවත්තගන්න පුලුවන්. හරියටම කැරකෙන බය්සිකල් රෝදයක් brake ගැහුවම නවතිනවා වගේ.

අපි බලමු දැන් for loop එකක් ලියන්නෙ කොහොමද කියලා.

for(initialization; condition; increment){
//statement - loop වෙන්න ඕනි දේ
}

ඉතින් ඔන්න ඔහොමයි for loop එකක් ලියන්නෙ. මම කලින් කිව්වා නේ අපි දෙන උපදෙස් මත මේ for loop එක නවත්තගන්න පුලුවන් කියලා. () මෙන්න මේ වරහන් තුල තියෙන්නෙ අන්න ඒ උපදෙස් ටික තමයි. අපි එකින් එක බලමු ඒ මොනවද කියලා.

initialization කියන්නෙ for loop එක ආරම්බ වෙන්න ඕනි තැන. අපි ඒක ලියන්නෙ බොහෝ විට int වර්ගයේ විචල්‍යයක් සමග මෙන්න මේ විදියට.

int x = 0;

මෙතනදි x කියන්නෙ විචල්‍යයේ නම්. තමන්ට කැමති නමක් දාගන්න පුලුවන්. මම 0 දාලා තියෙන්නෙ මට for loop එක 0න් පටන් ගන්න ඕනෙ නිසා. ඔයාලට මේක 5න් පටන්ගන්න ඕනෙ නම් int x = 5; කියලා උනත් දාන්න පුලුවන්.

condition කියන්නේ for loop එක නවතින්න ඕනෙ තැන කොතනද කියන දේ. හිතන්නකෝ අපි 0න් පටන් ගෙන 10 වතාවක් loop වෙලා නවතින්න ඕනෙ කියලා. එතකොට අපිට මේ condition එක පහත විදියට ලියන්න පුලුවන්.

x < 10;

දැන් ඔයාලට ප්‍රශ්න ගොඩක් මතු වෙන්න ඇති මම ඇයි ඔය විදියට condition එක ලිව්වේ කියලා. මෙතනදි condition එකක් කියන්නෙ for loop එක නවතින්න ඕනෙ තැන වගේම loop වෙන හැම වාරයකම condition එක check කරලා තමයි for loop එක loop වෙන්න පටන් ගන්නෙ. ඒ නිසා අපිට 10 වතාවක් මේක loop කරගන්න ඕනෙ නම් ඒ හැම වතාවෙම මේ condition එක true වෙලා තියෙන්න ඕනෙ. ඒ වගේම 11 වෙනි වතාවෙ for loop එක අපේ condition එක check කරද්දි condition එක false වෙන්න ඕනෙ. අන්න එතකොට තමයි for loop එක නවතින්නෙ. < සලකුණ භාවිතා කරේ 0 ඉදන් 9 වෙනකන් පූර්ණ සංඛ්‍යා 10ක් තියන නිසා.

increment කියන්නේ for loop එක loop වෙන වාරයක් වාරයක් පාසා අපේ initialization එක විදියට ගත්ත විචල්‍යයට අගයක් එකතු වෙන එක. ඒක ලියන්නෙ මෙහෙමයි.

x ++

ඔය විදියට ලිව්වාම හැම වතාවකම x කියන විචල්‍යයේ අගය 1කින් වැඩි වෙනවා. අගය අඩු කරන්නත් පුලුවන් x -- කියලා ලිව්වාම. අපි ඒ ගැන පස්සෙ කතා කරමු. දැනට increment එක විදියට x ++ භාවිතා කරමු.

හරි දැන් ඔය කොටස් තුනම දාලා for loop එක ලියලා බලමු.

for(int x = 0; x < 10; x ++){
   Serial.println(x);
}

මේකෙදි වෙන්නෙ මෙහෙමයි. මුලින්ම for loop එක පටන් ගද්දි initialization විදියට අපි දාපු x කියන int වර්ගයේ විචල්‍යය (variable එක) හදාගන්නවා. අපි මුලදි ඒක 0 ට සමාන කල නිසා දැන් x වල අගය 0යි. දැන් බලන්නෙ condition එක. ඒ කියන්නෙ x කියන එක 10ට වඩා කුඩා ද බලනවා. දැන් x = 0 නිසා condition එක true වෙනවා. ඒ නිසා for loop එකේ body එක (ඒ කියන්නෙ {} මේ වරහන් තුල තියන code ටික) එක වතාවක් execute වෙනවා. ඉන් පස්සෙ අපි increment එක විදියට දාපු x ++ කොටස නිසා x වලට 1ක් එකතු වෙනවා. දැන් x වල අගය 1යි. දෙවනි වතාවටත් condition එක check කරනවා. x වල අගය වන 2, 10ට වඩා කුඩා නිසා condition එක true. ඒ නිසා දෙවනි වතාවට for loop එකේ body එක වැඩ කරනවා. කලින් වගේම x වල අගය 1 කින් increment වෙනවා. ඔන්න ඔය විදියට 10වතාවක් for loop එක loop වෙලා 11වෙනි වතාවටත් loop වෙන්න condition එක check කරද්දි ඒක false වෙන නිසා for loop එකෙන් ඉවත් වෙනවා.

මම for loop එකේ body එකට Serial.println(x); කියලා දාලා තියන නිසා loop වෙන හැම වටයකදීම x වල අගය serial monitor එකේ බලාගන්න පුලුවන්. මේකෙදි අවශ්‍ය වෙන සම්පූර්ණ code එක මෙතනින් download කරගන්න.

ඔන්න ඉතින් මම ඉස්සෙල්ලා කියපු අමතර කරුනු ටික දැන් කතා කරමු.
  • ඔයාලට අවශ්‍ය නම් variable එක for loop එකට පිටතින් උනත් හදන්න පුලුවන් මෙහෙම:
int x;
for(x = 0; x < 10; x++){
}
මෙතනදි x කියන variable එක for එකට පිටතින් තියන coding වලටත් හව්ලේ භාවිතා කරන්න පුලුවන්.  for(int x = 0; x < 10; x ++)  ඔය විදියට ගත්තොත් x හව්ලෙ ගන්න පුලුවන් for loop එකේ body එක ඇතුලෙ තියන code වලට විතරයි.


  • initialization; statement; increment මේ කොටස් අතර මැදට ";"  මේ semicolon අනිවාර්යයෙන්ම දාන්න ඕනෙ.

  • condition එක හොදට හිතලා බලලා කොයි වෙලාවෙ හරි false වෙන එකක් දෙන්න. නැත්නම් for loop එක කවදාවත් නවතින එකක් නෑ.

  • increment එක වෙනුවට පහත විදියට උනත් දෙන්න පුලුවන්.
අගය එක බැගින් එකතු කිරීමට x ++ හෝ x = x + 1
ඉහත විදියට x = x + 5 ලෙස දී විවිද අගයන් උවත් එකතු කල හැක
ඉහත කී දෙය මේ අයුරින් ද කල හැක x += 5 මෙවිට x ට 5ක් එකතු වේ.

අඩු කිරීම් ද --, -= මෙලෙස ඉහත කී ආකාරයටම කල හැක.

දැන් අපි බලමු for loop ප්‍රායෝගිකව යොදාගන්නෙ මොන වගේ වැඩ වලට ද කියලා.

හිතන්න ඔයාට arduino එකේ 2 වනි pin එකේ ඉදන් 13වෙනි pin එක දක්වා pins, input විදියට හදාගන්න ඕනෙ කියලා. සාමන්‍යයෙන් ඒක කරන්න නම් 
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
ඔය විදියට ලියන්න වෙනවා. ඒත් ඔහොම එකම වගේ කෝඩ් පේලි ගොඩක් ලිය ලිය ඉන්න ඕනෙ නෑ for loop තියන නිසා. මෙහෙම

for(int x = 2; x < 14; x ++){
pinMode(x, INPUT);
}

බලන්න කොයි තරම් පහසුද කියලා. අපේ condition එක පොඩ්ඩක් කැතයි වගේ නම් x < 14 වෙනුවට x <= 13 කියලා උනත් ලියන්න පුලුවන්. දෙකෙන්ම වෙන්නෙ එකම දේ.

increment එක විදියට අඩු කිරීමක් කරනවා නම් (maths දන්න අය දන්නවා ඇති ධන අඩු කිරීමක් කියන්නෙ ඍණ එකතු කිරීමක්) මෙන්න මෙහෙමයි කරන්නෙ.

for(int x = 9; x >= 0; x --){
Serial.println(x);
}

මේකෙ output එක විදියට serial monitor එකේ පෙන්නන්නෙ 9 ඉදන් 0 වෙනකන් පූර්න සංඛ්‍යා ටික.

ඔයාලට කැමති නම් for loop එකක් ඇතුලෙ තවත් for loop ලියන්න පුලුවන්. matrix keypad එක scan කරද්දි, dot matrix display එක්ක සෙල්ලම් කරද්දි  වගේ වැඩ වලදි මේක ගොඩක් ඕනෙ වෙනවා. ඒ ගැන වෙනම ලිපියකින් ගේන්නම්. පහත විදියට තමයි ලියන්නෙ.

for(int y = 0; y < 4; y ++){
   for(int x = 0; x < 4; x ++){
     Serial.print(y); Serial.print(' '); Serial.println(x);
   }
}

ඕකෙ output එක serial monitor එකේ පෙන්නන්නෙ කොහොමද කියලා බලන්න කැමති නම් මෙතනින් code එක download කරලා test කරලා බලන්න.

ඔයාලා අලුත් දෙයක් ඉගෙනගත්තා කියලා හිතනවා. එහෙනම් අලුත් ලිපියකින් නැවතත් හමු වෙමු. හැමෝටම බලන්න share කරන්න.

Comments

Popular posts from this blog

Arduino එකෙන් .wav සින්දු අහමු

Arduino IO Pin සමග ගනු දෙනු - Part 2

Arduino Coding පටන්ගමු