স্কালাতে রেঞ্জ (Range) এমন একটি ডেটা স্ট্রাকচার যা একটি নির্দিষ্ট পরিসরের মধ্যে সিকোয়েন্স বা ক্রম তৈরি করতে ব্যবহৃত হয়। এটি একটি সহজ ও কার্যকরী উপায় যা নির্দিষ্ট সংখ্যার মধ্যে গণনা বা সিকোয়েন্স তৈরি করতে সাহায্য করে। রেঞ্জ সাধারণত ইনটিজার (Integer) পরিসরের মধ্যে হয় এবং এর মধ্যে কোনো একটি শুরু মান থেকে শেষ মান পর্যন্ত সংখ্যা গঠিত থাকে।
রেঞ্জের মৌলিক ধারণা:
স্কালাতে রেঞ্জ একটি ইমিউটেবল (immutable) সিকোয়েন্স, যা একটি নির্দিষ্ট পরিসরের মান প্রদান করে। এটি সাধারণত সংখ্যার ক্রম হিসেবে কাজ করে, যেমন ১ থেকে ১০ পর্যন্ত সংখ্যা।
রেঞ্জ তৈরি করার জন্য স্কালাতে দুটি পদ্ধতি ব্যবহৃত হয়:
to: এটি পরিসরের মধ্যে অন্তর্ভুক্ত শেষ মান সহ একটি রেঞ্জ তৈরি করে।until: এটি পরিসরের মধ্যে অন্তর্ভুক্ত শেষ মান ছাড়াই একটি রেঞ্জ তৈরি করে।
১. to অপারেটর (Inclusive Range):
to অপারেটরটি রেঞ্জের মধ্যে প্রথম মান থেকে শেষ মান পর্যন্ত অন্তর্ভুক্ত করে, অর্থাৎ শুরু থেকে শেষ মান পর্যন্ত।
উদাহরণ:
val range1 = 1 to 5 // 1, 2, 3, 4, 5
println(range1)এখানে, range1 একটি রেঞ্জ যা ১ থেকে ৫ পর্যন্ত সংখ্যাগুলি অন্তর্ভুক্ত করছে।
২. until অপারেটর (Exclusive Range):
until অপারেটরটি রেঞ্জের মধ্যে প্রথম মান থেকে শেষ মান পর্যন্ত, তবে শেষ মানটি অন্তর্ভুক্ত হয় না। অর্থাৎ, এটি একধাপ আগে পৌঁছে রেঞ্জ শেষ করে।
উদাহরণ:
val range2 = 1 until 5 // 1, 2, 3, 4
println(range2)এখানে, range2 একটি রেঞ্জ যা ১ থেকে ৪ পর্যন্ত সংখ্যা অন্তর্ভুক্ত করছে, কিন্তু ৫ অন্তর্ভুক্ত হচ্ছে না।
৩. স্টেপিং (Stepping) বা ধাপের সাথে রেঞ্জ:
রেঞ্জে আপনি স্টেপ বা ধাপও সেট করতে পারেন, যার মাধ্যমে সংখ্যাগুলি নির্দিষ্ট একটি ধাপে বৃদ্ধি পাবে। এটি by অপারেটর দিয়ে করা হয়।
উদাহরণ:
val range3 = 1 to 10 by 2 // 1, 3, 5, 7, 9
println(range3)এখানে, range3 একটি রেঞ্জ তৈরি করছে, যেখানে সংখ্যা ১ থেকে ১০ পর্যন্ত ২ ধাপে বাড়ছে। অর্থাৎ, ১, ৩, ৫, ৭, ৯ সংখ্যাগুলি থাকবে।
৪. নেগেটিভ রেঞ্জ:
রেঞ্জের মাধ্যমে আপনি নেগেটিভ সংখ্যাও তৈরি করতে পারেন। উদাহরণস্বরূপ, একটি নেগেটিভ রেঞ্জের মধ্যে আপনি নিম্নমান থেকে উচ্চমানের দিকে যেতে পারেন।
উদাহরণ:
val range4 = 10 to 1 by -1 // 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
println(range4)এখানে, range4 একটি রেঞ্জ তৈরি করছে যেখানে ১০ থেকে ১ পর্যন্ত ধাপে ধাপে সংখ্যা কমানো হচ্ছে।
৫. রেঞ্জে প্রয়োগ (Range Applications):
রেঞ্জ বিভিন্ন পরিস্থিতিতে ব্যবহৃত হতে পারে, যেমন:
- লুপে ব্যবহৃত: রেঞ্জের মাধ্যমে সহজেই লুপ করা যায়।
- ডেটা ম্যানিপুলেশন: একাধিক মানের মধ্যে কাজ করতে রেঞ্জ ব্যবহার করা হয়।
- গণনা: নির্দিষ্ট সংখ্যার মধ্যে গণনা বা হিসাব করতে রেঞ্জ খুবই সহায়ক।
উদাহরণ ১: লুপে রেঞ্জ ব্যবহার
for(i <- 1 to 5) {
println(s"Iteration: $i")
}এখানে, 1 to 5 রেঞ্জের মাধ্যমে ১ থেকে ৫ পর্যন্ত সংখ্যাগুলির উপর লুপ চলবে এবং প্রতিটি সংখ্যার জন্য প্রিন্ট স্টেটমেন্ট চলবে।
উদাহরণ ২: ডেটা ম্যানিপুলেশন
val numbers = 1 to 10
val squares = numbers.map(x => x * x) // সংখ্যা গুলোর বর্গফল
println(squares)এখানে, numbers রেঞ্জে থাকা প্রতিটি সংখ্যার বর্গফল বের করে squares নামক নতুন রেঞ্জ তৈরি করা হয়েছে।
সারাংশ:
রেঞ্জ একটি অত্যন্ত গুরুত্বপূর্ণ এবং শক্তিশালী ডেটা স্ট্রাকচার, যা স্কালাতে নির্দিষ্ট পরিসরের সংখ্যা বা মান তৈরি করতে ব্যবহৃত হয়। এটি to এবং until অপারেটরের মাধ্যমে সহজেই তৈরি করা যায় এবং by অপারেটর দিয়ে স্টেপ নির্ধারণ করা যায়। রেঞ্জগুলি বিভিন্ন ধাপে এবং রেঞ্জের মধ্যে সহজে গণনা, লুপিং এবং ডেটা ম্যানিপুলেশন করতে সহায়ক।
Read more