Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التصريح عن Enums واستخدامها

جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 56 من 63.

الآن بعد أن قمت بتعريف enum، يمكنك إنشاء متغيرات من نوع enum هذا وتعيين قيم ذات معنى لها. هذا هو المكان الذي تتألق فيه الـ enums حقًا - فبدلاً من التعامل مع أرقام محيرة، يمكنك استخدام أسماء وصفية.

للتصريح عن متغير من نوع enum، تستخدم نفس الصيغة المستخدمة للتصريح عن أي متغير آخر:

enum DayOfWeek today;
enum DayOfWeek weekend_day;

يمكنك بعد ذلك تعيين قيم لهذه المتغيرات باستخدام الثوابت المسماة من التعداد (enum) الخاص بك:

today = WEDNESDAY;
weekend_day = SATURDAY;

قارن هذا باستخدام الأرقام الخام: today = 2; و weekend_day = 5;. تخبرك نسخة التعداد (enum) فوراً باليوم الذي تعمل معه، بينما تتطلب منك الأرقام تذكر ما يمثله كل قيمة. هذا يجعل الكود الخاص بك أكثر قابلية للقراءة وأقل عرضة للأخطاء.

challenge icon

التحدي

سهل

قم بإنشاء برنامج بلغة C يوضح كيفية التصريح عن متغيرات enum واستخدامها لنظام إدارة مهام بسيط. يجب أن يقوم برنامجك بما يلي:

  1. تعريف enum باسم TaskStatus مع الثوابت التالية بهذا الترتيب تماماً:
    • PENDING
    • IN_PROGRESS
    • COMPLETED
    • CANCELLED
  2. في الدالة الرئيسية (main function):
    • التصريح عن ثلاثة متغيرات من نوع enum TaskStatus باسم task1 و task2 و task3
    • قراءة ثلاثة أعداد صحيحة من المدخلات تمثل حالة كل مهمة (0، 1، 2، أو 3)
    • تعيين قيم enum المقابلة لكل متغير مهمة بناءً على المدخلات:
      • إذا كانت المدخلات 0، قم بتعيين PENDING
      • إذا كانت المدخلات 1، قم بتعيين IN_PROGRESS
      • إذا كانت المدخلات 2، قم بتعيين COMPLETED
      • إذا كانت المدخلات 3، قم بتعيين CANCELLED
    • طباعة حالة كل مهمة باستخدام قيم enum بهذا التنسيق تماماً:
      • Task 1 status: [numeric_value]
      • Task 2 status: [numeric_value]
      • Task 3 status: [numeric_value]
    • عد وطباعة عدد المهام في كل فئة حالة:
      • Pending tasks: [count]
      • In progress tasks: [count]
      • Completed tasks: [count]
      • Cancelled tasks: [count]
    • حساب وطباعة العدد الإجمالي للمهام النشطة (المهام التي تكون إما PENDING أو IN_PROGRESS) بهذا التنسيق تماماً: Active tasks: [count]

يوضح هذا التحدي كيف تجعل متغيرات enum الكود أكثر قابلية للقراءة باستخدام أسماء ذات معنى بدلاً من الأرقام الخام. ستتدرب على التصريح عن متغيرات enum، وتعيين قيم enum بناءً على المدخلات، واستخدام ثوابت enum في المقارنات، وإجراء الحسابات باستخدام قيم enum.

ورقة مرجعية

للإعلان عن متغيرات من نوع enum، استخدم نفس الصيغة المستخدمة للإعلان عن أي متغير آخر:

enum DayOfWeek today;
enum DayOfWeek weekend_day;

قم بتعيين قيم لمتغيرات enum باستخدام الثوابت المسماة من الـ enum الخاص بك:

today = WEDNESDAY;
weekend_day = SATURDAY;

استخدام أسماء enum بدلاً من الأرقام الخام يجعل الكود أكثر قابلية للقراءة وأقل عرضة للأخطاء. قارن today = WEDNESDAY; بـ today = 2; - نسخة الـ enum توضح على الفور اليوم الذي تتعامل معه.

جرّب بنفسك

#include <stdio.h>

// TODO: قم بتعريف التعداد TaskStatus هنا

int main() {
    // قراءة المدخلات لثلاث حالات للمهام
    int status1, status2, status3;
    scanf("%d", &status1);
    scanf("%d", &status2);
    scanf("%d", &status3);
    
    // TODO: قم بالتصريح عن ثلاثة متغيرات من نوع التعداد TaskStatus (task1، task2، task3)
    
    // TODO: تعيين قيم التعداد بناءً على المدخلات
    
    // TODO: طباعة حالات المهام
    
    // TODO: عد المهام في كل فئة
    
    // TODO: حساب وطباعة عدد المهام النشطة
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow