Menu
Coddy logo textTech

הכרזה על Enums ושימוש בהם

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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. בפונקציה הראשית:
    • להכריז על שלושה משתנים מטיפוס 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.

נסו בעצמכם

#include <stdio.h>

// TODO: הגדירו כאן את ה-enum TaskStatus

int main() {
    // קראו קלט עבור הסטטוסים של שלוש משימות
    int status1, status2, status3;
    scanf("%d", &status1);
    scanf("%d", &status2);
    scanf("%d", &status3);
    
    // TODO: הכריזו על שלושה משתנים מסוג enum TaskStatus (task1, task2, task3)
    
    // TODO: הקצו ערכי enum על סמך הקלט
    
    // TODO: הדפיסו את הסטטוסים של המשימות
    
    // TODO: ספרו את המשימות בכל קטגוריה
    
    // TODO: חשבו והדפיסו את מספר המשימות הפעילות
    
    return 0;
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר C אונליין