Ruby-তে সবচেয়ে বেশি দেখা যায় এমন দুটি ধরনের সংখ্যা হলো:
-6, 0, 1, 25, 976 এবং 500000।-2.4, 0.1, 3.14, 16.984025 এবং 1024.0।এগুলো Integer এবং Float ক্লাসের মাধ্যমে বাস্তবায়িত হয়।
এই ক্লাসগুলোর এমন মেথড আছে যেগুলো একটি মানকে অন্যটিতে রূপান্তর করতে পারে। Integer সংখ্যা পূর্ণ একক পর্যন্ত নির্ভুল, অন্যদিকে Float-এর নির্ভুলতা ভগ্নাংশ পর্যন্ত বিস্তৃত:
Integer#to_f: একটি নতুন ফ্লোটে রূপান্তর করেFloat#ceil: নিকটতম ইন্টিজারে উপরের দিকে রাউন্ড করেFloat#floor: নিকটতম ইন্টিজারে নিচের দিকে রাউন্ড করেFloat#round: নিকটতম ইন্টিজারে রাউন্ড করেFloat#to_i: নিকটতম ইন্টিজারে ছেঁটে ফেলেRuby-তে ফ্লো কন্ট্রোল এক্সপ্রেশন নামে পরিচিত কিছু এক্সপ্রেশন আছে, যা দিয়ে প্রোগ্রাম কীভাবে চলবে তা নিয়ন্ত্রণ করা হয় এবং এরা একটি ট্রুথি বা ফলসি মান নেয়। ট্রুথি বা ফলসি মান তৈরি করতে যে অপারেটরগুলো ব্যবহার করা যায়, সেগুলোকে তুলনা অপারেটর বলা হয়।
প্রধানত দুটি কন্ট্রোল এক্সপ্রেশন আছে, যা দিয়ে নির্ধারিত হয় কোন কোড চলবে আর কোনটি চলবে না। অর্থাৎ কোন শাখাটি চলবে তাও এরা ঠিক করে।
এই দুটি হলো: if এবং unless এক্সপ্রেশন।
তুলনা অপারেটর দিয়ে মান তুলনা করা হয় এবং true বা false মান রিটার্ন করা হয়।
নিচের অপারেটরগুলো ব্যবহার করে তুলনা করতে দুটি মানকে একই টাইপের হতে হয়।
মান দুটি একই টাইপের না হলে কম্পাইলার একটি এরর ছুড়ে দেবে।
এখানে অপারেটরগুলোর একটি তালিকা এবং কখন তারা true মান দেয় তার উদাহরণ দেওয়া হলো:
| মেথড | বিবরণ | উদাহরণ |
|---|---|---|
| < | ছোট | 4 < 5 |
| <= | ছোট বা সমান | 4 <= 4 |
| > | বড় | 3 > 1 |
| >= | বড় বা সমান | 2 >= 2 |
আগে উল্লেখ করা অপারেটরগুলোর বিপরীতে, সমান এবং অসমান অপারেটর দিয়ে যেকোনো ধরনের মান তুলনা করা যায়।
== অপারেটর দিয়ে পরীক্ষা করা হয় দুটি মান সমান কি না, এবং এর মধ্যে মানের টাইপও পরীক্ষা করা হয়।
!= একইভাবে কাজ করে, তবে মান দুটি অসমান হলে এটি true রিটার্ন করে আর সমান হলে false রিটার্ন করে।
এখানে সমান ও অসমান অপারেটরগুলোর একটি তালিকা এবং কখন তারা true মান দেয় তার উদাহরণ দেওয়া হলো:
| মেথড | বিবরণ | উদাহরণ |
|---|---|---|
| == | সমান | 4 == 4 |
| != | সমান নয় | 5 != 4 |
if স্টেটমেন্টif স্টেটমেন্ট দিয়ে পরীক্ষা করা হয় প্রদত্ত শর্তটি "ট্রুথি" না "ফলসি"।
শর্তটি ট্রুথি হলে if স্টেটমেন্টের ভেতরের কোড চলবে।
একটি if স্টেটমেন্ট end কিওয়ার্ড দিয়ে শেষ হয়।
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
unless স্টেটমেন্টunless স্টেটমেন্ট প্রায় if স্টেটমেন্টের মতোই কাজ করে, তবে শর্তটি ফলসি হলে এটি unless স্টেটমেন্টের ভেতরের কোড চালায়।
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
else স্টেটমেন্টelse স্টেটমেন্ট if স্টেটমেন্টের সাথে একসাথে ব্যবহার করা যায়।
if শাখাটি চালানো না হলে else স্টেটমেন্ট চালানো হবে।
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
elsif স্টেটমেন্ট if স্টেটমেন্টের সাথে একসাথে ব্যবহার করা যায়।
if শাখাটি চালানো না হলে এবং elsif স্টেটমেন্টের শর্তটি ট্রুথি হলে elsif স্টেটমেন্ট চালানো হবে।
একাধিক elsif স্টেটমেন্ট একসাথে চেইন করা যায়, এবং প্রথম যে শর্তটি ট্রুথি হয় সেটিই চালানো হবে।
এছাড়াও if স্টেটমেন্টের শেষে একটি else স্টেটমেন্ট থাকতে পারে, যা আগের কোনো স্টেটমেন্ট ট্রু না হলে চলবে।
value = 1
if value != 1
"1 is not equal to 1"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"
এই অনুশীলনীতে আপনি একটি গাড়ির কারখানার অ্যাসেম্বলি লাইনের উৎপাদন বিশ্লেষণ করার কোড লিখবেন।
অ্যাসেম্বলি লাইনের গতি 0 (বন্ধ) থেকে 10 (সর্বোচ্চ) পর্যন্ত হতে পারে।
এর সবচেয়ে কম গতিতে (1), প্রতি ঘণ্টায় 221টি গাড়ি উৎপাদিত হয়।
গতি বাড়ার সাথে সাথে উৎপাদন সরলরৈখিকভাবে বাড়ে।
তাই গতি 4-এ সেট করা থাকলে, প্রতি ঘণ্টায় 4 * 221 = 884টি গাড়ি উৎপাদিত হওয়া উচিত।
তবে গতি আরও বাড়ালে ত্রুটিপূর্ণ গাড়ি তৈরি হওয়ার সম্ভাবনা বেড়ে যায়, যেগুলো পরে বাদ দিতে হয়।
নিচের টেবিলে দেখানো হয়েছে কীভাবে গতি সফলতার হারকে প্রভাবিত করে:
1 থেকে 4: 100% সফলতার হার।5 থেকে 8: 90% সফলতার হার।9: 80% সফলতার হার।10: 77% সফলতার হার।আপনার দুটি কাজ আছে।
অ্যাসেম্বলি লাইনের সফলতার হার হিসাব করে প্রতি ঘণ্টায় তার উৎপাদন হার বের করতে AssemblyLine#production_rate_per_hour মেথডটি ইমপ্লিমেন্ট করুন।
মনে রাখবেন, রিটার্ন করা মানটি Float-এর একটি ইনস্ট্যান্স।
AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4
প্রতি মিনিটে কতগুলো সম্পূর্ণ, কার্যকর গাড়ি উৎপাদিত হয় তা হিসাব করতে AssemblyLine#working_items_per_minute মেথডটি ইমপ্লিমেন্ট করুন।
মনে রাখবেন, রিটার্ন করা মানটি Integer-এর একটি ইনস্ট্যান্স।
AssemblyLine.new(6).working_items_per_minute
#=> 19
Exercism-এ সাইন আপ করুন, Ruby ট্র্যাকের 21টি কনসেপ্ট121টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।