نوع شمارشی (enum) در زبان ++C — راهنمای جامع

در این مقاله با طرز کار با نوع شمارشی (enum) در زبان ++C آشنا میشوید. ضمناً موارد استفاده شایع این نوع را در زبان برنامهنویسی ++C توضیح خواهیم داد. برای مطالعه بخش قبلی این سری مقالات روی لینک زیر کلیک کنید:
منظور از نوع شمارشی یک نوع داده تعریفشده از سوی کاربر است که شامل ثابتهای صحیحی است. برای تعریف یک نوع شمارشی باید از کلیدواژه enum استفاده کنیم:
enum season { spring, summer, autumn, winter };
در کد فوق نام شمارش season است و عبارتهای spring ،summer و winter از نوع season هستند.
Spring به صورت پیشفرض مقدار 0 دارد، summer مقدار 1 و همین طور تا آخر هر فصل یک عدد دارد. در صورت نیاز میتوان مقدار پیشفرض یک عنصر enum را در زمان اعلان تغییر داد:
enum season { spring = 0, summer = 4, autumn = 8, winter = 12 };
اعلان نوع شمارشی
هنگامی که یک نوع شمارشی ایجاد میکنید، تنها نقشه اولیه آن متغیر ایجاد میشود.
در کد زیر با روش ایجاد متغیری از نوع enum آشنا میشوید:
enum boolean { false, true }; // inside function enum boolean check;
در کد فوق متغیر به نام check با نوع enum Boolean ایجاد شده است. در ادامه مثال دیگری از اعلان همان متغیر check با استفاده از ساختار متفاوت را ملاحظه میکنید:
enum boolean { false, true } check;
مثال 1: نوع شمارشی
#include <iostream> using namespace std; enum week { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main() { week today; today = Wednesday; cout << "Day " << today+1; return 0; }
خروجی
Day 4
مثال 2: تغییر دادن مقدار پیشفرض Enum-ها
#include <iostream> using namespace std; enum seasons { spring = 34, summer = 4, autumn = 9, winter = 32}; int main() { seasons s; s = summer; cout << "Summer = " << s << endl; return 0; }
خروجی
Summer = 4
دلیل استفاده از نوع شمارشی در ++C چیست؟
متغیر شمارشی تنها یک مقدار را از میان مقادیر مختلف میگیرد. برای درک بهتر به مثال زیر توجه کنید:
#include <iostream> using namespace std; enum suit { club = 0, diamonds = 10, hearts = 20, spades = 3 } card; int main() { card = club; cout << "Size of enum variable " << sizeof(card) << " bytes."; return 0; }
خروجی
Size of enum variable 4 bytes.
دلیل این حالت آن است که اندازه عدد صحیح 4 بایت است. بدین ترتب enum به یک گزینه مناسب برای کار با فلگها تبدیل میشود. همین کار را با استفاده از ساختارهای ++C نیز میتوان انجام داد. با این حال کار با enum-ها کارایی بالایی را به همراه انعطافپذیری ایجاد میکند.
شیوه استفاده از enum برای فلگها
به مثال زیر توجه کنید:
enum designFlags { ITALICS = 1, BOLD = 2, UNDERLINE = 4 } button;
فرض کنید دکمهای برای اپلیکیشن ویندوزی طراحی میکنید. میتوانید فلگهای ITALICS ،BOLD و UNDERLINE را برای کار با متن تنظیم کنید. دلیل خوبی وجود دارد که چرا همه ثابتهای تجمعی در شبه کد قبلی توانی از 2 هستند:
// In binary ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100
از آنجا که ثابتهای تجمعی توانی از 2 هستند، میتوان دو یا چند فلگ را بدون همپوشانی با استفاده از عملگر بیتی OR | با هم ترکیب کرد. بدین ترتیب میتوان دو یا چند فلگ را همزمان انتخاب کرد. به مثال زیر توجه کنید:
#include <iostream> using namespace std; enum designFlags { BOLD = 1, ITALICS = 2, UNDERLINE = 4 }; int main() { int myDesign = BOLD | UNDERLINE; // 00000001 // | 00000100 // ___________ // 00000101 cout << myDesign; return 0; }
خروجی
5
هنگامی که خروجی برابر با 5 است، میدانیم که متن باید درشت و زیرخطدار باشد. ضمناً میتوان فلگ را به الزامات نیز اضافه کرد:
if (myDesign & ITALICS) { // code for italics }
در کد فوق حالت italics را به طراحی خود اضافه میکنیم. توجه کنید که تنها کد مربوط به italics درون گزاره if نوشته شده است. شما بدون استفاده از انواع شمارشی، تقریباً همه چیز را میتوانید در زبان برنامهنویسی ++C پیادهسازی کنید، اما توجه داشته باشید که این نوع داده در برخی موارد میتواند کاملاً کارآمد باشند. این همان چیزی است که برنامه نویسان خوب را از برنامه نویسان عالی جدا میکند. برای مطالعه بخش بعدی روی لینک زیر کلیک کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- آموزش برنامه نویسی C++
- مجموعه آموزشهای برنامهنویسی
- آموزش ++C — راهنمای شروع یادگیری
- رشته های ++C — راهنمای جامع
==