بسم الله الرحمن الرحيم
في هذه المقالة سندرس ال Enum .. ماهو .. وماهي فائدته .. وكيف نستخدمه ..
نبدأ على بركة الله ..
كلمة Enum هي مختصرة من المصطلح Enumeration ..معناه بالعربية تعداد ..
فالEnumeration هو نوع يتم تعريفه من قبل المستخدم .. ومميزات هذا النوع انه عبارة عن مجموعة من العناصر ..
اي ان هذا النوع يتكون من عناصر فهو ليس الكلاس .. فلا يحتوي على دوال او متغيرات او اي شئ اخر .. وانما هو نوع يتكون من عناصر .. فاسم التابع للنوع المبرمج بال enum يحتوي على عناصر ذلك النوع ..
فمثلا ..
يمكننا انشاء Enumeration خاص بايام الاسبوع ..
اي انه يمكننا ان نبرمج تعداد مجموعة خاصه بايام الاسبوع .. فاسم النوع سيكون week وتحت اسم هذا النوع يوجد اسماء ايام الاسبوع .. فنبدأ باحد ... اثنين .. ثلاثاء الى اخر يوم وهو السبت ...
تستخدم الكلمة المحجوزه enum لتعريف النوع الجديد ..
الشكل العام ..او القاعدة العامه ..
enum [tag] [: type] {enum-list} [declarator]; // for definition of enumerated type
enum tag declarator; // for declaration of variable of type tagسنقوم الان بتفصيل القاعده اعلاه ..
اولا .. enum ..تستخدم لتخبر المترجم بان الاسم الذي بعدها هو اسم النوع الجديد المعرف ..
ثانيا .. tag .. تشير هذه الكلمة في القاعده الى اسم الEnumeration الذي نريد تعريفه ..
ثالثا .. {enum-list} في داخل هذه الاقواس نقوم بوضع او كتابة العناصر التي نريد ان يتضمنها النوع الجديد ..
رابعا .. بعد تتم عملية تعريف اسم النوع وعناصره .. نستخدم هذا الاسم لتعريف متغير تابع لهذا النوع ..
والمتغير الجديد الناتج هذا يحتوي على قيمة والقيمة هي احدى عناصر النوع الجديد .. ونحن نقوم باعطاء تلك قيمة ذلك العنصر كقيمة ابتدائية ..
مثال عن تعريف نوع جديد خاص بماركات السيارات وهو على الشكل التالي ..
enum e_acomany {
Audi,
BMW,
Cadillac,
Ford,
Jaguar,
Lexus
Maybach,
RollsRoyce,
Saab
};اسم النوع هنا هو e_acomany ويحتوي على العناصر (اسماء ماركات السيارات ) .
ملاحظة مهمة جدا وهي انه عند تعريف العناصر الخاصه بنوع جديد توضع فارزة عادية بين عنصر وعنصر .. على الشكل التالي ..
enum en_name{ element1 , element2 }اي يمكن القول بانها تشبه المجموعات بالرياضيات ..
اسم المجموعة ثم يتبعها قوس المجموعه والعناصر وبين عنصر وعنصر فارزة تفصل بين العناصر ..
اكملنا الان تعريف النوع ..
ولكن بقي لدينا تعريف متغير من هذا النوع الجديد واعطاء قيمة له ..
وهي عملية بسيطة تشبه تعريف المتغيرات بالصورة العادية ..
int x = 1;
وهي على الصيغة التالية ..
e_acompany my_car_brand; my_car_brand = RollsRoyce;
فنجد اننا قمنا باستخدام اسم enum اي اسم النوع وهو e_acompany وبعده my_car وهو اسم المتغير واعطيناه القيمة RollsRoyce وهو احد العناصر التي وضعناها في داخل الenum اثناء تعريف النوع ..
لنأخذ المثال التالي ..
main ()
{
enum Currancy = {STERLING, DOLLAR, RUPEE};
enum Currancy GreenBack = DOLLAR; // Valid in C and C++
Currancy Pounds = STERLING; // Valid in C++ only.
}والمثال التالي ايضا ..
main ()
{
enum Currancy = {STERLING, DOLLAR, RUPEE};
Currancy Pounds = STERLING;
Pounds = 2; // Invalid Statement.
Pounds++; // Invalid Statement.
}من خلال المثالين السابقين لاحظنا الاخطاء التي يجب ان ننتبه لها ونراعيها عند استعمالنا لل enum . ..
ملاحظة اخيره ومهمة جدا ..
افتراضيا .. كل عنصر من عناصر النوع الجديد المبرمج .. ياخذ رقم تعداد خاص به .. ويبدأ اول عنصر من عناصر المجموعة الجديده بالرقم صفر .. ولكن لا يمكننا استخدام هذه الارقام الخاصه بالعناصر في برامجنا بصورة مباشرة ...
اي انه لايمكن ان نستعمل رقم العنصر مع المتغير اثناء تعريفه .. وهذا ما ورد في المثال الاخير ..
Pounds = 2; // Invalid Statement
وانما نعطي اسم العنصر للمتغير لكي يحتويه بداخله ..
ه



