while loop මූලික සංකල්ප සිංහලෙන් | Programming Basics SC Guide

while loop මූලික සංකල්ප සිංහලෙන් | Programming Basics SC Guide

while Loop එකේ බලය: මුල සිට සරලව තේරුම් ගනිමු! SC Guide

කොහොමද යාලුවනේ, ඔයාලා හැමෝටම සුභ දවසක්! අද අපි කතා කරන්න යන්නේ programming වල තියෙන ගොඩක් වැදගත්, හැබැයි සමහර වෙලාවට පොඩ්ඩක් සංකීර්ණ වෙන්න පුළුවන් concept එකක් ගැන – ඒ තමයිwhile loopඑක.

ඔයාලා කවදාවත් හිතලා තියෙනවද, අපි එකම task එකක්, එකම වැඩක්, කිහිප වතාවක් කරන්න ඕන වුණොත් කොහොමද කරන්නේ කියලා? උදාහරණයක් විදිහට, ඔයාලගේ computer එකට කියනවා 10 ඉඳලා 1ට count down කරන්න කියලා. එහෙම නැත්නම්, ඔයාලා හිතන අංකය හොයාගන්නකම් user කෙනෙක්ට අනුමාන කරන්න අවස්ථාව දෙන්න ඕන කියලා. මේ වගේ අවස්ථා වලදී තමයි අපිට loops, විශේෂයෙන්මwhile loopඑකේ උදව් ගන්න වෙන්නේ.

හරි, එහෙනම් වැඩේට බහිමු! අද අපිwhile loopඑක කියන්නේ මොකක්ද, ඒක කොහොමද වැඩ කරන්නේ, ඒක භාවිතා කරලා අපිට මොන වගේ වැඩ කරන්න පුළුවන්ද, සහ ඒකෙන් ඇතිවෙන්න පුළුවන් ගැටළු වළක්වා ගන්නේ කොහොමද කියලා විස්තරාත්මකව බලමු.


while Loop කියන්නේ මොකක්ද? (The Core Idea Behind while Loop)

while loopඑක කියන්නේ programming වලදී යම්කිසි code block එකක්, නිශ්චිත condition එකක්Trueවෙනකම්ම නැවත නැවත ක්‍රියාත්මක කරන්න භාවිතා කරන control flow statement එකක්. සරලව කියනවා නම්, “මේ condition එකTrueවෙනකම් මේ වැඩේ කරගෙන යන්න” කියලා computer එකට කියන එකක්.

මේක හරියට අපේ ගෙදර වැඩ වගේ. අම්මා කියනවා, "බත් ටික උතුරනකම් හැඳි ගාන්න" කියලා. එතකොට ඔයා හැඳි ගානවා, හැඳි ගානවා... බත් ටික උතුරනකම්. බත් උතුරනකොට, condition එකFalseවෙනවා, එතකොට ඔයා හැඳි ගෑම නවත්වනවා. තේරුණා නේද? Programming වලදීත් වෙන්නේ ඒකමයි.

whileLoop එකේ Syntax එක (The Syntax of a while Loop)

බොහෝ programming languages වලwhile loopඑකේ මූලික structure එක මේ වගේ තමයි:

while condition:
    # මේ block එක ඇතුලේ තියෙන code එක
    # condition එක True වෙනකම් run වෙනවා
    # මෙතන condition එක False කරන්න variable එකක් update කරන්න ඕන

මේක Python syntax එක. අපි Python උදාහරණ සඳහා භාවිතා කරන්නේ Python ගොඩක් සරල නිසා සහ beginners ලට තේරුම් ගන්න පහසු නිසා.

  • while: Loop එක පටන් ගන්න keyword එක.
  • condition: මේක තමයි loop එක දිගටම run වෙන්න ඕනේද නැද්ද කියල තීරණය කරන boolean expression එක. මේකTrueනම් loop එක run වෙනවා,Falseනම් loop එක නවතිනවා.
  • :: condition එකෙන් පස්සේ colons (:) එකක් දාන්න ඕන.
  • Indentation:whileblock එක ඇතුලේ තියෙන code එක අනිවාර්යයෙන්ම indent (ඉදිරියට තල්ලු කරලා) කරන්න ඕන. Python වලදී මේක ගොඩක් වැදගත්.

වැදගත්ම දේ තමයි, loop එක ඇතුලේconditionඑකට අදාළ වන variable එකක් හෝ දෙයක් අනිවාර්යයෙන්ම update කරන්න ඕන. නැත්නම් මොකද වෙන්නේ? ඒක තමයි අපි ඊළඟට කතා කරනinfinite loopඑක!


Practical while Loops: අපිම හදමු! (Let's Build Practical while Loops!)

හරි, දැන් අපිwhile loopඑකේ theory එක දැනගත්තානේ. දැන් අපි පොඩි project දෙකක් කරලා, ඒක තවත් හොඳට තේරුම් ගමු.

උදාහරණ 1: සරල Countdown Timer එකක් (A Simple Countdown Timer)

අපි 5 ඉඳලා 0ට කවුන්ට් ඩවුන් කරන simple program එකක් හදමු.

print("\
කවුන්ට් ඩවුන් එක පටන් ගන්නවා!\
-----------------------")

count = 5 # count කියන variable එක 5 විදිහට initialize කරනවා

while count > 0: # count එක 0ට වඩා වැඩි වෙනකම් loop එක run වෙනවා
    print(f"තව {count} තත්පරයි...") # වත්මන් count එක print කරනවා
    count -= 1 # count එක 1කින් අඩු කරනවා (මේක නැත්නම් infinite loop එකක්!)

print("\
-----------------------\
බූම්! කාලය ඉවරයි!")

මේ Code එක වැඩ කරන්නේ කොහොමද?

  • මුලින්ම, අපිcountකියන variable එක 5ට set කරගන්නවා. මේක තමයි අපේ condition එකට බලපාන variable එක.
  • while count > 0:කියන්නේ,countඑක 0ට වඩා වැඩි වෙනකම් loop එක ඇතුලේ තියෙන code එක run කරන්න කියලා.
  • Loop එක ඇතුලේ,print(f"තව {count} තත්පරයි...")කියන line එකෙන් වත්මන් count එක print කරනවා.
  • ඊළඟටcount -= 1(මේකcount = count - 1කියන එකමයි) කියන line එකෙන්countඑක 1කින් අඩු කරනවා. මේක තමයි වැදගත්ම line එක! මේක නැත්නම්,countඑක හැමවෙලේම 5 විදිහට තියෙන නිසා,count > 0කියන condition එක කවදාවත්Falseවෙන්නේ නෑ, එතකොට loop එක කවදාවත් නවතින්නේ නෑ.
  • countඑක 0 වුණාම,count > 0කියන condition එකFalseවෙනවා, එතකොට loop එක නවතිනවා, සහ program එකprint("බූම්! කාලය ඉවරයි!")කියන line එක execute කරනවා.

උදාහරණ 2: සරල අංක අනුමාන කිරීමේ ක්‍රීඩාවක් (A Simple Guessing Game)

දැන් අපි පොඩ්ඩක් සංකීර්ණ, හැබැයි ගොඩක් ප්‍රයෝජනවත් game එකක් හදමු. මේකෙදි computer එක අංකයක් හිතනවා, user ඒක අනුමාන කරන්න ඕන. අනුමානය නිවැරදි වෙනකම් game එක දිගටම යනවා.

import random # random අංකයක් generate කරන්න මේ module එක ඕන වෙනවා

secret_number = random.randint(1, 10) # 1ත් 10ත් අතර අංකයක් computer එකට හිතන්න දෙනවා
guess = 0 # user ගේ අනුමානය store කරන්න variable එකක්, මුලින්ම 0ට set කරනවා

print("\
----------------------------------------\
අපි අනුමාන කිරීමේ ක්‍රීඩාවක් කරමු!\
1ත් 10ත් අතර අංකයක් අනුමාන කරන්න.\
----------------------------------------")

while guess != secret_number: # user ගේ අනුමානය secret_number එකට සමාන වෙනකම් loop එක run වෙනවා
    try:
        guess = int(input("ඔබේ අනුමානය ඇතුලත් කරන්න: ")) # user ගෙන් අනුමානය ඉල්ලනවා

        if guess < secret_number:
            print("වැඩිය පොඩි වැඩියි, තව ටිකක් උඩට!")
        elif guess > secret_number:
            print("වැඩිය ලොකු වැඩියි, තව ටිකක් පහලට!")

    except ValueError:
        print("කරුණාකර වලංගු අංකයක් ඇතුලත් කරන්න. (අංක විතරක් Type කරන්න)")

print(f"\
----------------------------------------\
නියමයි! ඔබ {secret_number} අංකය නිවැරදිව අනුමාන කළා!\
----------------------------------------")

මේ Code එක වැඩ කරන්නේ කොහොමද?

  • import randomline එකෙන් අපිට random numbers generate කරන්න පුළුවන් වෙනවා.
  • secret_number = random.randint(1, 10)කියන line එකෙන් 1ත් 10ත් අතර අංකයක් computer එක හිතනවා.
  • guess = 0කියන එකෙන් අපිguessකියන variable එක මුලින්ම 0ට set කරනවා. මේකsecret_numberඑකට සමාන නොවන ඕනෑම අංකයක් වෙන්න පුළුවන්, loop එක පටන් ගන්න.
  • while guess != secret_number:මේක තමයි අපේ loop condition එක.guessඑකsecret_numberඑකට සමාන වෙනකම් loop එක දිගටම ක්‍රියාත්මක වෙනවා.
  • Loop එක ඇතුලේ,input()එකෙන් user ගෙන් අනුමානය ඉල්ලනවා.int()එකෙන් ඒක integer එකක් බවට පත් කරනවා.
  • try...except ValueErrorblock එකක් දාලා තියෙන්නේ, user කෙනෙක් අංකයක් නැතුව වෙන මොනව හරි (අකුරු වගේ) type කරොත් program එක crash නොවී, error message එකක් පෙන්වන්න. මේක error handling වලදී ගොඩක් වැදගත්.
  • if-elifstatements වලින් user ගේ අනුමානයsecret_numberඑකට වඩා පොඩිද, නැත්නම් ලොකුද කියලා check කරලා ඒ අනුව guidance දෙනවා.
  • User ගේguessඑකsecret_numberඑකට සමාන වුණාම,guess != secret_numberකියන condition එකFalseවෙනවා, එතකොට loop එක නවතිනවා, program එක අවසන් message එක print කරනවා.

දැක්කා නේදwhile loopඑක කොච්චර ප්‍රයෝජනවත්ද කියලා? මේකෙන් අපිට user input මත පදනම් වෙලා ක්‍රියා කරන interactive programs හදන්න පුළුවන්.


while Loop එකේ "කට්ට": අනන්ත ලූප (Infinite Loops - The Thorny Side of while Loops)

ඔයාලා දැන්while loopඑකේ සුන්දර පැත්ත දැක්කානේ. හැබැයි, මේකෙ පොඩි "කට්ටක්" (difficult part) තියෙනවා. ඒ තමයිinfinite loopඑක.

Infinite Loopඑකක් කියන්නේ මොකක්ද?

Infinite loopඑකක් කියන්නේ, ඒකෙ condition එක කවදාවත්Falseවෙන්නේ නැති, ඒ නිසා සදහටම run වෙන loop එකක්. හරියට අපේ බස් එක වගේ, හැමදාම එකම රවුම යනවා වගේ, නවතින්නේම නෑ!

මේක වෙන්නේ ප්‍රධාන හේතු දෙකක් නිසා:

  1. Loop conditionඑකට අදාළ variable එකක් update කරන්න අමතක වීම.
  2. Loop conditionඑක වැරදියට ලිවීම (ඒක කවදාවත්Falseවෙන්න විදිහක් නැති වීම).

උදාහරණය: අනන්ත ලූපයක් (An Example of an Infinite Loop)

# අනන්ත ලූපය! මේක run කරාම ඔයාලගේ program එක freeze වෙන්න පුළුවන්.
# නිකන් බලලා කොහොමද හරි ගස්සන්නේ කියලා තේරුම් ගන්න.

# count = 1
# while count > 0:
#     print("මේක හැමදාම යනවා!")
    # මෙතන count එක update කරන්නේ නෑ, ඒ නිසා count හැමවෙලේම 1යි.
    # condition (count > 0) එක හැමවෙලේම True වෙනවා.

# මේක හරි ගස්සන්න නම්, මෙහෙම කරන්න:
# count = 1
# while count > 0:
#     print(f"මේක {count} වෙන වතාව!")
#     count += 1 # මෙහෙම update කරොත් මේකත් infinite loop එකක්
#     # count -= 1 # මෙහෙම update කරොත් count 0 වුනාම නවතිනවා

උඩ code එකේ (comment කරලා තියෙන) පළවෙනි example එකේ,countඑක 1ට set කරලා තියෙනවා, ඒක කවදාවත් වෙනස් වෙන්නේ නෑ. ඒ නිසාcount > 0කියන condition එක හැමවෙලේමTrueවෙනවා, loop එක සදහටම යනවා.

Infinite Loops Troubleshooting සහ Debugging (Fixing and Debugging Infinite Loops)

අනන්ත ලූපයක් හඳුනා ගන්නේ කොහොමද? ඔයාලගේ program එක responsiveness නැති වෙනවා, CPU usage එක ඉහළ යනවා, සහ output එක එකම දේ නැවත නැවත print කරනවා නම්, ඒක බොහෝ දුරටinfinite loopඑකක් වෙන්න පුළුවන්.

සවි කරන්න (How to Fix):

  1. Ctrl+C (KeyboardInterrupt): Python වගේ languages වලදී, running program එකක් නවත්වන්නCtrl+C(Windows/Linux) හෝCmd+C(macOS) ඔබන්න.
  2. Loop Condition එක සවි කරන්න:whilecondition එක හොඳින් check කරන්න. ඒක කවදා හෝFalseවෙන්න පුළුවන් විදිහට හදලා තියෙනවද?
  3. Update Statement එක check කරන්න: Loop එක ඇතුලේconditionඑකට බලපාන variable එකක් අනිවාර්යයෙන්ම update කරනවද කියලා බලන්න.

Debugging කරන්න (How to Debug):

  • print()Statements: Loop එක ඇතුලේ variable වල current value එක print කරන්න. මේකෙන් variable එක කොහොමද වෙනස් වෙන්නේ කියලා තේරුම් ගන්න පුළුවන්.conditionඑකFalseවෙන්නේ නැත්තේ ඇයි කියලා මේකෙන් පැහැදිලි වෙන්න පුළුවන්.
  • Step-by-Step Debugging: VS Code වගේ IDEs වලට built-in debuggers තියෙනවා. ඒකෙන් පුළුවන් code එක line by line run කරලා, variable values observe කරන්න. මේකෙන් infinite loops වගේම අනිත් bugs වලටත් ලොකු උදව්වක් වෙනවා.

while Loop Best Practices: හොඳම විදිහට කේත ලියමු! (Writing Better while Loop Code)

හොඳ programmer කෙනෙක් වෙන්න නම්, කේත ලියන විදිහත් ගොඩක් වැදගත්.while loopඑකක් ලියනකොට මතක තියාගන්න ඕන හොඳම පුරුදු (Best Practices) කිහිපයක් මෙන්න:

  1. Condition එක අවසානයේFalseවෙන බවට වග බලා ගන්න: මේක තමයි මූලිකම දේ.infinite loopඑකක් වැළැක්වීමට අනිවාර්යයෙන්ම condition එක කවදා හෝFalseවිය යුතුයි.
  2. Variable Initialization:while conditionඑකේ භාවිතා කරන සියලුම variables loop එක පටන් ගන්න කලින් හරියට initialize කරන්න.
  3. Variable Update: Loop එක ඇතුලේconditionඑකට බලපාන variable එකක් හෝ වැඩි ගණනක් නිවැරදිව update කරන්න.
  4. Readability (පැහැදිලිකම):conditionඑක පැහැදිලිව සහ තේරුම් ගැනීමට පහසු ලෙස ලියන්න. සංකීර්ණ conditions හැකි තරම් සරල කරන්න.
  5. breakසහcontinueභාවිතා කිරීම (Advanced):
    • break: Loop එකක් මැදින් නතර කරන්න අවශ්‍ය වුණොත්breakභාවිතා කරන්න පුළුවන්. උදාහරණයක් විදිහට, user නිවැරදි අනුමානය දුන්න ගමන් game loop එක නතර කරන්න.
    • continue: Loop එකක current iteration එක skip කරලා, ඊළඟ iteration එකට යන්න අවශ්‍ය වුණොත්continueභාවිතා කරන්න පුළුවන්. (උදා: negative input එකක් ආවොත් ඒක skip කරලා අලුත් input එකක් ඉල්ලන්න). මේවාwhileloop එක තවත් powerful කරන tools.
# break උදාහරණය
i = 1
while i <= 10:
    print(i)
    if i == 5:
        print("5ට ආව නිසා loop එකෙන් එලියට යනවා.")
        break # i 5 වුණාම loop එක නවතිනවා
    i += 1
print("Loop එක ඉවරයි.")

මේවා මතක තියාගෙන code කරනකොට, ඔයාලටwhile loopඑකෙන් උපරිම ප්‍රයෝජන ගන්න පුළුවන්!


අවසාන වශයෙන් (In Conclusion)

ඉතින් යාලුවනේ, අද අපිwhile loopඑක ගැන මුල සිට අගටම විස්තරාත්මකව කතා කළා.while loopඑක කියන්නේ programming වල තියෙන ගොඩක්ම වැදගත් සහ versatile tool එකක්. ඒකෙන් අපිට එකම වැඩේ නැවත නැවත කරන්නත්, user input මත පදනම් වෙලා programs හදන්නත්, ගොඩක් සංකීර්ණ tasks සරල කරන්නත් පුළුවන්.

මේ concepts ඔක්කොම තේරුණා නේද? දැන් ඉතින් කරලා බලන්න තමයි තියෙන්නේ! ඔයාලගේ computer එකේ මේ examples try කරලා බලන්න. පොඩි වෙනස්කම් කරලා බලන්න. එතකොට තමයි ඔයාලගේ දැනුම තවත් වැඩි වෙන්නේ.

ඔබේ අදහස්, ප්‍රශ්න පහළින් comment කරන්න අමතක කරන්න එපා. අපි ඊළඟ ලිපියෙන් තවත් අලුත් subject එකක් එක්ක හම්බවෙමු! ඔබට ජයවේවා!