রুবি একটি ডাইনামিক, অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ভাষা এবং এর সিনট্যাক্স অত্যন্ত সহজ ও পঠনযোগ্য। রুবি কোড লেখার জন্য কিছু মৌলিক নিয়ম এবং স্টাইল রয়েছে। নিচে রুবির বেসিক সিনট্যাক্সের কিছু গুরুত্বপূর্ণ দিক তুলে ধরা হলো।
১. ভেরিয়েবল ডিফাইন করা (Defining Variables)
রুবিতে ভেরিয়েবল ঘোষণা করতে টাইপ নির্ধারণের প্রয়োজন নেই। আপনি সরাসরি ভেরিয়েবল নাম দিয়ে মান অ্যাসাইন করতে পারেন।
name = "আজিজ"
age = 25এখানে name একটি স্ট্রিং ভেরিয়েবল এবং age একটি ইন্টিজার ভেরিয়েবল।
২. কনস্ট্যান্ট (Constants)
রুবিতে কনস্ট্যান্টের নাম সাধারণত বড় অক্ষরে লেখা হয় এবং একবার মান অ্যাসাইন করা হলে, তা পরিবর্তন করা উচিত নয়।
PI = 3.14159এখানে PI একটি কনস্ট্যান্ট এবং এর মান পরিবর্তন করা উচিত নয়।
৩. কোড ব্লক (Code Blocks)
রুবি একটি ব্লক-ভিত্তিক ভাষা, যেখানে কোডের অংশগুলো {} বা do...end দিয়ে গ্রুপ করা হয়। কোড ব্লকগুলি সাধারণত লুপ এবং ফাংশন ডেফিনিশনের মধ্যে ব্যবহৃত হয়।
# Using braces
[1, 2, 3].each { |num| puts num }
# Using do...end
[1, 2, 3].each do |num|
puts num
endএখানে each মেথডের মাধ্যমে ব্লক কার্যকর হয় এবং num এর মান প্রতি ইটারেশন অনুযায়ী প্রিন্ট হয়।
৪. শর্ত (Conditions)
রুবিতে শর্ত তৈরি করতে if, else, elsif ব্যবহার করা হয়।
age = 20
if age >= 18
puts "You are an adult"
else
puts "You are a minor"
endএখানে, যদি age ১৮ বা তার বেশি হয়, তাহলে "You are an adult" মেসেজটি প্রিন্ট হবে, অন্যথায় "You are a minor" প্রিন্ট হবে।
৫. লুপ (Loops)
রুবি বিভিন্ন ধরনের লুপ সমর্থন করে। while, for, এবং each ইত্যাদি ব্যবহৃত হয়।
while লুপ
i = 0
while i < 5
puts i
i += 1
endfor লুপ
for i in 0..4
puts i
endeach লুপ
[1, 2, 3].each do |num|
puts num
end৬. ফাংশন (Functions)
রুবিতে ফাংশন ডিফাইন করা সহজ। আপনি def কিওয়ার্ড দিয়ে ফাংশন তৈরি করতে পারেন।
def greet(name)
return "Hello, #{name}!"
end
puts greet("আজিজ")এখানে greet ফাংশন name আর্গুমেন্ট নেয় এবং একটি স্ট্রিং রিটার্ন করে।
৭. অ্যারেজ (Arrays) এবং হ্যাশ (Hashes)
রুবিতে অ্যারে এবং হ্যাশ ডেটা স্ট্রাকচার ব্যবহার করা হয়।
অ্যারে
fruits = ["Apple", "Banana", "Orange"]
puts fruits[0] # Appleহ্যাশ
person = { "name" => "আজিজ", "age" => 25 }
puts person["name"] # আজিজএখানে, fruits একটি অ্যারে এবং person একটি হ্যাশ। অ্যারে ইন্ডেক্সের মাধ্যমে এবং হ্যাশ কির-ভ্যালু পেয়ার দিয়ে অ্যাক্সেস করা হয়।
৮. কমেন্ট (Comments)
রুবিতে একক লাইনে কমেন্ট লিখতে # চিহ্ন ব্যবহার করা হয়।
# This is a comment
puts "Hello, World!" # This prints a message৯. শ্রেণী (Classes) এবং অবজেক্ট (Objects)
রুবি একটি অবজেক্ট-অরিয়েন্টেড ভাষা, তাই এখানে শ্রেণী এবং অবজেক্ট তৈরি করা হয়।
class Person
def initialize(name, age)
@name = name
@age = age
end
def greet
puts "Hello, #{@name}. You are #{@age} years old."
end
end
person1 = Person.new("আজিজ", 25)
person1.greetএখানে Person শ্রেণী তৈরি করা হয়েছে, যার মধ্যে initialize মেথডের মাধ্যমে অবজেক্ট ইনিশিয়ালাইজ করা হয় এবং greet মেথডের মাধ্যমে একটি বার্তা প্রিন্ট করা হয়।
১০. এক্সপ্রেশন ইন সিটি (String Interpolation)
রুবিতে স্ট্রিং ইন্টারপোলেশন ব্যবহারের মাধ্যমে ভেরিয়েবলের মান স্ট্রিংয়ের মধ্যে সহজেই যুক্ত করা যায়।
name = "আজিজ"
puts "Hello, #{name}!" # Output: Hello, আজিজ!এখানে #{name} ব্যবহার করে স্ট্রিংয়ের মধ্যে ভেরিয়েবল name এর মান প্রবেশ করা হয়েছে।
সারসংক্ষেপ
রুবির সিনট্যাক্স খুবই সহজ এবং পরিষ্কার। এর সহজ কোডিং স্টাইল নতুন প্রোগ্রামারদের জন্য উপযোগী এবং পঠনযোগ্য। আপনি সহজেই ভেরিয়েবল ডিফাইন করতে পারেন, শর্ত লিখতে পারেন, ফাংশন তৈরি করতে পারেন এবং অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং (OOP) ধারণা ব্যবহার করে কোড লিখতে পারেন।
রুবি একটি উচ্চ স্তরের, ডাইনামিক এবং অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং ভাষা। রুবির কোড স্ট্রাকচার অত্যন্ত সোজা এবং সহজবোধ্য, যা নতুন প্রোগ্রামারদের জন্য কোড লেখাকে আরও সহজ করে তোলে। রুবি ভাষায় কোড লেখার জন্য কিছু মৌলিক নিয়ম এবং কনভেনশন অনুসরণ করতে হয়, যেগুলি নিচে বিস্তারিতভাবে আলোচনা করা হলো।
১. বেসিক কোড স্ট্রাকচার
রুবির কোড স্ট্রাকচার খুবই সহজ এবং সোজা, যেখানে সাধারণত পরবর্তী স্টেটমেন্টগুলি "নিউ লাইন" দিয়ে আলাদা করা হয়। রুবিতে সেমিকোলন ; এর ব্যবহার প্রয়োজনীয় নয়, তবে যদি এক লাইনে একাধিক স্টেটমেন্ট থাকে তবে সেমিকোলন ব্যবহার করা যেতে পারে।
উদাহরণ:
puts "Hello, World!" # এটি একটি সাধারণ স্টেটমেন্ট২. ভেরিয়েবল ডিক্লেয়ারেশন
রুবিতে ভেরিয়েবল ঘোষণা করতে টাইপ নির্ধারণের প্রয়োজন নেই, এবং এটি স্বয়ংক্রিয়ভাবে ডেটার টাইপ চিহ্নিত করে।
উদাহরণ:
name = "আজিজ"
age = 25
is_active = trueএখানে name, age, এবং is_active ভেরিয়েবলগুলো ডাইনামিকভাবে টাইপ করা হয়েছে।
৩. ফাংশন (Methods)
রুবিতে ফাংশন তৈরি করার জন্য def কিওয়ার্ড ব্যবহার করা হয়, এবং ফাংশনটি end দিয়ে শেষ হয়।
উদাহরণ:
def greet(name)
puts "Hello, #{name}!"
end
greet("আজিজ") # এটি "Hello, আজিজ!" আউটপুট করবেএখানে greet হল একটি ফাংশন, যেটি একটি প্যারামিটার নেয় এবং প্যারামিটারটি ব্যবহার করে একটি স্ট্রিং আউটপুট করে।
৪. কন্ডিশনাল স্টেটমেন্ট (Conditional Statements)
রুবি if, elsif, এবং else কন্ডিশনাল স্টেটমেন্ট সমর্থন করে। রুবিতে কোন্ডিশনাল স্টেটমেন্ট খুব সহজে লেখা যায়।
উদাহরণ:
age = 20
if age > 18
puts "You are an adult."
else
puts "You are a minor."
endএখানে, রুবি প্রথমে চেক করবে যে age ১৮ এর বেশি কিনা। যদি তাই হয়, তবে "You are an adult." মেসেজটি আউটপুট হবে, নাহলে "You are a minor." মেসেজটি আউটপুট হবে।
৫. লুপস (Loops)
রুবি বিভিন্ন ধরনের লুপ সমর্থন করে, যেমন while, for, এবং each। each লুপটি একটি অ্যারে বা হ্যাশের মাধ্যমে প্রতিটি আইটেমকে প্রক্রিয়া করতে ব্যবহৃত হয়।
উদাহরণ:
# while loop
i = 0
while i < 5
puts i
i += 1
end
# each loop
[1, 2, 3, 4, 5].each do |number|
puts number
endএখানে প্রথম লুপটি একটি while লুপ এবং দ্বিতীয়টি একটি each লুপ। each লুপের মাধ্যমে আমরা অ্যারের প্রতিটি উপাদানটি প্রিন্ট করছি।
৬. অবজেক্ট এবং ক্লাস (Objects and Classes)
রুবি একটি পূর্ণাঙ্গ অবজেক্ট-অরিয়েন্টেড ভাষা, এবং এখানে ক্লাস তৈরি করা হয় class কিওয়ার্ড দিয়ে। প্রতিটি ক্লাসের মধ্যে প্রপার্টি (ভেরিয়েবল) এবং মেথড (ফাংশন) থাকে।
উদাহরণ:
class Person
def initialize(name, age)
@name = name
@age = age
end
def introduce
puts "Hi, my name is #{@name} and I am #{@age} years old."
end
end
person = Person.new("আজিজ", 25)
person.introduce # এটি আউটপুট করবে "Hi, my name is আজিজ and I am 25 years old."এখানে, Person নামে একটি ক্লাস তৈরি করা হয়েছে, যার মধ্যে একটি initialize মেথড রয়েছে, যা কনস্ট্রাক্টরের মতো কাজ করে, এবং একটি introduce মেথড রয়েছে যা ব্যক্তির পরিচয় দেয়।
৭. এ্যারেগেট (Arrays) এবং হ্যাশ (Hashes)
রুবিতে এ্যারেগেট এবং হ্যাশ সহজেই ব্যবহৃত হয়। এ্যারেগেটের মধ্যে একাধিক উপাদান রাখা যায় এবং হ্যাশে কী-ভ্যালু পেয়ার থাকে।
উদাহরণ:
এ্যারেগেট:
fruits = ["apple", "banana", "cherry"]
puts fruits[1] # এটি "banana" আউটপুট করবেহ্যাশ:
person = { "name" => "আজিজ", "age" => 25 }
puts person["name"] # এটি "আজিজ" আউটপুট করবেএখানে, fruits একটি অ্যারে এবং person একটি হ্যাশ। অ্যারে এক ধরনের সিকোয়েন্স আকারে উপাদান ধারণ করে, এবং হ্যাশ কী-ভ্যালু পেয়ার হিসেবে তথ্য রাখে।
সারসংক্ষেপ
রুবি একটি সোজা এবং পরিষ্কার কোড স্ট্রাকচার সরবরাহ করে। এর কোড লেখার জন্য:
- ভেরিয়েবল ডিক্লেয়ার করার জন্য টাইপ নির্ধারণের প্রয়োজন নেই।
- ফাংশন তৈরি করতে
defএবং শেষ করতেendব্যবহার করা হয়। - কন্ডিশনাল স্টেটমেন্ট ব্যবহার করতে
if,elsif,elseব্যবহার করা হয়। - লুপস (যেমন
while,each) ব্যবহার করে কোড পুনরাবৃত্তি করা যায়। - অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং এর মাধ্যমে ক্লাস এবং অবজেক্ট তৈরি করা হয়।
রুবির কোড স্ট্রাকচার সহজ এবং বোধগম্য, যা কোডিংয়ের জন্য আরও প্রাঞ্জল অভিজ্ঞতা প্রদান করে।
প্রোগ্রামিং ভাষার মধ্যে Variables এবং Constants দুটি মৌলিক ধারণা, যা প্রোগ্রাম লেখার সময় ডেটা সংরক্ষণ এবং পরিচালনা করতে ব্যবহৃত হয়। Ruby প্রোগ্রামিং ভাষায় এগুলোর ব্যবহার খুবই গুরুত্বপূর্ণ, এবং এইগুলো প্রোগ্রামের মধ্যে ডেটার মান পরিবর্তন বা অপরিবর্তিত রাখা নির্ধারণ করে।
১. Variables (ভেরিয়েবলস)
ভেরিয়েবলস হল নামকৃত সঞ্চয়স্থান যেখানে প্রোগ্রাম চলাকালীন ডেটা সংরক্ষিত থাকে। ভেরিয়েবলগুলির মান পরিবর্তনযোগ্য (mutable) এবং আপনি তাদের মান যেকোনো সময়ে পরিবর্তন করতে পারবেন। রুবি ভাষায় ভেরিয়েবল তিনটি ধরনের হতে পারে: local, instance, এবং global।
১.১ Local Variables (লোকাল ভেরিয়েবলস)
লোকাল ভেরিয়েবল সাধারণত একটি ফাংশন বা মেথডের মধ্যে ব্যবহার করা হয় এবং সেই ব্লকের বাইরে তাদের ব্যবহার করা সম্ভব নয়। লোকাল ভেরিয়েবল নামের প্রথম অক্ষর ছোট (lowercase) হতে হবে।
উদাহরণ:
def greeting
name = "আজিজ" # লোকাল ভেরিয়েবল
puts "Hello, #{name}!"
end
greeting # আউটপুট: Hello, আজিজ!১.২ Instance Variables (ইনস্ট্যান্স ভেরিয়েবলস)
ইনস্ট্যান্স ভেরিয়েবল অবজেক্টের জন্য বিশেষভাবে ব্যবহৃত হয়। এগুলি সাধারণত @ চিহ্ন দিয়ে চিহ্নিত হয় এবং একটি ক্লাসের মধ্যে ডেটা সংরক্ষণ করতে ব্যবহার করা হয়। এগুলির মান প্রোগ্রামের যেকোনো স্থানে পরিবর্তন করা সম্ভব।
উদাহরণ:
class Person
def initialize(name)
@name = name # ইনস্ট্যান্স ভেরিয়েবল
end
def greet
puts "Hello, #{@name}!"
end
end
person = Person.new("আজিজ")
person.greet # আউটপুট: Hello, আজিজ!১.৩ Global Variables (গ্লোবাল ভেরিয়েবলস)
গ্লোবাল ভেরিয়েবল যেকোনো স্থানে ব্যবহৃত হতে পারে, তবে এগুলি ব্যবহারে সতর্ক থাকা উচিত কারণ এগুলি কোডের অন্যান্য অংশকে প্রভাবিত করতে পারে। গ্লোবাল ভেরিয়েবল নামের প্রথম অক্ষর $ দিয়ে চিহ্নিত হয়।
উদাহরণ:
$global_var = "Global Variable"
def show_global
puts $global_var
end
show_global # আউটপুট: Global Variable২. Constants (কনস্ট্যান্টস)
কনস্ট্যান্টস হল এমন ভেরিয়েবল, যাদের মান একবার নির্ধারণ করার পর পরিবর্তন করা উচিত নয়। কনস্ট্যান্টসের নামের প্রথম অক্ষর বড় (uppercase) হতে হবে এবং এগুলি সাধারণত প্রোগ্রামের মধ্যে অপরিবর্তনীয় ডেটা সংরক্ষণে ব্যবহৃত হয়।
২.১ Ruby Constants
রুবি ভাষায় কনস্ট্যান্টস সাধারণত কনস্ট্যান্টের মান একবার সেট করার পর পরবর্তী সময়ে পরিবর্তন করা উচিত নয়। যদিও রুবি কনস্ট্যান্টের মান পরিবর্তন করতে দেয়, তবে এটি একটি সতর্কবার্তা দেখায়।
উদাহরণ:
PI = 3.14159 # কনস্ট্যান্ট
puts PI # আউটপুট: 3.14159
# কনস্ট্যান্টের মান পরিবর্তন করলে সতর্কবার্তা দেখাবে
PI = 3.14 # সতর্কবার্তা: already initialized constant PI
puts PI # আউটপুট: 3.14২.২ Class Constants (ক্লাস কনস্ট্যান্টস)
ক্লাসের মধ্যে কনস্ট্যান্ট ডিফাইন করা হয় এবং এগুলি ক্লাসের ভিতরে অপরিবর্তনীয় মান রাখে।
উদাহরণ:
class Circle
PI = 3.14159 # ক্লাস কনস্ট্যান্ট
def self.area(radius)
PI * radius * radius
end
end
puts Circle::PI # আউটপুট: 3.14159
puts Circle.area(5) # আউটপুট: 78.53975৩. Variables এবং Constants এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Variables | Constants |
|---|---|---|
| মান পরিবর্তনযোগ্য | হ্যাঁ, ভেরিয়েবলের মান পরিবর্তন করা যায় | না, কনস্ট্যান্টের মান একবার নির্ধারণের পর পরিবর্তন করা উচিত নয় |
| নামকরণ | ছোট অক্ষর দিয়ে শুরু হয় (e.g., name) | বড় অক্ষর দিয়ে শুরু হয় (e.g., PI) |
| ব্যবহার | সাধারণত চলমান ডেটা সংরক্ষণ এবং প্রোগ্রাম নিয়ন্ত্রণে ব্যবহৃত হয় | অপরিবর্তনীয় মান সংরক্ষণে ব্যবহৃত হয় |
| রেঞ্জ | লোকাল, ইনস্ট্যান্স, বা গ্লোবাল হতে পারে | সাধারণত গ্লোবাল বা ক্লাস লেভেলে থাকে |
সারসংক্ষেপ
- ভেরিয়েবলস (Variables) প্রোগ্রামের চলমান ডেটা সংরক্ষণে ব্যবহৃত হয় এবং এগুলির মান সময় অনুযায়ী পরিবর্তিত হতে পারে।
- কনস্ট্যান্টস (Constants) অপরিবর্তনীয় মান সংরক্ষণে ব্যবহৃত হয়, যা একবার নির্ধারণ করার পর পরিবর্তন করা উচিত নয়।
রুবি ভাষায় ভেরিয়েবলস এবং কনস্ট্যান্টসের ব্যবহার প্রোগ্রামিংয়ে কোডের কার্যকারিতা এবং আস্থা বজায় রাখতে সহায়তা করে।
রুবি একটি ডাইনামিক এবং অবজেক্ট-অরিয়েন্টেড ভাষা, যেখানে Numbers, Strings, এবং Symbols বিভিন্ন ধরনের ডেটা টাইপ হিসাবে ব্যবহৃত হয়। প্রতিটি ডেটা টাইপের নিজস্ব বৈশিষ্ট্য এবং ব্যবহার রয়েছে। নিচে প্রতিটি ডেটা টাইপের বিস্তারিত আলোচনা করা হলো।
১. Numbers (সংখ্যা)
রুবিতে Numbers প্রধানত দুটি ধরনের হয়ে থাকে:
- Integer (পূর্ণসংখ্যা)
- Float (ভাসমান দশমিক সংখ্যা)
Integer (পূর্ণসংখ্যা)
পুরো সংখ্যা (যেমন ১, ২৫, -৩২) কে Integer বলা হয়।
a = 25 # Integer
b = -10 # Negative IntegerFloat (ভাসমান দশমিক সংখ্যা)
ভাসমান দশমিক সংখ্যা (যেমন 3.14, -0.56, 100.0) কে Float বলা হয়।
x = 3.14 # Float
y = -0.56 # Negative Floatগণনা অপারেশন
রুবিতে আপনি সাধারণ গণনা অপারেশন যেমন যোগ, বিয়োগ, গুণ, ভাগ করতে পারেন:
sum = 10 + 5 # 15
difference = 10 - 3 # 7
product = 4 * 5 # 20
quotient = 10 / 2 # 5২. Strings (স্ট্রিং)
Strings হচ্ছে এমন একটি ডেটা টাইপ যা টেক্সট ডেটা ধারণ করে। রুবিতে স্ট্রিং ডাবল কোট (") বা সিঙ্গেল কোট (') এর মধ্যে লেখা হয়।
স্ট্রিং তৈরি করা
greeting = "Hello, World!" # Double quotes
name = 'John' # Single quotesস্ট্রিং এর কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য:
- Concatenation (সংযুক্তকরণ): স্ট্রিংগুলো একত্রিত করতে
+চিহ্ন ব্যবহার করা হয়।
first_name = "John"
last_name = "Doe"
full_name = first_name + " " + last_name # Concatenation
puts full_name # Output: John Doe- Interpolation: স্ট্রিংয়ের মধ্যে ভেরিয়েবল ব্যবহার করার জন্য ইন্টারপোলেশন ব্যবহার করা হয়, যা
#{}এর মধ্যে লেখা হয়।
name = "John"
greeting = "Hello, #{name}!" # String interpolation
puts greeting # Output: Hello, John!স্ট্রিং মেথড
রুবিতে স্ট্রিংয়ের উপর নানা ধরনের মেথড প্রয়োগ করা যায়। যেমন:
.upcase- স্ট্রিংকে বড় হাতের অক্ষরে রূপান্তর করে।.downcase- ছোট হাতের অক্ষরে রূপান্তর করে।
puts "hello".upcase # Output: HELLO
puts "WORLD".downcase # Output: world৩. Symbols (সিম্বল)
Symbols হল রুবির একটি বিশেষ ডেটা টাইপ, যা সাধারণত কনস্ট্যান্ট বা কী হিসেবে ব্যবহৃত হয়। সিম্বলগুলো একটি বিশেষ ধরনের অবজেক্ট, যা ইমিউটেবল (immutable) অর্থাৎ একবার তৈরি হলে তা পরিবর্তিত হয় না।
সিম্বল তৈরি করা
রুবিতে সিম্বল সাধারণত একটি কলন : দিয়ে শুরু হয় এবং তার পর নাম দেওয়া হয়।
symbol1 = :name
symbol2 = :ageসিম্বল এবং স্ট্রিং এর মধ্যে পার্থক্য
- স্ট্রিং পরিবর্তনযোগ্য, কিন্তু সিম্বল পরিবর্তনযোগ্য নয়।
- সিম্বল তুলনা করা স্ট্রিংয়ের তুলনায় দ্রুত হয়, কারণ সিম্বল শুধুমাত্র একবার মেমোরিতে রাখা হয়, যখন স্ট্রিং বারবার মেমোরিতে নতুন কপি তৈরি হতে পারে।
string1 = "hello"
string2 = "hello"
puts string1.object_id == string2.object_id # Output: false (different object IDs)
symbol1 = :hello
symbol2 = :hello
puts symbol1.object_id == symbol2.object_id # Output: true (same object ID)সিম্বল ব্যবহারের কিছু সাধারণ ক্ষেত্র:
- সিম্বল সাধারণত ডেটাবেসের কীরূপে (key) ব্যবহার করা হয়।
- রুবির হ্যাশে কী হিসেবে সিম্বল ব্যবহার করা হয়, কারণ এটি দ্রুত এবং মেমোরি দক্ষ।
person = { name: "John", age: 30 }
puts person[:name] # Output: Johnসারসংক্ষেপ
- Numbers (সংখ্যা): রুবিতে দুই ধরনের সংখ্যা থাকে — পূর্ণসংখ্যা (Integer) এবং ভাসমান দশমিক সংখ্যা (Float), যেগুলো গণনার জন্য ব্যবহৃত হয়।
- Strings (স্ট্রিং): টেক্সট ডেটা ধারণ করতে ব্যবহৃত হয়, যা ডাবল কোট বা সিঙ্গেল কোটে রাখা হয়। স্ট্রিংয়ে ইন্টারপোলেশন ও যোগফল করা যায়।
- Symbols (সিম্বল): একটি বিশেষ ধরনের অবজেক্ট যা সাধারণত কী হিসেবে ব্যবহৃত হয়। এটি পরিবর্তনযোগ্য নয় এবং দ্রুত তুলনা করা যায়।
এই তিনটি ডেটা টাইপ রুবি প্রোগ্রামিং ভাষার মৌলিক উপাদান এবং সেগুলোর ব্যবহার আপনার কোডিং দক্ষতা উন্নত করতে সহায়ক।
রুবি প্রোগ্রামিং ভাষায় বিভিন্ন ধরনের অপারেটর রয়েছে, যা ডেটার সাথে বিভিন্ন কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। অপারেটরগুলি মূলত তিনটি শ্রেণিতে ভাগ করা যায়: অ্যাথমেটিক অপারেটরস (Arithmetic Operators), কম্প্যারিজন অপারেটরস (Comparison Operators), এবং **লজিকাল অপারেটরস (Logical Operators)**।
১. Arithmetic Operators (গণনা অপারেটর)
গণনা অপারেটরগুলি সাধারণ গাণিতিক অপারেশন যেমন যোগ, বিয়োগ, গুণ, ভাগ ইত্যাদি করতে ব্যবহৃত হয়।
| অপারেটর | বর্ণনা | উদাহরণ |
|---|---|---|
+ | যোগ | 5 + 3 → 8 |
- | বিয়োগ | 5 - 3 → 2 |
* | গুণ | 5 * 3 → 15 |
/ | ভাগ | 5 / 3 → 1.6667 |
% | মডুলাস (বাকী) | 5 % 3 → 2 |
** | ঘাত (Exponentiation) | 2 ** 3 → 8 |
উদাহরণ:
irb(main):001:0> 10 + 5
=> 15
irb(main):002:0> 10 - 5
=> 5
irb(main):003:0> 10 * 5
=> 50
irb(main):004:0> 10 / 3
=> 3.3333333333333335
irb(main):005:0> 10 % 3
=> 1
irb(main):006:0> 2 ** 3
=> 8২. Comparison Operators (তুলনা অপারেটর)
তুলনা অপারেটরগুলি দুটি মানের মধ্যে তুলনা করে এবং সাধারণত একটি বুলিয়ান (true/false) ফলাফল প্রদান করে।
| অপারেটর | বর্ণনা | উদাহরণ |
|---|---|---|
== | সমান | 5 == 5 → true |
!= | অসমান | 5 != 3 → true |
> | বড় | 5 > 3 → true |
< | ছোট | 5 < 3 → false |
>= | বড় বা সমান | 5 >= 5 → true |
<= | ছোট বা সমান | 5 <= 3 → false |
উদাহরণ:
irb(main):007:0> 5 == 5
=> true
irb(main):008:0> 5 != 3
=> true
irb(main):009:0> 5 > 3
=> true
irb(main):010:0> 5 < 3
=> false
irb(main):011:0> 5 >= 5
=> true
irb(main):012:0> 5 <= 3
=> false৩. Logical Operators (লজিকাল অপারেটর)
লজিকাল অপারেটরগুলি দুটি বা তার বেশি শর্ত বা মানের মধ্যে লজিক্যাল সম্পর্ক স্থাপন করতে ব্যবহৃত হয়। এটি মূলত বুলিয়ান (true/false) মানের সাথে কাজ করে।
| অপারেটর | বর্ণনা | উদাহরণ |
|---|---|---|
&& | AND (যদি দুটি শর্ত সত্য হয়, তবে ফলাফল সত্য হবে) | (5 > 3) && (7 > 5) → true |
| ` | ` | |
! | NOT (শর্তের বিপরীত মান প্রদান) | !(5 > 3) → false |
উদাহরণ:
irb(main):013:0> (5 > 3) && (7 > 5)
=> true
irb(main):014:0> (5 > 3) || (2 > 5)
=> true
irb(main):015:0> !(5 > 3)
=> falseসারসংক্ষেপ
- অ্যাথমেটিক অপারেটরস গণনা সম্পর্কিত সব ধরনের কার্যক্রম সম্পাদন করতে ব্যবহৃত হয় যেমন যোগ, বিয়োগ, গুণ, ভাগ ইত্যাদি।
- কম্প্যারিজন অপারেটরস ব্যবহারকারীর দ্বারা প্রদান করা দুটি মানের মধ্যে তুলনা করতে ব্যবহৃত হয় এবং ফলস্বরূপ একটি বুলিয়ান মান প্রদান করে (যেমন
trueবাfalse)। - লজিকাল অপারেটরস শর্তগুলো একসঙ্গে যুক্ত করতে ব্যবহৃত হয়। এগুলি সাধারণত বুলিয়ান অপারেশন সম্পাদন করে, যেমন
&&,||, এবং!।
এই অপারেটরগুলো রুবি প্রোগ্রামিং ভাষায় কোডিংয়ের মৌলিক এবং অত্যন্ত গুরুত্বপূর্ণ অংশ হিসেবে ব্যবহৃত হয়।
Read more