Menu
Coddy logo textTech

Enums במשפטי switch

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C של Coddy. שיעור 57 מתוך 63.

אחד השילובים העוצמתיים ביותר בתכנות C הוא שימוש בערכי enum עם פקודות switch. השילוב הזה יוצר לוגיקה של זרימת בקרה קריאה וניתנת לתחזוקה במיוחד, שמבטאת בבירור את תהליך קבלת ההחלטות של התוכנית שלך.

כשמשתמשים בקבועי enum כמקרים במשפט switch, הקוד מתעד את עצמו. במקום לראות מספרים מסתוריים כמו case 0: או case 5:, רואים שמות בעלי משמעות שמעבירים מיד את מטרתם:

switch (day) {
    case MONDAY:
    case TUESDAY:
    case WEDNESDAY:
    case THURSDAY:
    case FRIDAY:
        printf("It's a weekday\n");
        break;
    case SATURDAY:
    case SUNDAY:
        printf("It's a weekend\n");
        break;
}

הגישה הזו הופכת את הקוד שלך להרבה יותר קל להבנה ולשינוי. כל מי שקורא את הקוד הזה יודע מיד מה כל מקרה מייצג, והוספת מקרים חדשים או שינוי הלוגיקה נעשים פשוטים. המהדר גם עוזר לזהות שגיאות — אם תאיית לא נכון קבוע של enum, תקבל שגיאת קומפילציה במקום באג שקט.

challenge icon

אתגר

קל

צרו תוכנית C שמשתמשת ב-enum עם פקודת switch כדי לבנות מערכת פשוטה להמלצות מזג אוויר. התוכנית שלכם צריכה:

  1. להגדיר enum בשם WeatherCondition עם הקבועים הבאים בסדר המדויק הזה:
    • SUNNY
    • CLOUDY
    • RAINY
    • STORMY
    • SNOWY
  2. לכתוב פונקציה בשם getWeatherAdvice ש:
    • מקבלת פרמטר מסוג enum WeatherCondition בשם weather
    • לא מחזירה ערך (void)
    • משתמשת בפקודת switch כדי להדפיס עצה המתאימה למזג האוויר:
      • עבור SUNNY: להדפיס Perfect day for outdoor activities!
      • עבור CLOUDY: להדפיס Good day for a walk, no sun protection needed.
      • עבור RAINY: להדפיס Don't forget your umbrella!
      • עבור STORMY: להדפיס Stay indoors and avoid travel.
      • עבור SNOWY: להדפיס Drive carefully and dress warmly.
  3. לכתוב פונקציה בשם getActivitySuggestion ש:
    • מקבלת פרמטר מסוג enum WeatherCondition בשם weather
    • לא מחזירה ערך (void)
    • משתמשת בפקודת switch כדי להציע פעילויות בהתאם למזג האוויר:
      • עבור SUNNY: להדפיס Suggested activity: Beach or hiking
      • עבור CLOUDY: להדפיס Suggested activity: Photography or gardening
      • עבור RAINY: להדפיס Suggested activity: Reading or indoor games
      • עבור STORMY: להדפיס Suggested activity: Movie marathon
      • עבור SNOWY: להדפיס Suggested activity: Skiing or hot cocoa
  4. בפונקציה הראשית:
    • להכריז על משתנה מסוג enum WeatherCondition בשם currentWeather
    • לקרוא מספר שלם מהקלט שמייצג את מצב מזג האוויר (0, 1, 2, 3 או 4)
    • להקצות ל-currentWeather את ערך ה-enum המתאים בהתאם לקלט
    • להדפיס את מצב מזג האוויר הנוכחי בדיוק בפורמט הזה: Current weather: [numeric_value]
    • לקרוא לפונקציה getWeatherAdvice עם currentWeather
    • לקרוא לפונקציה getActivitySuggestion עם currentWeather

האתגר הזה מדגים את העוצמה שבשילוב enums עם פקודות switch ליצירת קוד קריא וקל לתחזוקה. במקום להשתמש במקרים מספריים מבלבלים בפקודות ה-switch שלכם, תשתמשו בקבועי enum בעלי משמעות שמבטאים בבירור את הלוגיקה של התוכנית. פקודת ה-switch מתעדת את עצמה, ולכן קל להבין מה מייצג כל מקרה ולשנות את ההתנהגות לפי הצורך.

נסו בעצמכם

#include <stdio.h>

// TODO: להגדיר כאן את ה-enum ‏WeatherCondition

// TODO: לממש כאן את הפונקציה getWeatherAdvice

// TODO: לממש כאן את הפונקציה getActivitySuggestion

int main() {
    // לקרוא קלט
    int weatherInput;
    scanf("%d", &weatherInput);
    
    // TODO: להכריז על המשתנה currentWeather ולהקצות לו ערך enum על סמך הקלט
    
    // TODO: להדפיס את תנאי מזג האוויר הנוכחי בפורמט "Current weather: [numeric_value]"
    
    // TODO: לקרוא לפונקציה getWeatherAdvice
    
    // TODO: לקרוא לפונקציה getActivitySuggestion
    
    return 0;
}
quiz iconבחנו את עצמכם

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

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

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