Programming වලදී කම්මැලි, පුනරාවර්තන කාර්යයන් ස්වයංක්රීයව (automatically) කරගන්නා ආකාරය පිළිබඳ සම්පූර්ණ සිංහල මාර්ගෝපදේශය.
පසුගිය ලිපියෙන් අපි **විචල්යයන් (Variables)** ගැන ඉගෙන ගත්තා. විචල්යයන් යනු දත්ත ගබඩා කරන බඳුන් වගෙයි. අද අපි කතා කරන්නේ programming වල තවත් අතිශය වැදගත් සංකල්පයක් වන **ලූප් (Loops)** ගැන. ලූප් එකක් කියන්නේ පරිගණකයට යම් කාර්යයක් කිහිප වතාවක් නැවත නැවතත් කරන්නට දෙන උපදෙසක්.
හිතන්න, ඔබට "Hello, World!" කියලා 100 පාරක් screen එකේ print කරන්න ඕන වුණා කියලා. ඔබ මොකක්ද කරන්නේ? `print("Hello, World!")` කියන line එක 100 පාරක් copy-paste කරනවද? ඒක කරන්න පුළුවන්, ඒත් ඒක හරිම වෙහෙසකර සහ අකාර්යක්ෂම වැඩක්. 1000 පාරක් print කරන්න වුනොත්? අන්න ඒ වගේ වෙලාවට තමයි ලූප්ස් අපේ උදව්වට එන්නේ. පේළි කිහිපයකින් අපිට ඒ කාර්යය ඉතා පහසුවෙන් කරගන්න පුළුවන්.
මේ ලිපියෙන් අපි ගැඹුරින් අධ්යනය කරන්නේ:
සරලවම කිව්වොත්, **ලූපයක් යනු යම්කිසි කොන්දේසියක් (condition) සත්යව පවතින තාක්, කේත කොටසක් (block of code) නැවත නැවතත් ක්රියාත්මක (execute) කිරීමේ ක්රියාවලියයි.** මේකට **පුනරාවර්තනය (Iteration)** කියලත් කියනවා. ලූපයේ එක වටයක් යනු එක් iteration එකකි.
එදිනෙදා ජීවිතයේදීත් අපි නොදැනුවත්වම ලූප්ස් භාවිතා කරනවා.
Programming වලදීත් වෙන්නේ මේකමයි. අපි පරිගණකයට ආරම්භක ලක්ෂ්යයක්, නතර විය යුතු කොන්දේසියක් සහ නැවත නැවතත් කළ යුතු කාර්යයක් ලබා දෙනවා.
සාමාන්යයෙන් ලූපයක් ප්රධාන කොටස් හතරකින් සමන්විත වෙනවා.
ලූප්ස් යනු programming වලදී කාලය සහ ශ්රමය ඉතුරු කරන, කේතය වඩාත් බලවත් කරන මෙවලමකි.
අපි මුලින්ම කතා කරපු උදාහරණයම ගමු. "Hello" 10 පාරක් print කිරීමට ලූපයක් නැතුව සහ ඇතුව ලියන කේත බලන්න.
ලූපයක් නොමැතිව (Without a Loop):
print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")
print("Hello")
ලූපයක් සමඟ (With a Loop - Python):
for i in range(10):
print("Hello")
පේළි 10ක් වෙනුවට පේළි 2කින් වැඩේ ඉවරයි. Software development වලදී "Don't Repeat Yourself" (DRY) කියලා මූලධර්මයක් තියෙනවා. ලූප්ස් කියන්නේ DRY මූලධර්මය ක්රියාවට නංවන්න තියෙන හොඳම ක්රමයක්.
ඔබට ශිෂ්යයන් 50 දෙනෙකුගේ නම් ඇතුළත් list එකක් තියෙනවා කියලා හිතන්න. ඔබට මේ හැමෝගෙම නම් screen එකේ print කරන්න ඕන. හැම ශිෂ්යයෙක් වෙනුවෙන්ම වෙනම `print` statement එකක් ලියනවද? නැහැ. ලූපයක් භාවිතා කරලා ඒ list එකේ තියෙන හැම නමක් හරහාම ගිහින් ඒවා එකින් එක print කරන්න පුළුවන්.
student_names = ["Nimal", "Kamala", "Sunil", "Amara", "Ruwan"]
for name in student_names:
print("Welcome,", name)
ATM යන්ත්රයක මෙනු එකක් ගැන හිතන්න. ඔබ "Withdraw", "Check Balance" වගේ option එකක් තෝරනවා. ඊට පස්සේ ආයෙත් ප්රධාන මෙනු එකට එනවා. ඔබ "Exit" තෝරනකම්ම ඒ මෙනු එක නැවත නැවතත් පෙන්වනවා. මේ වගේ දේවල් හදන්න ලූප්ස් අත්යවශ්යයි.
For Loop එකක් ප්රධාන වශයෙන්ම භාවිතා වෙන්නේ **නිශ්චිත වාර ගණනක්** යම් කාර්යයක් කිරීමට හෝ list එකක් වැනි දත්ත එකතුවක (sequence) ඇති සෑම உறுப்படிகள் (item) එකක් හරහාම ගමන් කිරීමටයි. ඔබ ලූපය කොපමණ වාරයක් ක්රියාත්මක විය යුතුද කියා **කලින්ම දන්නවා නම්**, For Loop එක තමයි වඩාත්ම සුදුසු.
Python වල For Loop එක ඉතාම සරල සහ කියවීමට පහසුයි.
for variable_name in sequence:
# Code to be repeated
# This is the loop body
නිශ්චිත වාර ගණනක් ලූපය ක්රියාත්මක කිරීමට `range()` function එක ඉතාම ප්රයෝජනවත්. `range()` මගින් සංඛ්යා අනුක්රමයක් (sequence of numbers) ජනනය කරනවා.
print("Numbers from 1 to 5:")
for number in range(1, 6):
print(number)
fruits = ["Apple", "Banana", "Cherry", "Orange"]
print("Available fruits:")
for fruit in fruits:
print("- " + fruit)
# 5 times table
number_to_multiply = 5
print(f"Multiplication table for {number_to_multiply}:")
for i in range(1, 11): # Loop from 1 to 10
result = number_to_multiply * i
print(f"{number_to_multiply} x {i} = {result}")
While Loop එකක් භාවිතා වෙන්නේ යම්කිසි කාර්යයක් **කොන්දේසියක් සත්ය (True) වන තාක් කල්** නැවත නැවතත් කිරීමටයි. මෙහිදී ලූපය කොපමණ වාරයක් ක්රියාත්මක වේදැයි අපි කලින්ම දන්නේ නැහැ. කොන්දේසිය අසත්ය (False) වූ සැනින් ලූපය නතර වෙනවා.
while condition:
# Code to be repeated as long as the condition is True
# This is the loop body
# IMPORTANT: Update the variable used in the condition
print("Numbers from 1 to 5:")
counter = 1 # 1. Initialization
while counter <= 5: # 2. Condition
print(counter) # 3. Body
counter = counter + 1 # 4. Update
user_input = ""
while user_input.lower() != "quit":
user_input = input("Enter a message (type 'quit' to exit): ")
print(f"You typed: {user_input}")
print("Goodbye!")
import random
secret_number = random.randint(1, 10)
guess = 0
print("I'm thinking of a number between 1 and 10.")
while guess != secret_number:
guess = int(input("What is your guess? "))
if guess < secret_number:
print("Too low! Try again.")
elif guess > secret_number:
print("Too high! Try again.")
print("Congratulations! You guessed it right!")
සමහර වෙලාවට අපිට ලූපයක සාමාන්ය ගමනට බාධා කරන්න සිද්ධ වෙනවා. එක්කෝ ලූපය සම්පූර්ණයෙන්ම නතර කරන්න, නැත්නම් වත්මන් වටය විතරක් මඟහැරලා ඊළඟ වටයට යන්න. මේ සඳහා `break` සහ `continue` කියන ප්රකාශන (statements) යොදාගන්නවා.
`break` statement එක හමුවූ සැනින්, පරිගණකය එම ලූපය සම්පූර්ණයෙන්ම නතර කර, ලූපයෙන් පසුව ඇති කේතය ක්රියාත්මක කිරීම ආරම්භ කරනවා.
'Sunil' හමුවූ සැනින් සෙවීම නතර කළ හැකියි, ඉතිරි අයව check කිරීම අනවශ්යයි.
student_names = ["Nimal", "Kamala", "Sunil", "Amara", "Ruwan"]
for name in student_names:
print("Checking:", name)
if name == "Sunil":
print("Found Sunil! Stopping the search.")
break # Exit the loop immediately
print("Loop finished.")
`continue` statement එක හමුවූ විට, ලූපයේ වත්මන් වටයේ (current iteration) ඉතිරි කේත කොටස ක්රියාත්මක නොකර, ඊළඟ වටය ආරම්භ කරනවා. ලූපය සම්පූර්ණයෙන් නතර වෙන්නේ නැහැ.
for number in range(1, 11):
if number % 2 != 0: # Check if the number is odd
continue # If it's odd, skip to the next number
print(number) # This line only runs for even numbers
එක් ලූපයක් ඇතුළේ තවත් ලූපයක් ලිවීම Nested Loops ලෙස හඳුන්වනවා. පිටතින් ඇති ලූපයේ (outer loop) එක වටයක් සඳහා, ඇතුළත ලූපය (inner loop) සම්පූර්ණයෙන්ම ක්රියාත්මක වී අවසන් වෙනවා.
මෙය ඔරලෝසුවක පැය කටුව සහ මිනිත්තු කටුව වගෙයි. පැය කටුව එක පියවරක් යන්න, මිනිත්තු කටුව සම්පූර්ණ වට 60ක්ම යන්න ඕන.
# This will print a 3x5 rectangle of stars
for row in range(3): # Outer loop for rows
for column in range(5): # Inner loop for columns
print("*", end=" ") # Print a star and stay on the same line
print() # After the inner loop finishes, move to the next line
ප්රතිදානය (Output):
* * * * * * * * * * * * * * *
ලූප්ස් යනු programming වලදී පුනරාවර්තන කාර්යයන් පහසුවෙන් සහ කාර්යක්ෂමව කරගැනීමට ඇති අද්විතීය මෙවලමකි. ඔබ මේ සංකල්පය ප්රගුණ කළා යනු, ඔබට වඩාත් සංකීර්ණ සහ ප්රයෝජනවත් පරිගණක වැඩසටහන් ලිවීමේ හැකියාව ලැබුණා යන්නයි.
අපි ඉගෙන ගත් ප්රධාන කරුණු:
දැන් ඔබ විචල්යයන් සහ ලූප්ස් යන මූලික කුළුණු දෙකම ගැන දන්නවා. දැන් කළ යුත්තේ මේවා භාවිතා කර විවිධ ගැටළු විසඳීමට උත්සාහ කිරීමයි. මෙම ලිපියේ ඇති උදාහරණ ඔබම type කර, ඒවායේ අගයන් වෙනස් කර ලැබෙන ප්රතිඵල බලන්න. එයින් ඔබේ අවබෝධය තවත් වැඩි දියුණු වනු ඇත.
ඊළඟට මොකක්ද? ඔබ දැන් කේත නැවත නැවතත් ක්රියාත්මක කරවන්න දන්නවා. ඊළඟට, අපි මේ කේත කොටස් පිළිවෙලට සංවිධානය කර, අවශ්ය විටෙක නැවත නැවත භාවිතා කරන්නේ කෙසේදැයි ඉගෙන ගනිමු. අපේ ඊළඟ ලිපිය වන **"ෆංක්ෂන් (Function) යනු කුමක්ද?"** කියවන්නට අපි ඔබට ආරාධනා කරනවා!