سی زبان میں اینوم کا استعمال کیسے کریں۔

How Use Enum C Language



سی پروگرامنگ زبان میں اینوم پروگرام کو مستقل اقدار کی وضاحت کے لیے استعمال کیا جاتا ہے ، جو صاف اور پڑھنے کے قابل پروگرام لکھنے میں بہت مددگار ہے۔ سافٹ وئیر کو بہتر پڑھنے اور برقرار رکھنے کے لیے پروگرامرز عام طور پر اپنے پروگراموں میں نامزد انٹیگریٹ کنسٹینٹس کی وضاحت کے لیے گنتی کا استعمال کرتے ہیں۔ یہ مضمون enum پر تفصیلی بحث کرے گا۔

نحو۔

enum <اینوم قسم کا نام۔> {
گنتی_کونسٹنٹ_ عنصر۔-،
گنتی_کونسٹنٹ_ عنصر۔-،
گنتی_کونسٹنٹ_ عنصر۔-،
………،
گنتی_کونسٹنٹ_ عنصر۔-n،
}؛

Enumeration_Constant_Element-1 کی ڈیفالٹ ویلیو 0 ہے ، Enumeration_Constant_Element-2 کی ویلیو 1 ہے ، Enumeration_Constant_Element-3 کی ویلیو 2 ہے ، اور Enumeration_Constant_Element-n کی ویلیو (n-1) ہے۔







اینوم میں گہری غوطہ۔

اب ، چونکہ ہم گنتی کی قسم کی وضاحت کے لیے نحو کو جانتے ہیں ، آئیے ایک مثال دیکھتے ہیں:



enumخرابی{
IO_ERROR،
DISK_ERROR،
نیٹ ورک_ررر۔
}؛

enum کی ورڈ کو ہمیشہ گنتی کی قسم کی وضاحت کے لیے استعمال کیا جانا چاہیے۔ لہذا ، جب بھی آپ گنتی کی قسم کی وضاحت کرنا چاہتے ہیں ، آپ کو پہلے اینوم کلیدی لفظ استعمال کرنا ہوگا۔ enum مطلوبہ الفاظ کے بعد ، آپ کو لازمی طور پر درست شناخت کنندہ کا استعمال کرنا چاہیے۔



مندرجہ بالا مثال میں ، مرتب کرنے والا IO_ERROR کو لازمی قدر: 0 ، DISK_ERROR کو لازمی قدر: 1 اور NETWORK_ERROR کو لازمی قیمت پر تفویض کرے گا: 2 ڈیفالٹ ، پہلے enum- عنصر کو ہمیشہ قدر 0 ، اگلی کو تفویض کیا جاتا ہے enum-element کو قیمت 1 ، اور اسی طرح تفویض کیا گیا ہے۔





اس ڈیفالٹ رویے کو تبدیل کیا جا سکتا ہے اگر ضروری ہو تو مسلسل انٹیگریو ویلیو کو واضح طور پر تفویض کرکے ،

enumخرابی{
IO_ERROR= ،
DISK_ERROR،
نیٹ ورک_ررر۔= ،
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 متغیر ہے۔

اب ہم اینوم کے مختلف استعمال کو سمجھنے کے لیے درج ذیل مثالیں دیکھیں گے۔

  • مثال 1: ڈیفالٹ اینوم تعریف کا استعمال۔
  • مثال 2: حسب ضرورت اینوم تعریف استعمال۔
  • مثال 3: مسلسل اظہار کا استعمال کرتے ہوئے enum تعریف۔
  • مثال 4: اینوم اسکوپ۔

مثال 1: ڈیفالٹ اینوم ڈیفینیشن استعمال۔

اس مثال میں ، آپ سیکھیں گے کہ ڈیفالٹ مستقل اقدار کے ساتھ گنتی کی قسم کی وضاحت کیسے کی جائے۔ مرتب اینوم عناصر کو ڈیفالٹ ویلیوز تفویض کرنے کا خیال رکھے گا۔ ذیل میں ، آپ مثال کے پروگرام اور متعلقہ آؤٹ پٹ دیکھیں گے۔

#شامل کریں

/ * اینوم کی قسم کی وضاحت کریں */
enumخرابی{
IO_ERROR،
DISK_ERROR،
نیٹ ورک_ررر۔
}؛

intمرکزی()
{
enumغلطی Hw_Error؛ /* اینوم متغیر بنانا*/

پرنٹ ایف ('Hw_Error کو IO_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=IO_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو DISK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=DISK_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو NETWORK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=نیٹ ورک_ررر۔؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

واپسی ؛
}

:

مثال 2: اپنی مرضی کے مطابق تعریف کا استعمال۔

اس مثال میں ، آپ سیکھیں گے کہ کسٹم کی مستقل قدر کے ساتھ گنتی کی قسم کی وضاحت کیسے کی جائے۔ نیز ، یہ مثال آپ کو یہ سمجھنے میں مدد دے گی کہ کس طرح اپنی مرضی کے مطابق مستحکم آغاز کسی بھی بے ترتیب ترتیب میں کیا جا سکتا ہے۔ اس مثال میں ، ہم نے واضح طور پر 1 کی مستقل قدر کی وضاحت کی ہے۔سینٹاور 3rdenum عناصر (یعنی بالترتیب IO_ERROR اور NETWORK_ERROR) ، لیکن ہم نے 2 کے لیے واضح آغاز کو چھوڑ دیا ہےاین ڈیاور 4ویںعناصر. اب یہ مرتب کرنے والے کی ذمہ داری ہے کہ 2 کو ڈیفالٹ ویلیوز تفویض کرے۔این ڈیاور 4ویںenum عناصر (یعنی بالترتیب DISK_ERROR اور PRINT_ERROR)۔ DISK_ERROR کو 3 کی قیمت اور PRINT_ERROR کو 9 کی قیمت پر تفویض کیا جائے گا۔ ذیل میں ، آپ مثال کے پروگرام اور آؤٹ پٹ دیکھیں گے۔

#شامل کریں

/* enum قسم کی وضاحت کریں - اپنی مرضی کے مطابق آغاز*/
enumخرابی{
IO_ERROR= ،
DISK_ERROR،
نیٹ ورک_ررر۔= ،
PRINT_ERROR
}؛

intمرکزی()
{

/* enum متغیر کا اعلان کریں*/
enumغلطی Hw_Error؛

پرنٹ ایف ('Hw_Error کو IO_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=IO_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو DISK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=DISK_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو NETWORK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=نیٹ ورک_ررر۔؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو PRINT_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=PRINT_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

واپسی ؛
}

:

مثال 3: مسلسل اظہار کا استعمال کرتے ہوئے Enum تعریف۔

اس مثال میں ، آپ سیکھیں گے کہ کس طرح مسلسل اظہار کو استعمال کرنا ہے تاکہ enum عناصر کی مستقل قدر کی وضاحت کی جا سکے۔

#شامل کریں

/* اینوم کی قسم کی وضاحت کریں - مستقل اظہار کا استعمال کرتے ہوئے اپنی مرضی کے مطابق آغاز۔
مستقل اظہار یہاں اس صورت میں استعمال کیا جا رہا ہے:
a. IO_ERROR اور
ب نیٹ ورک_ررر۔
یہ اینوم عناصر کی وضاحت کا ایک غیر معمولی طریقہ ہے۔ تاہم ، یہ
پروگرام ظاہر کرتا ہے کہ اینوم عناصر کی ابتدا کا یہ طریقہ c میں ممکن ہے۔
* /


enumخرابی{
IO_ERROR= + * + ،
DISK_ERROR،
نیٹ ورک_ررر۔= == ،
PRINT_ERROR
}؛

intمرکزی()
{

/* enum متغیر کا اعلان کریں*/
enumغلطی Hw_Error؛

پرنٹ ایف ('Hw_Error کو IO_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=IO_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو DISK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=DISK_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو NETWORK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=نیٹ ورک_ررر۔؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو PRINT_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=PRINT_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

واپسی ؛
}

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

مثال 4: اینوم اسکوپ۔

اس مثال میں ، آپ سیکھیں گے کہ اسکوپنگ رول اینوم کے لیے کیسے کام کرتا ہے۔ ایک میکرو (#ڈیفائن) کو اینوم کے بجائے ایک کنسٹنٹ کی وضاحت کے لیے استعمال کیا جا سکتا تھا ، لیکن اسکوپنگ رول میکرو کے لیے کام نہیں کرتا۔

#شامل کریں

intمرکزی()
{

/ * اینوم کی قسم کی وضاحت کریں */
enumخرابی_1۔{
IO_ERROR= 10۔،
DISK_ERROR،
نیٹ ورک_ررر۔= ،
PRINT_ERROR
}؛


{

/* اندرونی دائرہ کار میں اینوم کی قسم کی وضاحت کریں*/
enumخرابی_1۔{
IO_ERROR= بیس،
DISK_ERROR،
نیٹ ورک_ررر۔= 35۔،
PRINT_ERROR
}؛

/* enum متغیر کا اعلان کریں*/
enumError_1 Hw_Error؛
پرنٹ ایف ('Hw_Error کو IO_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=IO_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو DISK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=DISK_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو NETWORK_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=نیٹ ورک_ررر۔؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛

پرنٹ ایف ('nHw_Error کو PRINT_ERROR پر سیٹ کرنا۔n')؛
Hw_ غلطی=PRINT_ERROR؛
پرنٹ ایف (Hw_Error کی قدر =٪ d۔n'،Hw_ غلطی)؛
}
واپسی ؛
}

اینوم اور میکرو کے مابین موازنہ۔

اینوم۔ وسیع
اسکوپنگ قاعدہ enum کے لیے قابل اطلاق ہے۔ اسکوپنگ کا اصول میکرو کے لیے لاگو نہیں ہے۔
ڈیفالٹ اینوم ویلیو اسائنمنٹ خود بخود ہوتا ہے۔

اینوم بڑی تعداد میں کنسٹینٹس کی وضاحت کرنے میں بہت مددگار ہے۔ مرتب کرنے والا پہلے سے طے شدہ مستقل قیمت کا آغاز کرتا ہے۔

پروگرامر کے ذریعہ میکرو مسلسل اقدار کا ہمیشہ واضح طور پر ذکر کیا جانا چاہئے۔

یہ بڑی تعداد میں مستقلوں کے لیے ایک تکلیف دہ عمل ہو سکتا ہے کیونکہ میکر کی وضاحت کرتے ہوئے پروگرامر کو ہر مستقل قدر کو دستی طور پر ہمیشہ بیان کرنا چاہیے۔

نتیجہ

C میں enum پروگرام کو اسٹینڈ پروگرام یا چھوٹے سائز کے منصوبوں کے لیے ایک اختیاری طریقہ سمجھا جا سکتا ہے کیونکہ پروگرامرز ہمیشہ ایک enum کے بجائے میکرو استعمال کر سکتے ہیں۔ تاہم ، تجربہ کار پروگرامرز بڑے پیمانے پر سافٹ وئیر ڈویلپمنٹ پروجیکٹس کے لیے میکرو سے زیادہ کا استعمال کرتے ہیں۔ اس سے صاف اور پڑھنے کے قابل پروگرام لکھنے میں مدد ملتی ہے۔