স্কালা প্রোগ্রামিং ভাষায় কন্ট্রোল স্ট্রাকচারগুলি খুবই শক্তিশালী এবং ব্যবহারকারী-বান্ধব। স্কালা কন্ট্রোল স্ট্রাকচারগুলি সাধারণভাবে ব্যবহৃত হয় যেমন if-else, match, for loop, এবং while loop। এখানে আমরা প্রতিটি কন্ট্রোল স্ট্রাকচারের বিস্তারিত আলোচনা করব এবং উদাহরণ দেব।
১. if-else (কন্ডিশনাল স্টেটমেন্ট)
if-else কন্ডিশনাল স্টেটমেন্ট ব্যবহার করে আপনি একটি শর্ত পরীক্ষা করে আলাদা কাজ করতে পারেন। এটি অন্য ভাষার মতোই কাজ করে।
উদাহরণ:
object IfElseExample {
def main(args: Array[String]): Unit = {
val number = 10
if (number > 0) {
println("Positive Number")
} else if (number < 0) {
println("Negative Number")
} else {
println("Zero")
}
}
}- if: প্রথম শর্ত চেক করবে, যদি শর্ত সঠিক হয় তবে সেটি রান করবে।
- else if: যদি প্রথম শর্ত ভুল হয় তবে পরবর্তী শর্ত চেক হবে।
- else: সব শর্ত ভুল হলে এটি রান করবে।
২. match (প্যাটার্ন ম্যাচিং)
স্কালায় match কেস স্টেটমেন্টের মতো কাজ করে, কিন্তু এটি অনেক বেশি শক্তিশালী এবং নমনীয়। আপনি একাধিক শর্ত পরীক্ষা করতে পারেন এবং বিভিন্ন প্যাটার্নের সাথে মিলিয়ে কাজ করতে পারেন।
উদাহরণ:
object MatchExample {
def main(args: Array[String]): Unit = {
val day = 3
day match {
case 1 => println("Monday")
case 2 => println("Tuesday")
case 3 => println("Wednesday")
case 4 => println("Thursday")
case 5 => println("Friday")
case 6 => println("Saturday")
case 7 => println("Sunday")
case _ => println("Invalid day")
}
}
}- match: একটি মানের উপর বিভিন্ন প্যাটার্ন পরীক্ষা করতে ব্যবহৃত হয়।
- case: প্রতিটি প্যাটার্নের জন্য একটি শর্ত নির্ধারণ করা হয়।
- _: ডিফল্ট কেস, যদি কোন কেসের সাথে মেলে না, তখন এটি রান করবে।
Match ব্যবহার করার আরেকটি উদাহরণ:
val number = 10
val result = number match {
case x if x % 2 == 0 => "Even"
case x if x % 2 != 0 => "Odd"
case _ => "Unknown"
}
println(result) // Output: Evenএখানে, if শর্তের মাধ্যমে প্যাটার্ন ম্যাচিং ব্যবহার করা হয়েছে।
৩. for (for loop)
স্কালার for loop সাধারণত রেঞ্জ বা কালেকশনের উপাদানগুলির উপর লুপ চালাতে ব্যবহৃত হয়। এটি স্কালার ফাংশনাল স্টাইলের লুপ যা অনেক শক্তিশালী।
উদাহরণ (রেঞ্জ ব্যবহার করে):
object ForLoopExample {
def main(args: Array[String]): Unit = {
for (i <- 1 to 5) {
println(i)
}
}
}- 1 to 5: ১ থেকে ৫ পর্যন্ত একটি রেঞ্জ।
- <-: লুপের চলমান মান নিয়ে আসে।
উদাহরণ (অবিচ্ছিন্নভাবে ফিল্টারিং এবং মান পরিবর্তন):
object ForLoopFilter {
def main(args: Array[String]): Unit = {
for (i <- 1 to 10 if i % 2 == 0) {
println(i)
}
}
}এখানে, শুধুমাত্র even numbers (যেগুলি ২ দিয়ে ভাগযোগ্য) প্রিন্ট হবে।
উদাহরণ (জোড়া তৈরি):
object ForLoopPairs {
def main(args: Array[String]): Unit = {
for (i <- 1 to 3; j <- 1 to 2) {
println(s"i = $i, j = $j")
}
}
}এখানে nested loop ব্যবহার করা হয়েছে, যা দুটি ভিন্ন রেঞ্জের উপর লুপ চালায়।
৪. while (while loop)
while loop স্কালায় একটি সাধারণ লুপ কন্ট্রোল স্ট্রাকচার যা নির্দিষ্ট শর্ত পূর্ণ না হওয়া পর্যন্ত চালানো হয়।
উদাহরণ:
object WhileLoopExample {
def main(args: Array[String]): Unit = {
var i = 1
while (i <= 5) {
println(i)
i += 1
}
}
}- while: শর্ত পর্যালোচনা করে, এবং যতক্ষণ শর্ত সত্য থাকবে ততক্ষণ পর্যন্ত লুপ চালিয়ে যাবে।
- i += 1:
iএর মান এক এক করে বাড়ানো হচ্ছে।
উদাহরণ (অনন্ত লুপ এবং ব্রেক):
object InfiniteLoop {
def main(args: Array[String]): Unit = {
var i = 1
while (true) {
println(i)
i += 1
if (i > 5) {
println("Breaking the loop!")
break
}
}
}
}এখানে, একটি infinite loop তৈরি করা হয়েছে এবং একটি শর্ত পূর্ণ হলে ব্রেক করা হচ্ছে।
সারাংশ
- if-else: শর্ত অনুযায়ী কোডের বিভিন্ন ব্লক নির্বাচন করে।
- match: জটিল শর্তাবলী বা মানের সাথে প্যাটার্ন ম্যাচিং করতে ব্যবহৃত হয়, এটি অনেক শক্তিশালী এবং লজিকাল।
- for loop: একটি রেঞ্জ বা কালেকশন এর উপাদানগুলির উপর লুপ চালাতে ব্যবহৃত হয়।
- while loop: শর্তসাপেক্ষে কোডের নির্দিষ্ট ব্লক পুনরায় চালাতে ব্যবহৃত হয়।
স্কালার কন্ট্রোল স্ট্রাকচারগুলি প্রোগ্রামিংয়ের কার্যকারিতা এবং কার্যক্ষমতা বৃদ্ধি করতে সহায়ক এবং এগুলির মাধ্যমে আপনি জটিল লজিক সহজে এবং সুন্দরভাবে লেখতে পারবেন।
Read more