الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بنية الenum

بدأه yahya91 في 12 أغسطس 2010 · 0 رد · 432 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1

enum

لو أردنا بناء برنامج له علاقة بتنظيم إشارة المرور ،فإنه لا بد أن نتعامل مع ثلاث قيم للإشارة و هي الأحمر و البرتقالي و الأخضر و لكن للأسف لا يوجد نوع بيانات في لغة السي بلس بلس لونية ، و لكن من الحلول التي قد يلجأ إليها الإنسان هي أن نقوم بإسناد الرقم و احد إلى الأحمر و اثنان للبرتقالي و ثلاثة إلى الأخضر و لكن هذا سيسبب تلبك لدى من سيقرأ شفرتك المصدرية (الكود) في لو لم تعلق على هذه الإسنادات و لذلك فإن لغة السي بلس بلس أتاحت لك بنية هي الenum وهي اختصاراً لـenumerated type و ترجمتها كما حاولت (و لا أعلم مدى صحة ذلك) الأنواع الفردية الخاصة حيث جاء في ترجمة enumerated التالي specify individually و هي بالفعل كذلك لأنها تتيح لك هذه البنية أن تشكل نوع البيانات الخاص بك فقد تكون قيم إشارة ضوئية و قد تكون غير ذلك .

المهم لنبدأ بالجانب العملي من هذه البنية و هذا مثال عليها في برنامج للإشارات الضوئية و سنورد بعد هذا البرنامج مقارنة بينه و بين برنامج آخر لنفس الغرض لا يستخدم الـenum

//enum arabic tutorial
#include<iostream>
using namespace std;
int main()
{
    enum passinglight 
    {
         PASSINGLIGHT_RED,//assigned to 0
         PASSINGLIGHT_orange,//assigned to 1
         PASSINGLIGHT_green,//assigned to 2
         };
         int i=PASSINGLIGHT_RED;
         cout<<i<<endl;
         i=PASSINGLIGHT_orange;
         cout<<i<<endl;
         i=PASSINGLIGHT_green;
         cout<<i<<endl;
         cin.get();//for Dev-c++ to stay the DOS window open after the programme ends. 
 return 0;   
}

الخرج

0

1

2

لإنشاء هذه البنية تكتب enum ثم الاسم الخاص بك و ثم القوسين المتوسطات و بنهاية القوس الثاني ; ثم في الداخل نكتب المتغيرات الخاصة بنا مسبوقة باسم enum الذي أنشأناه و لكن بأحرف كبيرة و لا نضع فاصلة بينهما و لكن نضع فاصلة تحتية ' _ ' بدلا من الفراغ و ننهيه بالفاصلة' ,' و بشكل تلقائي يتم إسناد قيمة صحيحية لكل متحول : للمتحول الأول 0 و الذي يليه 1 و هكذا بالترتيب و ننشئ ما نريد من المتحولات من النوع الجديد الذي أنشأناه في البرنامج ،مع العلم أننا يمكن أن نسند لهم ما نريد من أرقم و يتابع بعدها المترجم الإسناد بدءاً من الرقم الذي أسناده و يزيد واحد واحد و هذا مثال على هذا التعديل

//enum arabic tutorial
#include<iostream>
using namespace std;
int main()
{
    enum passinglight 
    {
         PASSINGLIGHT_RED=-2,//assigned to
         PASSINGLIGHT_orange,//assigned to -1
         PASSINGLIGHT_green,//assigned to 0
         };
         passinglight  i=PASSINGLIGHT_RED;
         cout<<i<<endl;
         i=PASSINGLIGHT_orange;
         cout<<i<<endl;
         i=PASSINGLIGHT_green;
         cout<<i<<endl;
         cin.get();//for Dev-c++ to stay the DOS window open after the programme ends. 
 return 0;   
}

الخرج

-2

-1

0

و يمكن أن نسند إثنان أو كلهم بالأرقام التي نريد و الباقي الذي لم يسند له أي شيء يوضع له قيمة كما شرحنا سابقاً مثال

enum passinglight 
    {
         PASSINGLIGHT_RED=-2,
         PASSINGLIGHT_orange,//assigned to -1
         PASSINGLIGHT_green=2,
         };

و الآن أعود لكتابه برنامج كالسابق و لكن دون استخدام تقنية enum

//enum arabic tutorial
#include<iostream>
using namespace std;
int main()
{
    const int red=1;
    const int orange=2;
    const int green=3;
         int x=red;
         int y=orange;
         int z=green;
         cout<<x<<"\n"<<y<<"\n"<<z<<endl;
         }

         cin.get();//for Dev-c++ to stay the DOS window open after the programme ends. 
 return 0;   
}

تم تعديل هذه المشاركة بواسطة yahya91 في 12 أغسطس 2010 في 00:45

1

مواضيع مشابهة