W tej lekcji omówimy, czym jest typ wyliczeniowy enum w C++. Typy wyliczeniowe umożliwiają definiowanie zestawu nazwanych wartości całkowitych, które reprezentują konkretne stany lub opcje w programie. Dzięki temu kod jest czytelniejszy i łatwiejszy do zrozumienia, zwłaszcza gdy pracujemy z wieloma możliwymi wartościami.
enum pozwala na stworzenie nowego typu danych, który jest ograniczony do określonego zestawu wartości. Na przykład, jeśli mamy dni tygodnia, możemy stworzyć typ enum o nazwie Day, który zawiera wartości takie jak Monday, Tuesday, Wednesday, itd. Wartości w enum są domyślnie reprezentowane jako liczby całkowite, zaczynając od 0, ale można również przypisać im konkretne liczby.
Poniżej przedstawimy prosty przykład, który pokazuje, jak używać enum w praktyce.
Przykład kodu
Stwórz nowy plik o nazwie enum_example.cpp i wklej do niego poniższy kod:
// Importujemy bibliotekę iostream, aby umożliwić operacje wejścia/wyjścia
#include <iostream>
// Definiujemy typ wyliczeniowy 'Day', który zawiera dni tygodnia
enum Day {
    Monday,    // Domyślna wartość 0
    Tuesday,   // Domyślna wartość 1
    Wednesday, // Domyślna wartość 2
    Thursday,  // Domyślna wartość 3
    Friday,    // Domyślna wartość 4
    Saturday,  // Domyślna wartość 5
    Sunday     // Domyślna wartość 6
};
int main() {
    // Deklarujemy zmienną typu 'Day' i przypisujemy jej wartość 'Friday'
    Day today = Friday;
    // Sprawdzamy, jaki jest dzisiaj dzień, korzystając z instrukcji switch
    switch (today) {
        case Monday:
            std::cout << "Dzisiaj jest poniedziałek." << std::endl;
            break;
        case Tuesday:
            std::cout << "Dzisiaj jest wtorek." << std::endl;
            break;
        case Wednesday:
            std::cout << "Dzisiaj jest środa." << std::endl;
            break;
        case Thursday:
            std::cout << "Dzisiaj jest czwartek." << std::endl;
            break;
        case Friday:
            std::cout << "Dzisiaj jest piątek." << std::endl;
            break;
        case Saturday:
            std::cout << "Dzisiaj jest sobota." << std::endl;
            break;
        case Sunday:
            std::cout << "Dzisiaj jest niedziela." << std::endl;
            break;
        default:
            std::cout << "Nieznany dzień." << std::endl;
    }
    // Możemy również przypisać wartości enum do zmiennych całkowitych
    int dayNumber = today; // Przypisujemy wartość liczbową 'Friday' do zmiennej
    std::cout << "Numer dzisiejszego dnia w tygodniu: " << dayNumber << std::endl;
    return 0;
}
Wyjaśnienie
W powyższym programie pokazaliśmy, jak używać typu wyliczeniowego enum do reprezentowania dni tygodnia. Wartości w enum są traktowane jako liczby całkowite, co ułatwia ich porównywanie i przypisywanie do zmiennych.
- Na początku definiujemy typ wyliczeniowy Day, który zawiera wszystkie dni tygodnia, odMondaydoSunday. Wartości te są domyślnie przypisywane do liczb całkowitych, zaczynając od 0 dlaMonday, 1 dlaTuesday, itd.
- W funkcji maindeklarujemy zmiennątodaytypuDayi przypisujemy jej wartośćFriday.
- Następnie używamy instrukcji switch, aby wyświetlić odpowiedni komunikat w zależności od wartości zmiennejtoday.
- Na końcu przypisujemy wartość liczbową Friday(która wynosi 4) do zmiennejdayNumberi wyświetlamy ją na ekranie.
Podsumowanie
Typy wyliczeniowe enum w C++ umożliwiają tworzenie czytelniejszych programów, w których konkretne wartości są reprezentowane przez nazwy zamiast liczb. W tym przykładzie wykorzystaliśmy enum do reprezentowania dni tygodnia i użyliśmy go w instrukcji switch, aby sprawdzić, jaki jest dzień. Typy wyliczeniowe są bardzo przydatne, gdy mamy do czynienia ze zbiorami możliwych wartości, np. dniami tygodnia, miesiącami, stanami czy kolorami.
