C++ Enum কীভাবে ব্যবহার করবেন: একটি গাইড
এনামারেটেড টাইপ হলো একটি ইউজার-ডিফাইনড ডেটা টাইপ যাকে একটি নির্দিষ্ট রেঞ্জ থেকে একটি মান অ্যাসাইন করা যায়।
Enums প্রোগ্রামিং-এ প্রায়শই ব্যবহার করা হয় যখন একটি ভেরিয়েবল শুধু একটি নির্দিষ্ট সেট থেকে একটি মান সংরক্ষণ করতে পারে। উদাহরণস্বরূপ, আপনি যদি একটি ভেরিয়েবলকে শুধু সপ্তাহের দিনগুলো সংরক্ষণ করতে চান, তবে আপনি একটি এনুমারেশন ব্যবহার করতে পারেন।
এই টিউটোরিয়াল উদাহরণসহ C++-এ এনুমারেশনের বেসিক, কীভাবে একটি এনুমারেশন ডিফাইন করবেন এবং কীভাবে আপনার কোডে একটি এনুমারেশন ব্যবহার করবেন তা অন্বেষণ করবে। এই টিউটোরিয়াল পড়ার শেষে, আপনি C++-এ enums ব্যবহারে এক্সপার্ট হবেন।
C++ Enum
এনামারেটেড টাইপ, যাকে enum টাইপও বলা হয়, একটি কাস্টম ডেটা টাইপ তৈরি করতে ব্যবহৃত হয় যার একটি ফিক্সড রেঞ্জ অফ পাসিবল ভ্যালু থাকে। এনুমারেশন হলো একটি ইউজার-ডিফাইনড ডেটা টাইপ।
C++-এ একটি enum ডিফাইন করতে, enum কিওয়ার্ড ব্যবহার করা হয়। C++-এ enum ডিফাইন করার সিনট্যাক্স:
enum name { firstValue, secondValue, thirdValue, fourthValue };
এই সিনট্যাক্সকে এর মূল কম্পোনেন্টে ভাঙা যাক:
- enum আমাদের কোডকে একটি এনুমারেশন তৈরি করতে ইনস্ট্রাক্ট করে।
- name হলো আমাদের এনুমারেশনে অ্যাসাইন করা নাম।
- firstValue, secondValue, thirdValue, এবং fourthValue হলো আমাদের এনুমারেশনে অ্যাসাইন করা মান। এই মানগুলো কার্লি ব্র্যাকেট ({}) এর মধ্যে এনক্লোজড থাকে।
অতিরিক্তভাবে, আপনি একটি enum ক্লাসের ডিফল্ট মানও পরিবর্তন করতে পারেন। তাই, আপনি যদি একটি মানকে তার নিজস্ব নাম দিতে চান, তবে আপনি এনুমারেশনে তার এন্ট্রি একটি নতুন ডিফল্ট মান অ্যাসাইন করে তা করতে পারেন। এই টাস্ক সম্পন্ন করার জন্য আমরা যে কোড ব্যবহার করতে পারি:
enum name { firstValue = 0, secondValue = 1 }
এই সিনট্যাক্সে, আমাদের enum-এ দুটি মান রয়েছে। firstValue মানটির মান ০, এবং secondValue মানটির মান ১।
৮১% পার্টিসিপেন্ট заяви করেছেন যে বুটক্যাম্পে অংশগ্রহণের পর তাদের টেক জব প্রস্পেক্টস নিয়ে তারা আরও আত্মবিশ্বাসী মনে করছেন। আজই একটি বুটক্যাম্পে ম্যাচ করুন।
গড় বুটক্যাম্প গ্র্যাজুট ক্যারিয়ার ট্রানজিশনে ছয় মাসের কম সময় ব্যয় করেছেন, বুটক্যাম্প শুরু থেকে প্রথম জব পাওয়ার পর্যায়ে।
Enums কার্যকর কারণ এগুলো আপনাকে আরও স্পষ্টভাবে ডিফাইন করতে দেয় একটি ভেরিয়েবল কোন পটেনশিয়াল মান ধারণ করতে পারে। উদাহরণস্বরূপ, আপনি যদি শুধু সপ্তাহের দিনগুলো একটি ভেরিয়েবলে সংরক্ষণ করতে চান, একটি enum ডিক্লেয়ার করলে আপনার কোডে এটি স্পষ্ট হয় যে ভেরিয়েবলটি শুধু সপ্তাহের দিনগুলো সংরক্ষণ করতে পারে।
একটি Enum ডিক্লেয়ার করুন
ধরা যাক আমরা একটি অ্যাপ্লিকেশন তৈরি করছি যা একটি ডোনাট শপের ক্যাশিয়ারকে প্রতিটি অর্ডার রেকর্ড করতে এবং ডোনাটের খরচ ক্যালকুলেট করতে দেয়।
আমাদের শপ শুধু একটি সীমিত রেঞ্জের ডোনাট বিক্রি করে, এবং তাই আমরা শুধু ক্যাশিয়ারকে আমাদের ইনভেন্টরিতে থাকা ডোনাটের অর্ডার রেকর্ড করতে দিতে চাই। ডোনাটগুলো যেগুলো আমরা আমাদের প্রোগ্রামে প্রসেস করতে চাই হলো: Raspberry, Strawberry, Powdered, Chocolate, এবং Cinnamon।
এটি একটি উদাহরণ যেখানে একটি enum খুবই কার্যকর হতে পারে। আমরা আমাদের প্রোগ্রামকে উপরে উল্লিখিত ফ্লेভারগুলোর অর্ডার প্রসেস করতে সীমাবদ্ধ করতে চাই, এবং তাই একটি enum ব্যবহার করা একটি ভালো আইডিয়া। C++ enum ডিক্লেয়ার করার জন্য আমরা যে কোড ব্যবহার করতে পারি:
enum flavors { Raspberry, Strawberry, Powdered, Chocolate, Cinnamon }
আমাদের কোডে, আমরা flavors নামে একটি enum ডিক্লেয়ার করি যার পাঁচটি পটেনশিয়াল মান রয়েছে। তাই, যখন আমরা এই enum থেকে একটি ভেরিয়েবলকে একটি মান অ্যাসাইন করার চেষ্টা করি, ভেরিয়েবলটি শুধু সেই মানগুলো সংরক্ষণ করতে পারবে যেগুলো আমাদের enum-এ ডিক্লেয়ার করা আছে।
আমরা যদি একটি ভেরিয়েবল ডিক্লেয়ার করতে চাই যা শুধু আমাদের flavors enum থেকে মান ধারণ করতে পারে, আমরা এই সিনট্যাক্স ব্যবহার করতে পারি:
enum flavors orderFlavor.
আমরা যা এখন orderFlavor ভেরিয়েবল ডিক্লেয়ার করলাম, সেটি শুধু flavors enum-এ থাকা মানগুলো সংরক্ষণ করতে পারবে।
একটি Enum ব্যবহার করা
এখন আমরা একটি enum ডিক্লেয়ার করেছি, আমরা এটি আমাদের কোডে ব্যবহার করতে পারি। ডোনাট স্টোর উদাহরণে ফিরে যাই কীভাবে আমরা একটি enum C++ প্রোগ্রামে ব্যবহার করতে পারি তা ইলাস্ট্রেট করতে।
ধরা যাক আমরা একটি প্রোগ্রাম বিল্ড করছি যা আমাদের ডোনাট স্টোর ক্যাশিয়ারকে প্রতিটি অর্ডার রেকর্ড করতে দেয়। ক্যাশিয়ারকে এখন একটি রাস্পবেরি ডোনাটের অর্ডার পেয়েছে, এবং আমরা আমাদের প্রোগ্রামে একটি রাস্পবেরি ডোনাটের অর্ডার তৈরি করতে চাই। আমরা এটি এই কোড দিয়ে করতে পারি:
#include <iostream> using namespace std; enum flavors { Raspberry, Strawberry, Powdered, Chocolate, Cinnamon } int main() { enum flavors orderFlavor; orderFlavor = Raspberry; cout << "Donut ordered: 1x " << orderFlavor; }
আমাদের কোড রিটার্ন করে:
Donut ordered: 1x Raspberry
আমাদের কোড ভাঙা যাক। প্রথমে, আমরা flavors নামে একটি enum ডিক্লেয়ার করেছি যা ডোনাট শপে বিক্রি হওয়া ফ্লেভারগুলো সংরক্ষণ করে।
তারপর, আমরা orderFlavor নামে একটি ভেরিয়েবল ডিক্লেয়ার করি যা একটি কাস্টমার দ্বারা অর্ডার করা ডোনাটের টাইপ ট্র্যাক করে। এই ভেরিয়েবলটি শুধু flavors enum-এ থাকা মানগুলো সংরক্ষণ করতে পারে। কোডের পরবর্তী লাইনে, আমরা orderFlavor enum ভেরিয়েবলকে Raspberry মান অ্যাসাইন করি।
পরবর্তী, আমরা Donut ordered: 1x কনসোলে প্রিন্ট করি, তারপর orderFlavor ভেরিয়েবলে সংরক্ষিত মান।
এই উদাহরণে, আপনি দেখতে পাচ্ছেন যে একটি enum ব্যবহার করলে আমাদের কোড পড়া সহজ হয়। একটি enum ব্যবহার করলে, এটি স্পষ্ট হয় যে orderFlavor ভেরিয়েবলটি শুধু flavors enum-এ থাকা মানগুলো সংরক্ষণ করতে পারে। যদি আমরা একটি আরও জটিল প্রোগ্রামে কাজ করতাম, enum ব্যবহার করার সুবিধা আরও স্পষ্ট হতো, কারণ আরও বেশি ভেরিয়েবল থাকত जिनके জন্য আমাদের অ্যাকাউন্ট রাখতে হতো।
ডিফল্ট Enum মান পরিবর্তন করা
অতিরিক্তভাবে, আমরা enums কে একটি নির্দিষ্ট ডিফল্ট মানও অ্যাসাইন করতে পারি। উদাহরণস্বরূপ, ধরা যাক আমরা একটি প্রোগ্রাম বিল্ড করতে চাই যা একটি নির্দিষ্ট ডোনাটের দাম রিটার্ন করে। যেহেতু সীমিত রেঞ্জের ডোনাট একটি কাস্টমার অর্ডার করতে পারে, আমরা একটি enum ব্যবহার করতে চাই।
আমরা আমাদের ডোনাট ফ্লেভার এবং তাদের দাম উভয়ই সংরক্ষণ করে একটি enum তৈরি করতে নিচের কোড ব্যবহার করতে পারি:
#include <iostream> using namespace std; enum prices { Raspberry = 2.00, Strawberry = 2.00, Powdered = 1.75, Chocolate = 1.90, Cinnamon = 2.20 } int main() { enum prices orderPrice; orderPrice = Raspberry; cout << "Donut price: $" << orderPrice; }
আমাদের কোড রিটার্ন করে:
Donut price: $2.00
এই উদাহরণে, আমরা আমাদের enum-এ প্রতিটি মানকে একটি ডিফল্ট মান অ্যাসাইন করেছি।
এর মানে হলো, যখন আমরা আমাদের enum-এ একটি মান রেফারেন্স করি, এর ডিফল্ট মান দেখাবে মানটির নামের বদলে। তাই, যখন আমরা Chocolate রেফারেন্স করি, 1.90 রিটার্ন হবে; যখন আমরা Cinnamon রেফারেন্স করি, 2.20 রিটার্ন হবে।
আমাদের মেইন প্রোগ্রামে, আমরা প্রথমে orderPrice নামে একটি ভেরিয়েবল ডিক্লেয়ার করি যা prices enum ব্যবহার করে এর পসিবল মান রেস্ট্রিক্ট করে। তারপর আমরা orderPrice ভেরিয়েবলকে আমাদের prices enum-এ Raspberry-এর সাথে যুক্ত মান অ্যাসাইন করি।
পরবর্তী লাইনে, আমরা স্টেটমেন্ট Donut price: $ কনসোলে প্রিন্ট করি, তারপর orderPrice ভেরিয়েবলে সংরক্ষিত দাম। এই কেসে, কাস্টমার একটি রাস্পবেরি ডোনাট অর্ডার করেছেন, যা $2.00 খরচ করে, তাই আমাদের কোড রিটার্ন করল Donut price: $2.00।
উপসংহার
enum ডেটা টাইপ একটি ডেটা টাইপ তৈরি করতে ব্যবহৃত হয় যা শুধু একটি ফিক্সড সেট অফ ভ্যালু সংরক্ষণ করতে পারে। উদাহরণস্বরূপ, একটি এনুমারেশন যেটি ঋতু সংরক্ষণ করে শুধু বসন্ত, গ্রীষ্ম, শরৎ এবং শীত সংরক্ষণ করবে। Enums কার্যকর যখন একটি ভেরিয়েবল শুধু একটি নির্দিষ্ট সেটে বিদ্যমান একটি মান ধারণ করতে সক্ষম হওয়া উচিত।
এই টিউটোরিয়াল উদাহরণসহ আলোচনা করেছে কীভাবে C++-এ একটি enum তৈরি করবেন, কীভাবে একটি enum ব্যবহার করবেন, এবং কীভাবে একটি enum দ্বারা সংরক্ষিত ডিফল্ট মানগুলো পরিবর্তন করবেন। এখন আপনার पास C++-এ enums ব্যবহার শুরু করার নো-হাউ রয়েছে!