লুয়া (Lua) প্রোগ্রামিং ভাষায় অপারেটরস বিভিন্ন ডেটা টাইপের মানের উপর বিভিন্ন ধরনের ক্রিয়া (operation) সম্পাদন করতে ব্যবহৃত হয়। লুয়া বিভিন্ন ধরনের অপারেটর সরবরাহ করে, যেমন অ্যারিথমেটিক অপারেটর, কম্প্যারিজন অপারেটর, লজিক্যাল অপারেটর, কনক্যাটেনেশন অপারেটর, এবং আরো অনেক। এই অপারেটরগুলো লুয়া ভাষায় কোড লেখা এবং ডেটার সাথে কাজ করা সহজ করে তোলে।
১. অ্যারিথমেটিক অপারেটরস (Arithmetic Operators)
অ্যারিথমেটিক অপারেটরস দুটি সংখ্যার মধ্যে গাণিতিক ক্রিয়া সম্পাদন করতে ব্যবহৃত হয়।
অপারেটর
- + (যোগ)
- - (বিয়োগ)
- * (গুণ)
- / (ভাগ)
- % (মডুলো)
- ^ (পাওয়ার)
উদাহরণ:
x = 10
y = 3
print(x + y) -- আউটপুট: 13
print(x - y) -- আউটপুট: 7
print(x * y) -- আউটপুট: 30
print(x / y) -- আউটপুট: 3.3333333
print(x % y) -- আউটপুট: 1 (মডুলো, বাকি)
print(x ^ y) -- আউটপুট: 1000 (10 raised to the power of 3)২. কম্প্যারিজন অপারেটরস (Comparison Operators)
কম্প্যারিজন অপারেটরস দুটি মানের মধ্যে তুলনা করার জন্য ব্যবহৃত হয়। এই অপারেটরগুলি দুটি মানের মধ্যে সম্পর্ক নির্ধারণ করে এবং বুলিয়ান (true/false) রিটার্ন করে।
অপারেটর
- == (সমান)
- ~= (অসামান)
- < (ছোট)
- > (বড়)
- <= (ছোট বা সমান)
- >= (বড় বা সমান)
উদাহরণ:
x = 10
y = 5
print(x == y) -- আউটপুট: false
print(x ~= y) -- আউটপুট: true
print(x < y) -- আউটপুট: false
print(x > y) -- আউটপুট: true
print(x <= y) -- আউটপুট: false
print(x >= y) -- আউটপুট: true৩. লজিক্যাল অপারেটরস (Logical Operators)
লজিক্যাল অপারেটরস দুটি বুলিয়ান মানের মধ্যে যুক্তি বা শর্ত চেক করার জন্য ব্যবহৃত হয়।
অপারেটর
- and (এবং)
- or (অথবা)
- not (না)
উদাহরণ:
x = true
y = false
print(x and y) -- আউটপুট: false (দুটোই true না হলে false)
print(x or y) -- আউটপুট: true (একটি true থাকলেই true)
print(not x) -- আউটপুট: false (not x, অর্থাৎ x এর বিপরীত)৪. কনক্যাটেনেশন অপারেটর (Concatenation Operator)
কনক্যাটেনেশন অপারেটর .. স্ট্রিংগুলিকে একত্রিত করতে ব্যবহৃত হয়। এটি স্ট্রিং অপারেশন করতে ব্যবহৃত হয়, অর্থাৎ দুটি বা তার বেশি স্ট্রিং একত্রিত করা।
অপারেটর
- .. (কনক্যাটেনেশন)
উদাহরণ:
first_name = "John"
last_name = "Doe"
full_name = first_name .. " " .. last_name
print(full_name) -- আউটপুট: John Doe৫. ইউনারি অপারেটরস (Unary Operators)
ইউনারি অপারেটর একক অপার্যান্ডের সাথে কাজ করে। উদাহরণস্বরূপ, একটি ভেরিয়েবলের মান ধ্বংস বা বিপরীত করায়।
অপারেটর
- - (নেগেটিভ)
- not (বিপরীত)
উদাহরণ:
x = 10
y = -x -- মান পরিবর্তন করা
print(y) -- আউটপুট: -10
is_active = false
print(not is_active) -- আউটপুট: true৬. বিটওয়াইজ অপারেটরস (Bitwise Operators)
লুয়া ৫.৩ সংস্করণ থেকে কিছু বিটওয়াইজ অপারেটর যুক্ত হয়েছে। এগুলি দুটি সংখ্যার মধ্যে বাইট (bit) স্তরে ক্রিয়া সম্পাদন করে।
অপারেটর
- & (AND)
- | (OR)
- ~ (XOR)
- << (শিফট বাম)
- >> (শিফট ডান)
উদাহরণ:
x = 5 -- 0101
y = 3 -- 0011
print(x & y) -- আউটপুট: 1 (0101 & 0011 = 0001)
print(x | y) -- আউটপুট: 7 (0101 | 0011 = 0111)৭. টেবিল অপারেটরস (Table Operators)
টেবিলের উপাদান অ্যাক্সেস করার জন্য বিভিন্ন অপারেটর ব্যবহার করা হয়।
অপারেটর
- . (ডট নোটেশন): টেবিলের সদস্য অ্যাক্সেস করার জন্য।
- [] (ব্র্যাকেট নোটেশন): টেবিলের সদস্য অ্যাক্সেস করার জন্য, সাধারণত যখন সদস্যের নাম একটি ভ্যারিয়েবল হয়।
উদাহরণ:
person = {name = "John", age = 30}
print(person.name) -- আউটপুট: John
print(person["age"]) -- আউটপুট: 30সারসংক্ষেপ
লুয়া ভাষায় অপারেটরস খুবই শক্তিশালী এবং বিভিন্ন ধরনের ডেটার উপর অপারেশন করতে সহায়ক। এর মধ্যে অ্যারিথমেটিক, কম্প্যারিজন, লজিক্যাল, কনক্যাটেনেশন, ইউনারি, বিটওয়াইজ এবং টেবিল অপারেটরস রয়েছে। এগুলি প্রোগ্রামিংয়ের দৈনন্দিন কাজগুলোকে আরো সহজ এবং কার্যকর করে তোলে।
লুয়া ভাষায় সাধারণ গণনা এবং ম্যাথমেটিক্যাল অপারেশনগুলো করার জন্য কিছু সাধারণ আরিথমেটিক অপারেটর রয়েছে। এই অপারেটরগুলো দ্বারা আপনি সংখ্যা যোগ, বিয়োগ, গুণ, ভাগ এবং মডুলাস (শেষবিভাজ্য) করতে পারবেন। এখানে আমরা লুয়া ভাষার পাঁচটি প্রধান আরিথমেটিক অপারেটর—+, -, *, /, এবং %—বিস্তারিতভাবে আলোচনা করব।
১. + (Addition)
এই অপারেটরটি দুটি মানের যোগফল বের করতে ব্যবহৃত হয়।
উদাহরণ:
a = 10
b = 5
sum = a + b
print(sum) -- আউটপুট: 15এখানে, a এবং b দুটি সংখ্যা যোগ করা হয়েছে এবং ফলস্বরূপ sum ভ্যারিয়েবলে ১৫ সংরক্ষিত হয়েছে।
২. - (Subtraction)
এই অপারেটরটি দুটি মানের পার্থক্য বা বিয়োগ ফল বের করতে ব্যবহৃত হয়।
উদাহরণ:
a = 10
b = 5
difference = a - b
print(difference) -- আউটপুট: 5এখানে, a থেকে b বিয়োগ করা হয়েছে এবং ফলস্বরূপ difference ভ্যারিয়েবলে ৫ সংরক্ষিত হয়েছে।
৩. * (Multiplication)
এই অপারেটরটি দুটি সংখ্যার গুণফল বের করতে ব্যবহৃত হয়।
উদাহরণ:
a = 10
b = 5
product = a * b
print(product) -- আউটপুট: 50এখানে, a এবং b গুণ করা হয়েছে এবং ফলস্বরূপ product ভ্যারিয়েবলে ৫০ সংরক্ষিত হয়েছে।
৪. / (Division)
এই অপারেটরটি দুটি সংখ্যার ভাগফল বের করতে ব্যবহৃত হয়। এটি সাধারণভাবে ভাসমান পয়েন্ট সংখ্যা (floating point) রিটার্ন করে।
উদাহরণ:
a = 10
b = 5
quotient = a / b
print(quotient) -- আউটপুট: 2.0এখানে, a কে b দিয়ে ভাগ করা হয়েছে এবং ফলস্বরূপ quotient ভ্যারিয়েবলে ২.০ সংরক্ষিত হয়েছে।
৫. % (Modulo)
এই অপারেটরটি দুটি সংখ্যার ভাগফলের অবশিষ্টাংশ (remainder) বের করতে ব্যবহৃত হয়। অর্থাৎ, এটি ভাগশেষ বা মডুলাস অপারেশন করে।
উদাহরণ:
a = 10
b = 3
remainder = a % b
print(remainder) -- আউটপুট: 1এখানে, a কে b দিয়ে ভাগ করা হয়েছে এবং অবশিষ্টাংশ হিসেবে ১ রিটার্ন হয়েছে।
সারসংক্ষেপ
লুয়া ভাষায় বিভিন্ন আরিথমেটিক অপারেটর রয়েছে যা গণনার জন্য ব্যবহৃত হয়:
+: যোগফল-: বিয়োগফল*: গুণফল/: ভাগফল (floating point)%: মডুলাস (ভাগশেষ)
এই অপারেটরগুলো ব্যবহার করে আপনি লুয়া ভাষায় সহজেই গণনা এবং বিভিন্ন ম্যাথমেটিক্যাল অপারেশন করতে পারবেন।
লুয়া (Lua) ভাষায় রিলেশনাল অপারেটরস (Relational Operators) এমন অপারেটরস যা দুটি মানের মধ্যে সম্পর্ক নির্ধারণ করে। এই অপারেটরস সাধারণত শর্তযুক্ত স্টেটমেন্ট বা লুপে ব্যবহৃত হয়, যাতে দুটি মানের তুলনা করা যায়। লুয়া ভাষায় মোট ৬টি প্রধান রিলেশনাল অপারেটর রয়েছে, যা নীচে আলোচনা করা হয়েছে।
১. সমান (==)
এই অপারেটরটি দুটি মানের মধ্যে সমানত্ব যাচাই করে। যদি দুটি মান সমান হয়, তবে এটি true রিটার্ন করবে, অন্যথায় false রিটার্ন করবে।
উদাহরণ:
a = 5
b = 5
c = 10
print(a == b) -- আউটপুট: true
print(a == c) -- আউটপুট: falseএখানে, a == b true রিটার্ন করেছে কারণ a এবং b এর মান সমান, তবে a == c false রিটার্ন করেছে কারণ a এবং c এর মান আলাদা।
২. সমান না (~=)
এই অপারেটরটি দুটি মানের মধ্যে সমান না হওয়া যাচাই করে। যদি দুটি মান সমান না হয়, তবে এটি true রিটার্ন করবে, অন্যথায় false রিটার্ন করবে।
উদাহরণ:
a = 5
b = 10
c = 5
print(a ~= b) -- আউটপুট: true
print(a ~= c) -- আউটপুট: falseএখানে, a ~= b true রিটার্ন করেছে কারণ a এবং b এর মান সমান নয়, তবে a ~= c false রিটার্ন করেছে কারণ a এবং c এর মান সমান।
৩. ছোট (<)
এই অপারেটরটি যাচাই করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে ছোট কিনা। যদি তা সত্যি হয়, তবে এটি true রিটার্ন করবে, অন্যথায় false রিটার্ন করবে।
উদাহরণ:
a = 5
b = 10
c = 5
print(a < b) -- আউটপুট: true
print(a < c) -- আউটপুট: falseএখানে, a < b true রিটার্ন করেছে কারণ a এর মান b এর চেয়ে ছোট, তবে a < c false রিটার্ন করেছে কারণ a এবং c এর মান সমান।
৪. বড় (>)
এই অপারেটরটি যাচাই করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে বড় কিনা। যদি তা সত্যি হয়, তবে এটি true রিটার্ন করবে, অন্যথায় false রিটার্ন করবে।
উদাহরণ:
a = 5
b = 10
c = 5
print(a > b) -- আউটপুট: false
print(b > a) -- আউটপুট: trueএখানে, a > b false রিটার্ন করেছে কারণ a এর মান b এর চেয়ে ছোট, তবে b > a true রিটার্ন করেছে কারণ b এর মান a এর চেয়ে বড়।
৫. ছোট বা সমান (<=)
এই অপারেটরটি যাচাই করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে ছোট বা সমান কিনা। যদি তা সত্যি হয়, তবে এটি true রিটার্ন করবে, অন্যথায় false রিটার্ন করবে।
উদাহরণ:
a = 5
b = 10
c = 5
print(a <= b) -- আউটপুট: true
print(a <= c) -- আউটপুট: true
print(b <= a) -- আউটপুট: falseএখানে, a <= b এবং a <= c উভয়ই true রিটার্ন করেছে কারণ a ছোট বা সমান, তবে b <= a false রিটার্ন করেছে কারণ b এর মান a এর চেয়ে বড়।
৬. বড় বা সমান (>=)
এই অপারেটরটি যাচাই করে যে প্রথম মানটি দ্বিতীয় মানের চেয়ে বড় বা সমান কিনা। যদি তা সত্যি হয়, তবে এটি true রিটার্ন করবে, অন্যথায় false রিটার্ন করবে।
উদাহরণ:
a = 5
b = 10
c = 5
print(a >= b) -- আউটপুট: false
print(a >= c) -- আউটপুট: true
print(b >= a) -- আউটপুট: trueএখানে, a >= c এবং b >= a উভয়ই true রিটার্ন করেছে কারণ a সমান বা বড়, তবে a >= b false রিটার্ন করেছে কারণ a এর মান b এর চেয়ে ছোট।
সারসংক্ষেপ
লুয়া ভাষায় রিলেশনাল অপারেটরস দুটি মানের মধ্যে সম্পর্ক নির্ধারণ করতে ব্যবহৃত হয়। এই অপারেটরগুলো হল:
==: সমান~=: সমান না<: ছোট>: বড়<=: ছোট বা সমান>=: বড় বা সমান
এই অপারেটরগুলো শর্তযুক্ত স্টেটমেন্ট, লুপ, এবং অন্যান্য জায়গায় ব্যবহার করে কোডে তুলনা এবং সিদ্ধান্ত গ্রহণ করা যায়।
লুয়া (Lua) প্রোগ্রামিং ভাষায় লজিক্যাল অপারেটরস খুবই গুরুত্বপূর্ণ, যেগুলোর সাহায্যে শর্তাধীন (conditional) এক্সপ্রেশন তৈরি করা হয় এবং লজিক্যাল অপারেশন করা যায়। লুয়া ভাষায় তিনটি প্রধান লজিক্যাল অপারেটর রয়েছে: and, or, এবং **not**।
এই অপারেটরগুলো Boolean গাণিতিক অ্যালজেব্রা অনুসরণ করে এবং বিভিন্ন শর্ত বা পরিস্থিতি যাচাই করার জন্য ব্যবহৃত হয়।
১. and অপারেটর
লজিক্যাল and অপারেটর দুটি শর্তের মধ্যে দুইটি শর্তই সত্য হলে সত্য (True) রিটার্ন করে, অন্যথায় মিথ্যা (False) রিটার্ন করে।
উদাহরণ:
x = 10
y = 20
if x > 5 and y < 25 then
print("Both conditions are true") -- আউটপুট: Both conditions are true
else
print("At least one condition is false")
endএখানে, কারণ x > 5 এবং y < 25 উভয় শর্ত সত্য, তাই and অপারেটরটি true রিটার্ন করবে এবং প্রিন্ট করবে "Both conditions are true"।
২. or অপারেটর
লজিক্যাল or অপারেটর দুটি শর্তের মধ্যে কমপক্ষে একটি শর্ত সত্য হলে সত্য (True) রিটার্ন করে, আর দুটি শর্তই মিথ্যা হলে মিথ্যা (False) রিটার্ন করে।
উদাহরণ:
x = 10
y = 5
if x > 5 or y > 10 then
print("At least one condition is true") -- আউটপুট: At least one condition is true
else
print("Both conditions are false")
endএখানে, x > 5 শর্ত সত্য, তাই or অপারেটরটি true রিটার্ন করবে এবং প্রিন্ট করবে "At least one condition is true"।
৩. not অপারেটর
লজিক্যাল not অপারেটর একটি শর্তের বিপরীত মান রিটার্ন করে। অর্থাৎ, এটি true কে false এবং false কে true তে পরিবর্তন করে।
উদাহরণ:
x = 10
if not (x > 5) then
print("x is less than or equal to 5")
else
print("x is greater than 5") -- আউটপুট: x is greater than 5
endএখানে, x > 5 শর্ত সত্য, তাই not অপারেটরটি এটি মিথ্যা বানিয়ে অন্য শর্তটি কার্যকর করবে এবং প্রিন্ট করবে "x is greater than 5"।
৪. and, or, not অপারেটরগুলোর ব্যবহার
এই অপারেটরগুলো শর্ত পরীক্ষা, ফ্লো কন্ট্রোল, এবং প্রোগ্রামিং লজিক তৈরি করার জন্য অত্যন্ত গুরুত্বপূর্ণ। তারা কোডে শর্তগুলোর ওপর নির্ভর করে কার্যক্রম চালানোর জন্য ব্যবহৃত হয়। নিচে একাধিক অপারেটরের ব্যবহার দেখানো হলো:
উদাহরণ ১: and, or, এবং not এর সম্মিলিত ব্যবহার
x = 15
y = 30
z = 5
if (x > 10 and y > 25) or not (z > 10) then
print("Condition met")
else
print("Condition not met") -- আউটপুট: Condition met
endএখানে, (x > 10 and y > 25) শর্ত সত্য এবং not (z > 10) শর্ত মিথ্যা, কিন্তু কারণ or অপারেটর ব্যবহৃত হয়েছে, কোডটি "Condition met" প্রিন্ট করবে।
সারসংক্ষেপ
লুয়া প্রোগ্রামিং ভাষায় and, or, এবং not অপারেটরগুলো লজিক্যাল এক্সপ্রেশন তৈরি করতে ব্যবহৃত হয়। তারা প্রোগ্রামের শর্ত যাচাই এবং নির্ধারণ করতে সাহায্য করে।
and: দুটি শর্তই সত্য হলে সত্য রিটার্ন করে।or: কমপক্ষে একটি শর্ত সত্য হলে সত্য রিটার্ন করে।not: শর্তের বিপরীত মান রিটার্ন করে।
এই অপারেটরগুলির মাধ্যমে লজিক্যাল ফ্লো কন্ট্রোল সহজ এবং কার্যকরী করা যায়।
লুয়া (Lua) ভাষায় কিছু শক্তিশালী অপারেটর রয়েছে যা ডেটা হ্যান্ডলিং এবং স্ট্রিং ম্যানিপুলেশন সহজ করে তোলে। দুটি গুরুত্বপূর্ণ অপারেটর হল কনক্যাটেনেশন অপারেটর .. এবং **লেন্থ অপারেটর #**। এই অপারেটরগুলো স্ট্রিং এবং টেবিল সম্পর্কিত কাজগুলো করতে ব্যবহৃত হয়। নিচে এই অপারেটরগুলির ব্যবহার বিস্তারিতভাবে আলোচনা করা হলো।
১. কনক্যাটেনেশন অপারেটর ..
লুয়া ভাষায় কনক্যাটেনেশন অপারেটর .. ব্যবহৃত হয় দুটি স্ট্রিং একত্রিত (concatenate) করার জন্য। এটি দুটি বা তার বেশি স্ট্রিংকে যুক্ত করে একটি নতুন স্ট্রিং তৈরি করে।
কনক্যাটেনেশন অপারেটর .. এর উদাহরণ
str1 = "Hello"
str2 = " "
str3 = "World!"
result = str1 .. str2 .. str3
print(result) -- আউটপুট: Hello World!এখানে, তিনটি আলাদা স্ট্রিং str1, str2, এবং str3 কনক্যাটেনেশন অপারেটর .. দ্বারা একত্রিত হয়ে একটি নতুন স্ট্রিং তৈরি হয়েছে, যা "Hello World!"।
কনক্যাটেনেশন অপারেটর .. এর আরও উদাহরণ
name = "John"
age = 30
greeting = "Hello, " .. name .. ". You are " .. age .. " years old."
print(greeting) -- আউটপুট: Hello, John. You are 30 years old.এখানে, ভেরিয়েবল name এবং age এর মান স্ট্রিং এর সাথে কনক্যাটেনেট করা হয়েছে।
২. লেন্থ অপারেটর #
লুয়া ভাষায় লেন্থ অপারেটর # ব্যবহৃত হয় স্ট্রিং বা টেবিলের দৈর্ঘ্য বা আকার (length) নির্ধারণ করতে। এটি স্ট্রিংয়ের চরিত্রের সংখ্যা বা টেবিলের উপাদানের সংখ্যা প্রদান করে।
স্ট্রিংয়ের দৈর্ঘ্য বের করা
str = "Hello, World!"
length = #str
print(length) -- আউটপুট: 13এখানে, স্ট্রিং "Hello, World!" এর দৈর্ঘ্য ১৩, কারণ এতে মোট ১৩টি অক্ষর রয়েছে।
টেবিলের দৈর্ঘ্য বের করা
লুয়া ভাষায় টেবিলের দৈর্ঘ্য বের করতে # অপারেটর ব্যবহৃত হয়, তবে এটি শুধুমাত্র ইনডেক্সড টেবিলের (যেখানে কীগুলি সংখ্যা হয়) ক্ষেত্রে কাজ করে।
myTable = {10, 20, 30, 40}
length = #myTable
print(length) -- আউটপুট: 4এখানে, myTable টেবিলের মধ্যে ৪টি উপাদান রয়েছে, তাই এর দৈর্ঘ্য ৪।
টেবিলের দৈর্ঘ্য, যেখানে গ্যাপ থাকে
যদি টেবিলের মধ্যে কোনো গ্যাপ থাকে (অর্থাৎ কিছু ইনডেক্স বাদ থাকে), তবে # অপারেটর সঠিক দৈর্ঘ্য প্রদান নাও করতে পারে।
myTable = {10, 20, [5] = 30, 40}
length = #myTable
print(length) -- আউটপুট: 2এখানে, টেবিলের দৈর্ঘ্য ২ হিসেবে প্রদর্শিত হয়েছে, কারণ টেবিলের ইনডেক্সগুলি ১, ২ এবং ৫ এর মধ্যে বিভক্ত হয়েছে, এবং # অপারেটর সর্বশেষ কনটিনিউয়াস ইনডেক্স পর্যন্ত হিসাব করে।
সারসংক্ষেপ
- কনক্যাটেনেশন অপারেটর
..: এটি দুটি স্ট্রিংকে একত্রিত করতে ব্যবহৃত হয়। একাধিক স্ট্রিং কনক্যাটেনেট করতে একে একাধিক বার ব্যবহার করা যায়। - লেন্থ অপারেটর
#: এটি একটি স্ট্রিং বা টেবিলের দৈর্ঘ্য বের করতে ব্যবহৃত হয়। স্ট্রিংয়ের ক্ষেত্রে এটি চরিত্রের সংখ্যা দেয়, আর ইনডেক্সড টেবিলের ক্ষেত্রে এটি উপাদানের সংখ্যা বের করে।
লুয়া ভাষায় এই দুটি অপারেটর অত্যন্ত গুরুত্বপূর্ণ এবং প্রায় প্রতিটি প্রোগ্রামে স্ট্রিং ম্যানিপুলেশন বা টেবিলের আকার নির্ধারণের জন্য ব্যবহৃত হয়।
Read more