টিসিএল (Tcl) - Switch স্টেটমেন্টের ব্যবহার
টিসিএল (Tcl) এ switch স্টেটমেন্ট ব্যবহার করে একাধিক শর্তের মধ্যে যেকোনো একটি শর্তের সাথে মিলে যাওয়ার পর কার্যকরী কমান্ড চালানো হয়। এটি if-else স্টেটমেন্টের মতো কাজ করে, তবে বেশি সংখ্যক শর্ত নিয়ে কাজ করার সময় switch অনেক বেশি পরিষ্কার এবং সহজ হয়।
switch স্টেটমেন্টে একটি মান পরীক্ষা করা হয় এবং সেটির সাথে মিলিয়ে নির্দিষ্ট কোড ব্লক চালানো হয়।
১. সাধারণ সিঙ্গেল এক্সপ্রেশন switch
switch স্টেটমেন্টে একটি একক মান বা এক্সপ্রেশন পরীক্ষিত হয়, এবং সেটি যে কেসের সাথে মিলে যাবে সেই কেসে গিয়ে কমান্ডটি চালানো হয়।
সাধারণ সিনট্যাক্স:
switch expression {
pattern1 { command1 }
pattern2 { command2 }
pattern3 { command3 }
default { command_default }
}এখানে:
expressionহলো সেই মান বা এক্সপ্রেশন যা পরীক্ষা করা হবে।pattern1,pattern2,pattern3হল সেই প্যাটার্ন বা মান যা এক্সপ্রেশনটির সাথে মিলিয়ে যাবে।command1,command2,command3হল সেই কমান্ড যা প্রতিটি প্যাটার্ন মিললে চলবে।defaultহল একটি বিকল্প কেস, যদি কোন প্যাটার্নের সাথে মিল না পাওয়া যায়, তখনdefaultঅংশের কমান্ডটি চালানো হয়।
২. সাধারণ উদাহরণ (Single Value Switch)
set x 2
switch $x {
1 { puts "Value is 1" }
2 { puts "Value is 2" }
3 { puts "Value is 3" }
default { puts "Unknown value" }
}এখানে, $x এর মান 2, তাই আউটপুট হবে:
Value is 2যদি $x এর মান ১ বা ৩ না হয়ে অন্য কিছু হতো, তবে default এর কমান্ড "Unknown value" আউটপুট হতো।
৩. প্যাটার্নের মধ্যে রেঞ্জ ব্যবহার
switch স্টেটমেন্টে আপনি রেঞ্জ ব্যবহার করতে পারেন, যেখানে একটি সংখ্যা রেঞ্জ দিয়ে কেসগুলি পরীক্ষা করা হয়।
উদাহরণ:
set x 15
switch -regexp $x {
{1|2|3} {puts "Value is between 1 and 3"}
{4|5|6} {puts "Value is between 4 and 6"}
default {puts "Value is outside the range"}
}এখানে, switch -regexp কমান্ডটি $x এর মান পরীক্ষা করবে এবং যদি $x মান ১, ২, অথবা ৩ হয়, তাহলে "Value is between 1 and 3" আউটপুট হবে। যদি এটি ৪, ৫, অথবা ৬ হয়, "Value is between 4 and 6" আউটপুট হবে, এবং অন্য কিছু হলে "Value is outside the range"।
৪. লিস্টের মধ্যে মিল খোঁজা
আপনি লিস্ট ব্যবহার করে একাধিক মানের মধ্যে তুলনা করতে পারেন। এই পদ্ধতিতে যদি এক্সপ্রেশনটি কোন লিস্টের একটি উপাদানের সাথে মেলে, তাহলে সেই কেসের কমান্ড চালানো হয়।
উদাহরণ:
set day "Tuesday"
switch $day {
"Monday" { puts "Start of the workweek" }
"Tuesday" { puts "Second day of the workweek" }
"Wednesday" { puts "Midweek" }
"Thursday" { puts "Almost Friday" }
"Friday" { puts "Last day of the workweek" }
default { puts "Weekend!" }
}এখানে, $day এর মান "Tuesday", তাই আউটপুট হবে:
Second day of the workweek৫. ব্রেক ব্যবহার
switch স্টেটমেন্টে break ব্যবহার করা সম্ভব নয়, কারণ এটি স্বয়ংক্রিয়ভাবে কেসগুলোর মধ্যে থেকে বের হয়ে যায় যখন মিল খুঁজে পায়।
৬. স্পেসিফিক প্যাটার্ন (Pattern Matching)
switch স্টেটমেন্টে প্যাটার্ন মেলানোর জন্য বেশ কিছু বিশেষ কিওয়ার্ড ব্যবহার করা যায়:
-exact: প্যাটার্ন মেলা হলে সঠিক মানটি নির্বাচন করা হয়।-glob: গ্লোব প্যাটার্ন মেলানো হয় (যেমন*,?ইত্যাদি ব্যবহার করা হয়)।-regexp: একটি নিয়মিত অভিব্যক্তি (Regular Expression) ব্যবহার করা হয়।
উদাহরণ (প্যাটার্ন মেলানো - glob):
set filename "example.txt"
switch -glob $filename {
"*.txt" { puts "This is a text file." }
"*.jpg" { puts "This is an image file." }
default { puts "Unknown file type." }
}এখানে, switch -glob ব্যবহার করে ফাইল এক্সটেনশন চেক করা হচ্ছে এবং তারপরে সংশ্লিষ্ট আউটপুট দেওয়া হচ্ছে।
উদাহরণ (প্যাটার্ন মেলানো - regexp):
set text "hello123"
switch -regexp $text {
"hello[0-9]+" { puts "Text starts with 'hello' and is followed by numbers." }
default { puts "Text doesn't match the pattern." }
}এখানে, switch -regexp ব্যবহার করে "hello123" স্ট্রিংয়ের সাথে নিয়মিত অভিব্যক্তি মিলানো হচ্ছে এবং আউটপুট "Text starts with 'hello' and is followed by numbers." পাওয়া যাবে।
উপসংহার
টিসিএল-এর switch স্টেটমেন্ট একটি শক্তিশালী এবং কার্যকরী উপায় যাতে একাধিক শর্তের মধ্যে সহজেই সিদ্ধান্ত নেওয়া যায়। এটি if-else স্টেটমেন্টের তুলনায় পরিষ্কার এবং দ্রুত হয়, বিশেষত যখন একাধিক প্যাটার্ন এবং মান পরীক্ষা করতে হয়। exact, glob, এবং regexp প্যাটার্নের মাধ্যমে আপনি অনেক ধরনের শর্ত পরীক্ষা করতে পারেন। switch স্টেটমেন্ট ব্যবহার করার সময় এটি কোডের পাঠযোগ্যতা এবং কার্যকারিতা বাড়ায়।
Read more