সি ভাষায় কিভাবে enum ব্যবহার করবেন

How Use Enum C Language



সি প্রোগ্রামিং ভাষায় enum প্রোগ্রামটি অবিচ্ছেদ্য ধ্রুবক মানগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়, যা পরিষ্কার এবং পঠনযোগ্য প্রোগ্রাম লেখার জন্য খুব সহায়ক। প্রোগ্রামাররা সাধারণত তাদের প্রোগ্রামগুলিতে নামযুক্ত অবিচ্ছেদ্য ধ্রুবক সংজ্ঞায়িত করার জন্য গণনা ব্যবহার করে যাতে সফটওয়্যারের ভাল পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা প্রদান করা যায়। এই নিবন্ধটি enum সম্পর্কে বিস্তারিত আলোচনা করবে।

বাক্য গঠন

enum <Enum টাইপ নাম> {
Enumeration_Constant_Element-,
Enumeration_Constant_Element-2,
Enumeration_Constant_Element-3,
…… .........,
Enumeration_Constant_Element-n,
};

Enumeration_Constant_Element-1 এর ডিফল্ট মান 0, Enumeration_Constant_Element-2 এর মান 1, Enumeration_Constant_Element-3 এর মান 2 এবং Enumeration_Constant_Element-n এর মান হল (n-1)।







Enum মধ্যে গভীর ডুব

এখন, যেহেতু আমরা গণনার ধরন নির্ধারণ করতে সিনট্যাক্স জানি, আসুন একটি উদাহরণ দেখি:



enumত্রুটি{
IO_ERROR,
DISK_ERROR,
নেটওয়ার্ক ত্রুটি
};

Enum কীওয়ার্ড সবসময় গণনার ধরন নির্ধারণ করতে ব্যবহার করতে হবে। সুতরাং, যখনই আপনি একটি গণনার ধরন সংজ্ঞায়িত করতে চান, আপনাকে অবশ্যই আগে enum কীওয়ার্ড ব্যবহার করতে হবে। Enum কীওয়ার্ডের পরে, আপনাকে অবশ্যই একটি বৈধ শনাক্তকারী ব্যবহার করতে হবে।



উপরের উদাহরণে, কম্পাইলার IO_ERROR কে অবিচ্ছেদ্য মান: 0, DISK_ERROR কে অবিচ্ছেদ্য মান: 1 এবং NETWORK_ERROR কে অবিচ্ছেদ্য মান নির্ধারণ করবে: 2. ডিফল্টরূপে, প্রথম enum- উপাদানটি সর্বদা 0, পরবর্তী enum-element মান 1, এবং তাই দেওয়া হয়।





নিম্নরূপ অবিচ্ছিন্ন অবিচ্ছেদ্য মান বরাদ্দ করে প্রয়োজনে এই ডিফল্ট আচরণ পরিবর্তন করা যেতে পারে:

enumত্রুটি{
IO_ERROR= 2,
DISK_ERROR,
নেটওয়ার্ক ত্রুটি= 8 ,
PRINT_ERROR
};

এই ক্ষেত্রে, IO_ERROR স্পষ্টভাবে প্রোগ্রামার কর্তৃক 2 এর একটি মান নির্ধারণ করা হয়, DISK_ERROR কে কম্পাইলার দ্বারা 3 এর একটি মান নির্ধারিত করা হয়, NETWORK_ERROR কে স্পষ্টভাবে 8 এর মান নির্ধারিত করা হয় প্রোগ্রামার দ্বারা, এবং PRINT_ERROR কে পরবর্তীতে নির্ধারিত করা হয় কম্পাইলার দ্বারা পূর্ববর্তী এনাম উপাদান NETWORK_ERROR (অর্থাৎ, 9) এর অবিচ্ছেদ্য মান।



সুতরাং, আপনি এখন বুঝতে পারছেন কিভাবে ব্যবহারকারীর দ্বারা সংজ্ঞায়িত গণনার ধরনকে সি-তে সংজ্ঞায়িত করা যায় কি এনাম প্রকারের একটি পরিবর্তনশীল ঘোষণা করা সম্ভব (যেমন আমরা পূর্ণসংখ্যার প্রকারের পরিবর্তনশীল ঘোষণা করতে পারি)? হ্যাঁ, এটা! আপনি নিম্নরূপ enum পরিবর্তনশীল ঘোষণা করতে পারেন:

enumত্রুটি Hw_Error;

আবার, enum হল এখানে মূল শব্দ, ত্রুটি হল enum প্রকার, এবং Hw_Error একটি enum পরিবর্তনশীল।

আমরা এখন enum এর বিভিন্ন ব্যবহার বুঝতে নিম্নলিখিত উদাহরণগুলি দেখব:

  • উদাহরণ 1: ডিফল্ট এনাম সংজ্ঞা ব্যবহার
  • উদাহরণ 2: কাস্টম enum সংজ্ঞা ব্যবহার
  • উদাহরণ 3: ধ্রুবক অভিব্যক্তি ব্যবহার করে enum সংজ্ঞা
  • উদাহরণ 4: এনাম স্কোপ

উদাহরণ 1: ডিফল্ট এনাম সংজ্ঞা ব্যবহার

এই উদাহরণে, আপনি শিখবেন কিভাবে ডিফল্ট ধ্রুবক মান দিয়ে গণনার ধরন নির্ধারণ করতে হয়। কম্পাইলার এনাম উপাদানগুলিতে ডিফল্ট মান নির্ধারণের যত্ন নেবে। নীচে, আপনি উদাহরণ প্রোগ্রাম এবং সংশ্লিষ্ট আউটপুট দেখতে পাবেন।

#অন্তর্ভুক্ত

/ * Enum টাইপ সংজ্ঞায়িত করুন */
enumত্রুটি{
IO_ERROR,
DISK_ERROR,
নেটওয়ার্ক ত্রুটি
};

intপ্রধান()
{
enumত্রুটি Hw_Error; /* Enum ভেরিয়েবল তৈরি করা*/

printf (HO_Error IO_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=IO_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHW_Error কে DISK_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=DISK_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHw_Error NETWORK_ERROR এ সেট করাn');
Hw_ ত্রুটি=নেটওয়ার্ক ত্রুটি;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

প্রত্যাবর্তন 0;
}

https://lh6.googleusercontent.com/0CHtUqkuIA-okDEPI0_5fZLU6lZ6Exz6DK4uUr63k5Ros863eqC-HmrvZ_LZBKbEvqeCVMCsnvXXhfrYJrBaxxfZBWoiMOhzApzXey4uUr63k5Ros863eqC-HmrvZ_LZBKbEvqeCVMCsnvXXhfrYJrBaxxfZBVoiMOhzAQPzXey4

উদাহরণ 2: কাস্টম এনাম সংজ্ঞা ব্যবহার

এই উদাহরণে, আপনি শিখবেন কিভাবে কাস্টম ধ্রুবক মান দিয়ে গণনার ধরন নির্ধারণ করতে হয়। এছাড়াও, এই উদাহরণটি আপনাকে বুঝতে সাহায্য করবে যে কাস্টম ধ্রুবক আরম্ভ কোন র্যান্ডম ক্রমে করা যেতে পারে। এই উদাহরণে, আমরা স্পষ্টভাবে 1 এর জন্য ধ্রুবক মান নির্ধারণ করেছিসেন্টএবং 3rdenum উপাদান (যেমন, যথাক্রমে IO_ERROR এবং NETWORK_ERROR), কিন্তু আমরা 2 এর জন্য স্পষ্ট সূচনা বাদ দিয়েছিndএবং 4উপাদান এটি এখন 2 এর ডিফল্ট মান নির্ধারণের জন্য কম্পাইলারের দায়িত্বndএবং 4enum উপাদান (যথাক্রমে DISK_ERROR এবং PRINT_ERROR)। DISK_ERROR কে 3 এর মান দেওয়া হবে এবং PRINT_ERROR কে 9 এর একটি মান দেওয়া হবে। নীচে, আপনি উদাহরণ প্রোগ্রাম এবং আউটপুট দেখতে পাবেন।

#অন্তর্ভুক্ত

/* Enum টাইপ সংজ্ঞায়িত করুন - কাস্টম আরম্ভ*/
enumত্রুটি{
IO_ERROR= 2,
DISK_ERROR,
নেটওয়ার্ক ত্রুটি= 8,
PRINT_ERROR
};

intপ্রধান()
{

/* Enum পরিবর্তনশীল ঘোষণা করুন*/
enumত্রুটি Hw_Error;

printf (HO_Error IO_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=IO_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHW_Error কে DISK_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=DISK_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHw_Error NETWORK_ERROR এ সেট করাn');
Hw_ ত্রুটি=নেটওয়ার্ক ত্রুটি;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHw_Error কে PRINT_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=PRINT_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

প্রত্যাবর্তন 0;
}

https://lh6.googleusercontent.com/hKtv00Hj7iPnnlNhC7mu1v7hzPhB64C9nyHwjB6oQgyCyEwOgiLSYWDOxvQCDrhumn4IzqhkN4qF9HcuGZ9thqlBLy6wzxvl2F-FUwjBy6wzxvl9En

উদাহরণ 3: কনস্ট্যান্ট এক্সপ্রেশন ব্যবহার করে Enum সংজ্ঞা

এই উদাহরণে, আপনি শিখবেন কিভাবে ধ্রুবক অভিব্যক্তি ব্যবহার করতে হয় enum উপাদানগুলির জন্য ধ্রুবক মান নির্ধারণ করতে।

#অন্তর্ভুক্ত

/* Enum টাইপ সংজ্ঞায়িত করুন - ধ্রুবক অভিব্যক্তি ব্যবহার করে কাস্টম আরম্ভ
ধ্রুবক অভিব্যক্তি এখানে ব্যবহার করা হচ্ছে:
ক। IO_ERROR এবং
খ। নেটওয়ার্ক ত্রুটি
এই enum উপাদান সংজ্ঞায়িত করার একটি অস্বাভাবিক উপায়; যাইহোক, এই
প্রোগ্রাম দেখায় যে enum উপাদান আরম্ভের এই পদ্ধতিটি c তে সম্ভব।
* /


enumত্রুটি{
IO_ERROR= + 2 * 3 + 4,
DISK_ERROR,
নেটওয়ার্ক ত্রুটি= 2 == 2,
PRINT_ERROR
};

intপ্রধান()
{

/* Enum পরিবর্তনশীল ঘোষণা করুন*/
enumত্রুটি Hw_Error;

printf (HO_Error IO_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=IO_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHW_Error কে DISK_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=DISK_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHw_Error NETWORK_ERROR এ সেট করাn');
Hw_ ত্রুটি=নেটওয়ার্ক ত্রুটি;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHw_Error কে PRINT_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=PRINT_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

প্রত্যাবর্তন 0;
}

https://lh4.googleusercontent.com/9FAbPOnM95LiP_UQvg40oHSW4sv34aqpFgasbHMiy06Z_rKEom81TuMCVsfxWaZedtQOMEQx7ef_5qEfRVcNrUvhitDzOcTvOilby4hUvhitDzOcTvOilby1Xregm4

উদাহরণ 4: এনাম স্কোপ

এই উদাহরণে, আপনি শিখবেন কিভাবে স্কুমিং নিয়ম enum এর জন্য কাজ করে। একটি ম্যাক্রো (#ডিফাইন) এনামের পরিবর্তে একটি ধ্রুবক সংজ্ঞায়িত করার জন্য ব্যবহার করা যেতে পারে, কিন্তু ম্যাক্রোর জন্য স্কোপিং নিয়ম কাজ করে না।

#অন্তর্ভুক্ত

intপ্রধান()
{

/ * Enum টাইপ সংজ্ঞায়িত করুন */
enumত্রুটি_1{
IO_ERROR= 10,
DISK_ERROR,
নেটওয়ার্ক ত্রুটি= 3,
PRINT_ERROR
};


{

/* অভ্যন্তরীণ সুযোগে enum টাইপ সংজ্ঞায়িত করুন*/
enumত্রুটি_1{
IO_ERROR= বিশ,
DISK_ERROR,
নেটওয়ার্ক ত্রুটি= 35,
PRINT_ERROR
};

/* Enum পরিবর্তনশীল ঘোষণা করুন*/
enumত্রুটি_1 Hw_Error;
printf (HO_Error IO_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=IO_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHW_Error কে DISK_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=DISK_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHw_Error NETWORK_ERROR এ সেট করাn');
Hw_ ত্রুটি=নেটওয়ার্ক ত্রুটি;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);

printf ('nHw_Error কে PRINT_ERROR এ সেট করা হচ্ছেn');
Hw_ ত্রুটি=PRINT_ERROR;
printf ('Hw_Error এর মান = %dn',Hw_ ত্রুটি);
}
প্রত্যাবর্তন 0;
}

এনাম এবং ম্যাক্রোর মধ্যে তুলনা

এনুম ম্যাক্রো
পরিমাপের নিয়ম enum এর জন্য প্রযোজ্য। স্ক্রোপিং নিয়ম ম্যাক্রোর জন্য প্রযোজ্য নয়।
ডিফল্ট Enum মান বরাদ্দ স্বয়ংক্রিয়ভাবে ঘটে।

Enum বিপুল সংখ্যক ধ্রুবক সংজ্ঞায়িত করতে খুব সহায়ক। কম্পাইলার ডিফল্ট ধ্রুব মান শুরু করে।

ম্যাক্রো ধ্রুবক মান সবসময় প্রোগ্রামার দ্বারা স্পষ্টভাবে উল্লেখ করা আবশ্যক।

এটি বিপুল সংখ্যক ধ্রুবকদের জন্য একটি ক্লান্তিকর প্রক্রিয়া হতে পারে কারণ ম্যাক্রো সংজ্ঞায়িত করার সময় প্রোগ্রামারকে অবশ্যই প্রতিটি ধ্রুবক মানকে ম্যানুয়ালি সংজ্ঞায়িত করতে হবে।

উপসংহার

সি-তে এনাম প্রোগ্রামটিকে স্বতন্ত্র প্রোগ্রাম বা ছোট আকারের প্রকল্পগুলির জন্য একটি alচ্ছিক পদ্ধতি হিসেবে বিবেচনা করা যেতে পারে কারণ প্রোগ্রামাররা সবসময় একটি এনামের পরিবর্তে ম্যাক্রো ব্যবহার করতে পারে। যাইহোক, অভিজ্ঞ প্রোগ্রামাররা বড় আকারের সফটওয়্যার ডেভেলপমেন্ট প্রজেক্টের জন্য ম্যাক্রোর উপর enum ব্যবহার করতে থাকে। এটি পরিষ্কার এবং পাঠযোগ্য প্রোগ্রাম লিখতে সাহায্য করে।