با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با یکی دیگر از جلسات دوره کامل آموزش #C در خدمت شما دوستان هستیم . در بخش قبلی با اشاره گر به ساختمان در ++C آشنا شدید، در این جلسه قصد داریم به آموزش نوع داده Enum در ++C بپردازیم.
نوع داده شمارشی یک نوع داده است که توسط کاربر تعریف می شود و شامل ثابت های عددی می باشد.
برای تعریف یک نوع شمارشی از کلمه کلیدی enum استفاده می کنیم:
1 | enum season { spring, summer, autumn, winter }; |
در اینجا نام نوع شمارشی season است.
و spring, summer و winter مقادیر نوع season هستند.
به صورت پیش فرض spring مقدار ۰ را دارد، سعئئثق مقدار ۲ را دارد و… .
می توانید مقدار پیش فرض عناصر enum را تغییر دهید:
1 2 3 4 5 6 | enum season { spring = 0, summer = 4, autumn = 8, winter = 12 }; |
1 2 3 4 5 6 7 8 9 10 11 12 | #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; } |
خروجی:
1 | Day 4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #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; } |
خروجی:
1 | Summer = 4 |
یک متغیر enum تنها یک مقدار از مقادیر ممکن را در بر می گیرد. به مثال توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #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; } |
خروجی:
1 | Size of enum variable 4 bytes. |
این به این دلیل است که سایز integer 4 بایت است.
به همین دلیل enum گزینه خوبی برای کار کردن با پرچم هاست.
این کار ها را با ساختمان ها (Structure) نیز می توانید انجام دهید اما enum ها کارایی و انعطاف پذیری بیشتری دارند.
بگذارید یک مثال بزنیم.
1 2 3 4 5 | enum designFlags { ITALICS = 1, BOLD = 2, UNDERLINE = 4 } button; |
فرض کنید که می خواهید یک دکمه برای برنامه خود طراحی کنید. می توانید flag های ITALICS, BOLD و UNDERLINE را برای کار با متن تنظیم کنید.
برای اینکه ما مقادیر توان ۲ برای ثابت های عددی مان استفاده کرده ایم دلیلی وجود دارد.
1 2 3 4 5 | // In binary ITALICS = 00000001 BOLD = 00000010 UNDERLINE = 00000100 |
به دلیل اینکه ثابت های عددی توانی از ۲ هستند، می توانید دو یا چند flag را بدون تداخل با هم ترکیب کرد.
با این کار می توانید چند یا بیشتر flag را آن واحد انتخاب کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #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; } |
خروجی:
1 | 5 |
تقریبا هر چیزی را بدون استفاده از نوع شمارشی می توانید انجام دهید.
با این حال آن ها می توانند در موقعیت های خاصی مفید واقع شوند.
جلسه نوع داده Enum در ++C نیز به پایان رسید.
در جلسه بعد به آموزش شی گرایی در ++C خواهیم پرداخت. با ما همراه باشید.