Ο τύπος enum (enumeration) στη γλώσσα C είναι ένας τρόπος να ορίσουμε μια νέα τύπο δεδομένων που περιορίζεται σε ένα συγκεκριμένο σύνολο σταθερών τιμών. Με τη χρήση του enum, μπορούμε να δημιουργήσουμε μια λίστα από διακριτές τιμές που μπορούν να χρησιμοποιηθούν ως συμβολικές σταθερές στο πρόγραμμά μας.

Για παράδειγμα, μπορούμε να ορίσουμε έναν τύπο enum με το όνομα “Color” που θα περιέχει τις τιμές “RED”, “GREEN” και “BLUE”. Στη συνέχεια, μπορούμε να δημιουργήσουμε μεταβλητές τύπου Color και να τους αναθέσουμε μία από τις τιμές του enum.

Η χρήση του enum μας επιτρέπει να γράψουμε πιο αναγνώσιμο και κατανοητό κώδικα, καθώς οι τιμές που μπορούμε να χρησιμοποιήσουμε είναι προκαθορισμένες και περιορισμένες. Αυτό μας βοηθάει να αποφύγουμε λάθη και προβλήματα που προκύπτουν από την αναθεώρηση και την αντιστοίχιση αριθμητικών τιμών σε συμβολικές σταθερές.

Για να δημιουργήσετε ένα enum, χρησιμοποιήστε τη λέξη-κλειδί enum, ακολουθούμενη από το όνομα του enum και διαχωρίστε τα αντικείμενα του enum με κόμμα:

enum colors {
    red,
    green,
    blue
};

Στο παραπάνω παράδειγμα, δημιουργούμε ένα enum με το όνομα “colors”, και περιέχει τα αντικείμενα “red”, “green” και “blue”.

Προσέξτε ότι δεν αναθέτουμε τιμές στα αντικείμενα του enum. Η τιμή του κάθε αντικειμένου υποδηλώνει τη θέση του στο σύνολο, με το πρώτο αντικείμενο να έχει τιμή 0, το δεύτερο 1 κλπ.

Για να έχουμε πρόσβαση στο enum, πρέπει να δημιουργήσουμε μια μεταβλητή του.

Μέσα στη main(), ορίστε τη λέξη-κλειδί enum, ακολουθούμενη από το όνομα του enum (Level) και μετά το όνομα της μεταβλητής του enum (στο παρακάτω παράδειγμα είναι myVar):

#include <stdio.h>

enum Level {
    Low,     // Χαμηλό επίπεδο
    Medium,  // Μεσαίο επίπεδο
    High     // Υψηλό επίπεδο
};

int main() {
    enum Level myVar = Medium;  // Δήλωση και αρχικοποίηση μεταβλητής myVar με την τιμή Medium
    printf("%d", myVar);       // Εκτύπωση της τιμής της μεταβλητής myVar
    return 0;
}

[adinserter block=”2″]

Ο παραπάνω κώδικας συνοψίζει τη χρήση της enum (απαρίθμηση) στη γλώσσα C.

Συγκεκριμένα, ο κώδικας ορίζει μια enum με την ονομασία Level, η οποία περιέχει τρία πιθανά επίπεδα: Low (χαμηλό), Medium (μεσαίο) και High (υψηλό). Η enum δηλώνεται μεταξύ των αγκύλων {} και κάθε στοιχείο της απαρίθμησης αναφέρεται με την αντίστοιχη τιμή.

Στη συνέχεια, ο κώδικας ορίζει τη συνάρτηση main(), η οποία είναι η κύρια συνάρτηση του προγράμματος. Μέσα στη συνάρτηση main(), δηλώνεται μια μεταβλητή με την ονομασία myVar, η οποία είναι τύπου enum Level. Αρχικοποιείται με την τιμή Medium, που είναι το δεύτερο στοιχείο της απαρίθμησης.

Τέλος, η συνάρτηση printf() χρησιμοποιείται για να εκτυπώσει την τιμή της μεταβλητής myVar. Χρησιμοποιείται η μορφοποίηση %d για να εκτυπωθεί ένας ακέραιος αριθμός.

Ο κώδικας θα εκτυπώσει τον αριθμητικό αντίστοιχο της τιμής Medium, που είναι 1 (η αρίθμηση των στοιχείων της enum ξεκινά από το 0).

Έτσι, το αποτέλεσμα της εκτέλεσης του κώδικα θα είναι η εκτύπωση του αριθμού 1.

Τώρα που έχετε δημιουργήσει μια μεταβλητή enum (myVar), μπορείτε να της αναθέσετε μια τιμή.

Η τιμή που ανατίθεται πρέπει να είναι ένα από τα αντικείμενα μέσα στο enum (LOW, MEDIUM ή HIGH):

#include <stdio.h>

enum Level {
    LOW,      // Χαμηλό επίπεδο
    MEDIUM,   // Μεσαίο επίπεδο
    HIGH      // Υψηλό επίπεδο
};

int main() {
    enum Level myVar;    // Δημιουργία μεταβλητής τύπου enum Level με όνομα myVar
    myVar = MEDIUM;      // Ανάθεση της τιμής MEDIUM στη μεταβλητή myVar
    printf("%d", myVar); // Εκτύπωση της τιμής της μεταβλητής myVar
    return 0;
}

Ο παραπάνω κώδικας ορίζει έναν απαρίθμητο τύπο (enum) με όνομα “Level”, που περιέχει τις τιμές “LOW”, “MEDIUM” και “HIGH”. Στη συνέχεια, η συνάρτηση main() δηλώνει μια μεταβλητή myVar τύπου enum Level και την αναθέτει με την τιμή “MEDIUM”. Τέλος, εκτυπώνεται η τιμή της μεταβλητής myVar, που αντιπροσωπεύει το μεσαίο επίπεδο.

Συνολικά, ο κώδικας εκτυπώνει την τιμή της μεταβλητής myVar, που αντιστοιχεί στο μεσαίο επίπεδο (MEDIUM), με τη χρήση της συνάρτησης printf().

Όπως ξέρετε, το πρώτο αντικείμενο ενός enum έχει την τιμή 0. Το δεύτερο έχει την τιμή 1, και ούτω καθεξής.

Για να καθιστούν περισσότερο νόημα στις τιμές, μπορείτε εύκολα να τις αλλάξετε:

enum Level {
    LOW = 10,
    MEDIUM = 50,
    HIGH = 100
};

Στο παραπάνω παράδειγμα, το πρώτο αντικείμενο έχει την τιμή 10, το δεύτερο έχει την τιμή 50, και το τρίτο έχει την τιμή 100. Στη συνέχεια, μπορείτε να δώσετε σε μια μεταβλητή του enum μία από αυτές τις τιμές:

enum Level myVar;
myVar = MEDIUM;

Στο παραπάνω παράδειγμα, η τιμή της μεταβλητής myVar είναι MEDIUM, η οποία έχει την τιμή 50 καθώς είναι το δεύτερο αντικείμενο του enum.

Σημειώστε ότι εάν αναθέσετε μια τιμή σε ένα συγκεκριμένο αντικείμενο, τα επόμενα αντικείμενα θα ενημερώσουν αυτόματα τους αριθμούς τους:

enum Level {
    LOW = 10,
    MEDIUM,    // Will have the value 11
    HIGH       // Will have the value 12
};

Στο παραπάνω παράδειγμα, το πρώτο αντικείμενο έχει την τιμή 10, και οι επόμενα θα έχουν τις τιμές 11 και 12 αντίστοιχα, καθώς δεν ανατίθεται εξαρχής κάποια τιμή σε αυτά.

Τα enums χρησιμοποιούνται συχνά σε switch statements για να ελέγξουν τις αντίστοιχες τιμές:

#include <stdio.h>

enum Weekday {
    MON,
    TUE,
    WED,
    THU,
    FRI,
    SAT,
    SUN
};

int main() {
    enum Weekday today = FRI; // Δήλωση και αρχικοποίηση της μεταβλητής today ως FRI

    switch (today) {
        case MON:
            printf("Today is Monday\n"); // Εκτύπωση ανάλογα με την τιμή της today
            break;
        case TUE:
            printf("Today is Tuesday\n");
            break;
        case WED:
            printf("Today is Wednesday\n");
            break;
        case THU:
            printf("Today is Thursday\n");
            break;
        case FRI:
            printf("Today is Friday\n");
            break;
        case SAT:
            printf("Today is Saturday\n");
            break;
        case SUN:
            printf("Today is Sunday\n");
            break;
        default:
            printf("Invalid weekday\n"); // Εκτύπωση μηνύματος για μη έγκυρη τιμή της today
            break;
    }

    return 0;
}

Ο παραπάνω κώδικας εκτελεί την εκτύπωση της ημέρας της εβδομάδας ανάλογα με την τιμή της μεταβλητής today.

Αρχικά, δηλώνεται και αρχικοποιείται η μεταβλητή today με την τιμή FRI, που αντιστοιχεί στην Παρασκευή.

Στη συνέχεια, χρησιμοποιείται η δομή switch για να ελεγχθεί η τιμή της μεταβλητής today. Ανάλογα με την τιμή, εκτελείται η αντίστοιχη περίπτωση case και εκτυπώνεται το αντίστοιχο μήνυμα.

Συγκεκριμένα, στην περίπτωση που η τιμή της today είναι FRI, εκτυπώνεται το μήνυμα “Today is Friday”. Αν η τιμή είναι άλλη από τις προκαθορισμένες τιμές του enum Weekday, εκτυπώνεται το μήνυμα “Invalid weekday”.

Ο κώδικας ολοκληρώνεται με την επιστροφή της τιμής 0 από τη συνάρτηση main().

21 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων