Java Loops | for, while, do-while | සිංහලෙන් ඉගෙන ගමු

ආයුබෝවන්! කොහොමද ඉතින් ඔයාලට? Tech සිංහලෙන් ඉගෙන ගන්න ඔයාලා හැමෝම සාදරයෙන් පිළිගන්නවා අපේ අලුත්ම Ghost SC Guide එකට.
අප්පච්චිලාගේ, අම්මලාගේ වැඩ වගේම, අපිටත් සමහර වෙලාවට එකම දේ ආයෙ ආයෙ කරන්න වෙනවා නේද? උදේට නැගිට්ට ගමන් බ්රෂ් කරන එක, දවසට තුන් වේලට කෑම කන එක, ඔෆිස් එකේ දවසට කිහිප වතාවක්ම සයින් ඉන් කරන එක වගේ දේවල් ගත්තම, ඒවා තමයි අපේ දවසේ පුරුදු විදියට සිද්ධ වෙන දේවල්. කම්පියුටර් ප්රෝග්රෑමින් වලදීත් මේ වගේම ආයෙ ආයෙ කරන්න ඕන වැඩ තියෙනවා. හිතන්නකෝ, ඔයාට 1 ඉඳන් 1000 වෙනකම් නම්බර් ටික Print කරන්න ඕනේ කියලා. එකින් එක System.out.println() දාගෙන යනවා නම්, හිතාගන්න පුළුවන්නේ මොන තරම් කාලයක් යනවාද කියලා, මොන තරම් කෝඩ් ප්රමාණයක් ලියන්න වෙනවාද කියලා. ඒ වගේ වෙලාවට තමයි Loops, එහෙම නැත්නම් සිංහලෙන් "පුනරාවර්තන" කියන සංකල්පය අපේ උදව්වට එන්නේ!
අද අපි කතා කරන්න යන්නේ Java වල තියෙන ප්රධානම Loop වර්ග තුනක් ගැනයි: for loop, while loop, සහ do-while loop. මේවා Java වල විතරක් නෙවෙයි, ඕනෑම ප්රෝග්රෑමින් භාෂාවක තියෙන වැදගත්ම Concepts කිහිපයක්. මේවා හරියට තේරුම් ගත්තොත්, ඔයාගේ කෝඩින් වැඩ ගොඩක් ලේසි කරගන්න පුළුවන් වෙනවා වගේම, ඔයාට වඩා කාර්යක්ෂම (efficient) සහ පිරිසිදු (clean) කෝඩ් ලියන්නත් පුළුවන් වෙනවා. එහෙනම්, පටන් ගමු නේද?
ලූප (Loops) කියන්නේ මොනවද? ඇයි අපිට ඒවා ඕනෙ?
සරලවම කිව්වොත්, Loop එකක් කියන්නේ එකම කෝඩ් කොටසක් කිහිප වතාවක් ක්රියාත්මක කරන්න පුළුවන් යාන්ත්රණයක්. මේකෙන් වෙන්නේ, එකම වැඩේ ආයෙ ආයෙ ලියනවා වෙනුවට, එක පාරක් ලියලා, ඒක කොච්චර වාරයක් ක්රියාත්මක වෙන්න ඕනෙද කියලා අපි Computer එකට කියන එකයි. ඒක හරියට, ඔයාට Room එකක් දස පාරක් අතුගාන්න ඕනෙ නම්, දස පාරක්ම අතුගාන්න කියලා කියනවා වෙනුවට, "මේ Room එක දස පාරක් අතුගාන්න" කියලා එක පාරක් කියනවා වගේ දෙයක්.
Loop එකක් පාවිච්චි කිරීමෙන් ලැබෙන වාසි:
- කාලය ඉතිරි වෙනවා (Saves Time): එකම කෝඩ් එක ආයෙ ආයෙ ලියන්න ඕනේ නෑ.
- කෝඩ් ප්රමාණය අඩු වෙනවා (Reduces Code Size): අනවශ්ය කෝඩ් ප්රමාණයක් ලියන එක වළක්වනවා.
- දෝෂ අඩු වෙනවා (Reduces Errors): අඩු කෝඩ් ප්රමාණයක් තියෙන නිසා දෝෂ ඇතිවීමේ අවස්ථා අඩු වෙනවා.
- නඩත්තු කිරීම පහසු වෙනවා (Easier to Maintain): කෝඩ් එකේ වෙනසක් කරන්න ඕනේ නම්, එක තැනකින් වෙනස් කළාම ඇති.
හරි, දැන් අපි බලමු Java වල තියෙන ප්රධාන Loop වර්ග තුන ගැන. මොකද, මේවා තමයි අපිට වැඩියෙන්ම හම්බවෙන Loops.
for loop – වැඩියෙන්ම පාවිච්චි වෙන දේ!
Java වල තියෙන Loops අතරින් වැඩියෙන්ම ජනප්රිය Loop එක තමයි for loop එක. මේක සාමාන්යයෙන් පාවිච්චි කරන්නේ අපිට Loop එකක් කී පාරක් දුවන්න ඕනෙද කියලා කලින්ම දන්නවා නම්. උදාහරණයක් විදියට, 100 වතාවක් යම්කිසි ක්රියාවක් කරන්න ඕනේ නම්, for loop එකක් පාවිච්චි කරන එක ඉතාම සුදුසුයි.
for loop එකේ ව්යුහය (Syntax):
for (initialization; condition; iteration) {
// මේ ඇතුලේ තියෙන කෝඩ් කොටස, condition එක true වෙනකම් ක්රියාත්මක වෙනවා.
}
- initialization (ආරම්භය): Loop එක පටන් ගන්න කලින් එක පාරක් විතරක් ක්රියාත්මක වෙන කොටස. සාමාන්යයෙන් මේකෙන් Loop එක පාලනය කරන variable එකක් (Loop Control Variable) ආරම්භ කරනවා. උදා:
int i = 0;
- condition (තත්වය): මේක Boolean expression එකක්. Loop එකේ තියෙන කෝඩ් කොටස ක්රියාත්මක වෙන්නේ මේ condition එක
true
නම් විතරයි.false
වුණොත් Loop එක ඉවර වෙනවා. උදා:i < 10;
- iteration (පුනරාවර්තනය): Loop එකේ කෝඩ් කොටස ක්රියාත්මක වුණාට පස්සේ, හැම වතාවකදීම ක්රියාත්මක වෙන කොටස. සාමාන්යයෙන් මේකෙන් Loop Control Variable එකේ අගය වැඩි කරනවා (increment) හෝ අඩු කරනවා (decrement). උදා:
i++
(i හි අගය එකකින් වැඩි කරනවා)
උදාහරණයක්: 1 සිට 5 දක්වා අංක Print කිරීම
public class ForLoopExample {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
System.out.println("අංකය: " + i);
}
System.out.println("for loop එක අවසන්යි!");
}
}
මේ කෝඩ් එක ක්රියාත්මක කරහම Output එක මේ විදියට එයි:
අංකය: 1
අංකය: 2
අංකය: 3
අංකය: 4
අංකය: 5
for loop එක අවසන්යි!
දැක්කා නේද? එකම System.out.println() එක පස් පාරක් ක්රියාත්මක වුණා. මේක තමයි for loop එකේ බලය!
break
සහ continue
Keywords
for loop එකක් ඇතුලේ break
සහ continue
කියන keywords පාවිච්චි කරන්න පුළුවන්.
break
: මේකෙන් Loop එක ක්ෂණිකව නවත්වලා, Loop එකෙන් පස්සේ තියෙන කෝඩ් කොටස ක්රියාත්මක කරනවා.continue
: මේකෙන් වෙන්නේ, Loop එකේ වත්මන් iteration එක නවත්වලා, ඊළඟ iteration එකට යන එකයි. ඒ කියන්නේ,continue
එකට පස්සේ තියෙන කෝඩ් කොටස ක්රියාත්මක වෙන්නේ නෑ.
while loop – තත්වයක් ඇත්ත වෙනකම් (Until a condition is true)
for loop එක වගේම, while loop එකත් Loop එකක් ක්රියාත්මක කරන්න පාවිච්චි කරනවා. හැබැයි, මේක පාවිච්චි කරන්නේ Loop එකක් කී පාරක් දුවන්න ඕනෙද කියලා අපිට කලින්ම හරියටම දන්නේ නැති අවස්ථා වලදීයි. Loop එක දුවන වාර ගාණ තීරණය වෙන්නේ යම්කිසි Condition එකක් මත නම්, while loop එකක් තමයි වඩා සුදුසු. මේ Loop එකේදී, Condition එක true
නම් විතරයි කෝඩ් කොටස ක්රියාත්මක වෙන්නේ. Condition එක මුලින්ම Check කරනවා.
while loop එකේ ව්යුහය (Syntax):
while (condition) {
// මේ ඇතුලේ තියෙන කෝඩ් කොටස, condition එක true වෙනකම් ක්රියාත්මක වෙනවා.
}
- condition (තත්වය): මේක Boolean expression එකක්. Loop එකේ කෝඩ් කොටස ක්රියාත්මක වෙන්නේ මේ condition එක
true
නම් විතරයි.false
වුණොත් Loop එක ඉවර වෙනවා.
උදාහරණයක්: 10ට වඩා අඩු අංක Print කිරීම
import java.util.Scanner;
public class WhileLoopExample {
public static void main(String[] args) {
int count = 0;
while (count < 5) {
System.out.println("ගණන: " + count);
count++; // මෙතන count එක වැඩි නොකළොත් මොකද වෙන්නේ? (අසීමිත Loop එකක්)
}
System.out.println("while loop එක අවසන්යි!");
// තව උදාහරණයක්: User ගෙන් 'quit' කියලා එනකම් input ගන්නවා
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("quit")) {
System.out.print("නමක් ඇතුළත් කරන්න ('quit' ලෙස type කර අවසන් කරන්න): ");
input = scanner.nextLine();
if (!input.equals("quit")) {
System.out.println("ඔබ ඇතුළත් කළේ: " + input);
}
}
System.out.println("User Input Loop එක අවසන්යි!");
scanner.close();
}
}
පළමු කොටසින් Output එක මේ විදියට එයි:
ගණන: 0
ගණන: 1
ගණන: 2
ගණන: 3
ගණන: 4
while loop එක අවසන්යි!
දෙවන කොටස user input මත ක්රියා කරනවා. මේකෙදි වැදගත් දේ තමයි, Loop එක ඇතුලේ variable එකක අගය වෙනස් කරන්න අමතක නොකිරීම. නැත්නම්, Infinite Loop එකක් හැදිලා, ප්රෝග්රෑම් එක කවදාවත් ඉවර වෙන්නේ නැති වෙන්න පුළුවන්! ඒක ජිවිතේටම මතක තියාගන්න ඕන දෙයක්!
do-while loop – එක පාරක් හරි වැඩේ කරනවාමයි!
do-while loop එකත් while loop එකට ගොඩක් සමානයි. ලොකු වෙනසක් නැහැ. හැබැයි තියෙන එකම සහ වැදගත්ම වෙනස තමයි, do-while loop එකේදී කෝඩ් කොටස අවම වශයෙන් එක වතාවක්වත් ක්රියාත්මක වෙනවා. ඒකට හේතුව තමයි, Condition එක check කරන්නේ Loop එක ඇතුලේ තියෙන කෝඩ් කොටස ක්රියාත්මක වුණාට පස්සේ වීමයි.
do-while loop එකේ ව්යුහය (Syntax):
do {
// මේ ඇතුලේ තියෙන කෝඩ් කොටස අවම වශයෙන් එක වතාවක්වත් ක්රියාත්මක වෙනවා.
} while (condition);
- do block: මේ ඇතුලේ තියෙන කෝඩ් කොටස මුලින්ම ක්රියාත්මක වෙනවා.
- condition (තත්වය): do block එක ක්රියාත්මක වුණාට පස්සේ මේ condition එක check කරනවා. Condition එක
true
නම් Loop එක ආයෙත් දුවනවා.false
නම් Loop එක ඉවර වෙනවා.
උදාහරණයක්: අවම වශයෙන් එක් වරක් හෝ මෙනුවක් පෙන්වීම
import java.util.Scanner;
public class DoWhileLoopExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println("\n--- මෙනුව ---");
System.out.println("1. පීසා");
System.out.println("2. බර්ගර්");
System.out.println("3. සලාද");
System.out.println("4. පිටවෙන්න");
System.out.print("ඔබේ තේරීම ඇතුළත් කරන්න: ");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("ඔබ පීසා තෝරා ගත්තා!");
break;
case 2:
System.out.println("ඔබ බර්ගර් තෝරා ගත්තා!");
break;
case 3:
System.out.println("ඔබ සලාද තෝරා ගත්තා!");
break;
case 4:
System.out.println("අපි යනවා!");
break;
default:
System.out.println("වලංගු තේරීමක් නොවේ. නැවත උත්සාහ කරන්න.");
}
} while (choice != 4);
System.out.println("do-while loop එක අවසන්යි!");
scanner.close();
}
}
මේ උදාහරණයේදී, user 4 කියලා තේරීමක් දෙනකම් Menu එක නැවත නැවතත් පෙන්වනවා. හැබැයි, user මුලින්ම 4 දුන්නත්, Menu එක අවම වශයෙන් එක වතාවක්වත් පෙන්වනවා. මේක තමයි do-while loop එකේ ප්රධානම ලක්ෂණය!
කවදද මොකක්ද පාවිච්චි කරන්නේ? (When to use which?)
හරි, දැන් අපි for, while, do-while කියන Loop වර්ග තුන ගැනම ඉගෙන ගත්තා. එතකොට, කවදද මොකක්ද පාවිච්චි කරන්නේ කියන එක ප්රශ්නයක් වෙන්න පුළුවන්. මෙන්න ඒකට පොඩි ගයිඩ් එකක්:
- for loop:
- Loop එකක් දුවන වාර ගාණ (iterations) කලින්ම දන්නවා නම් (උදා: array එකක තියෙන හැම element එකක්ම process කරනවා වගේ).
- ගණනය කිරීමක් මත පදනම්ව Loop එකක් දුවනවා නම්.
- while loop:
- Loop එක දුවන වාර ගාණ කලින්ම දන්නේ නැත්නම්, හැබැයි යම්කිසි Condition එකක්
true
වෙනකම් Loop එක දුවන්න ඕනේ නම් (උදා: user input එකක් නිවැරදි වෙනකම් ඉල්ලනවා වගේ). - Condition එක Loop එක පටන් ගන්න කලින්ම Check කරන්න ඕනේ නම්.
- Loop එක දුවන වාර ගාණ කලින්ම දන්නේ නැත්නම්, හැබැයි යම්කිසි Condition එකක්
- do-while loop:
- Loop එකේ තියෙන කෝඩ් කොටස අවම වශයෙන් එක වතාවක්වත් ක්රියාත්මක වෙන්න ඕනේ නම් (උදා: Menu එකක් මුලින්ම පෙන්නලා, user තේරීමක් කළාට පස්සේ නැවත පෙන්නන්න ඕනේ නම්).
- Condition එක Loop එක ක්රියාත්මක වුණාට පස්සේ Check කරන්න ඕනේ නම්.
වැදගත්ම දේ තමයි:
ඕනෑම Loop එකක් පාවිච්චි කරද්දී Infinite Loop එකක් හැදෙන එක ගැන ගොඩක් පරිස්සම් වෙන්න ඕනේ. ඒ කියන්නේ, Loop එකේ Condition එක කවදාවත් false
වෙන්නේ නැත්නම්, ප්රෝග්රෑම් එක එකම තැන රවුමට කැරකෙමින් ඉඳියි. ඒක වළක්වන්න, Loop එක ඇතුලේ Condition එක false
කරන්න පුළුවන් විදියට කෝඩ් කරන්න අමතක කරන්න එපා. (උදා: count++
වගේ Loop Variable එක වෙනස් කිරීම).
නිගමනය
ඉතින්, අද අපි Java වල තියෙන ප්රධාන Loop වර්ග තුනක් ගැන හරියටම ඉගෙන ගත්තා. for, while, do-while කියන මේ Loops, ඔයාගේ ප්රෝග්රෑමින් ගමනට අත්යවශ්යම Tools කිහිපයක්. මේවා හරියට පාවිච්චි කරන්න පුළුවන් නම්, ඔයාට පුළුවන් අඩු කෝඩ් ප්රමාණයකින්, වඩාත් කාර්යක්ෂමව, පිරිසිදුව වැඩ කරන්න. ඒ කියන්නේ, ඔයාට අලුත් දේවල් හදන්න, තියෙන දේවල් දියුණු කරන්න පුළුවන් වෙනවා.
මේ concepts තේරුම් ගත්තා කියලා හිතනවා. හැබැයි, තේරුම් ගන්නවා වගේම වැදගත් දෙයක් තමයි මේවා practise කරන එක. අදම ගිහින් ඔයාගේ IDE එක Open කරලා, මේ උදාහරණ ටික run කරලා බලන්න. ඔයාගේම පොඩි පොඩි කෝඩ් ලියලා බලන්න. එතකොට තමයි මේවා ඔයාගේ ඔළුවට හරියටම යන්නේ.
මේ වගේ තව මොනවා හරි topic එකක් ගැන සිංහලෙන් ඉගෙන ගන්න ඕනේ නම්, නැත්නම් මේක ගැන මොනවා හරි ප්රශ්න තියෙනවා නම්, පහළින් comment එකක් දාන්න අමතක කරන්න එපා! අපි හැමෝම එකට ඉගෙන ගනිමු!
ඊළඟ පොස්ට් එකෙන් හම්බවෙමු! ඔබට ජය!