W programowaniu bardzo często dochodzi do sytuacji, gdy wartościom liczbowym przpisujemy znaczenie. Funkcja może zwrócić liczbę jako status wykonania zadania. Wtedy można przypuścić, że 0 będzie oznaczać sukces, 1 - nie wszystko zostało wykonane, a 2 - wystąpił błąd. Taki sposób jest prosty, ale wymaga od użytkownika zapamiętania, że liczba zwracana przez funkcję coś oznacza oraz co. Z tego powodu nie jest to narzędzie bardzo wygodne, ale z pewnością poprawne. W przypadku, gdy zwracany typ danych ma posiadać znaczenie to można zastosować typ wylieczniowy Enum.
W celu skorzystania z typu wyliczeniowego należy go najpierw utworzyć. Składnia wymaga podania typu enum potem nazwy i na koniec w nawiasach klamrowych kolejne opcje rozdzielone przecinkiem.
Zarówno NAZWA jak i dowolna z OPCJI muszą być poprawnie zapisane. Nazewnictwo rządzi się takimi samymi regułami jak nazywanie zmiennych. Przede wszystkim należy pamiętać, że musi to być ciągły ciąg znaków, a nie ze znakiem spacji.
Zadeklarowany przed chwilą typ deklaruje się jak każdy inny typ danych. Należy podać typ, nazwę i ewentualnie od razu przy deklaracji przypisać nazwę. W celu odwołania się do opcji to należy wpisać nazwę typu, kropkę i wybrać wybraną wartość. W poniższym przykładzie najpierw jest deklarowany typ danych Tydzień, który zawiera nazwy wszystkich kolejnych dni tygodnia.
Następnie w programie zostaje on zadeklarowany i przypisana zostaje wartość, które potem zostaje wypisana.
Tutaj warto zauważyć, że podczas wypisywania typu wyliczeniowego wypisywana jest wartość słowna wybranej opcji. Pozwala to na bardzo wygodne zarządzanie danymi ich wypisywania użytkownikowi. W przypadku zastosowania metody zapisu danych jako liczby należałoby dodatkowo gdzieś trzymać tablicę nazw tygodnia. Nie zawsze jest to najwygodniejsza metoda.
Typ wyliczeniowy Enum zapewnia możliwość parsowania danych tekstowych na wartość opcji. Jednak konwertowany napis oraz opcja muszą być identyczne. Inaczej zwrócony zostanie błąd. Poniższy program wczytuje użytkownika nazwę ulubionego dnia tygodnia i obsługuje błąd, który może zostać zwróćony przez funkcję parsującą.
(2.) Tworzymy zmienną i (3.) pytamy użytkownika o dzień tygodnia. Potem (4.) próbujemy (5.) parsować dane, a (6.) następnie je wypisać. Jednak (7.) jeśli wystąpi błąd to (8.) wypisujemy komunikat o błędzie.
Wypisane opcje przypominają liste na której elementy mają kolejne indeksy począwszy od 0. Oznaczałoby to, że można sprawdzić wartość k pozycji dalej. Każdej wartości w typie wyliczeniowym można przypisać unikalne ID liczbowe. Wartości te wcale nie muszą być równe pozycji "na liście" opcji, ale muszą być unikalne. Wtedy nowy typ danych można zadeklarować następująco:
Dzięki temu możliwe jest, aby dodawać i odejmować wartości od typu wyliczeniowego. Może to znaleźć zastosowanie kiedy na pytanie "Jaki jest Twój ulubiony dzień tygodnia?" ktoś nam odpowie dwa dni po środzie. Wtedy możemy zaprogramować komputer, aby pomógł z odpowiedzią. Najpierw dodajmy każdemu dnia tygodnia jego wartość:
I teraz można spokojnie skorzystać z "przesuwania" dnia tygodnia:
Zaletą przypisywania wartości liczbowych do danych w typie wyliczeniowym jest fakt, że można je później zamienić na wartość liczbową. Może się to przydać później, aby na podstawie tego typu utworzyć date.
Ty wyliczeniowy to bardzo wygodne narzędzie. Należy o nim pamiętać w sytuacjach, gdy dana zmienna może przyjmować określony zestaw odpowiedzi. Znajduje to zastosowanie jak przedstawione wyżej podczas wybiera dni tygodnia, ale może również np. podczas określania opcji przyjmowanych przez funkcję.
Napisz program, który dla dnia tygodnia podanego w zmiennej tyg typ Tydzień będzie pokazywać jego skrót. Przykładowo program dla wartości "Środa" powinien wypisać:
Napisz program, który wczyta od użytkownika aktualny dzień tygodnia i wypisze wszystkie, które w danym tygodniu pozostały. Zakładamy, że tydzień zaczyna się w Poniedziałek. Przykładowo jeśli użytkownik wpisze Czwartek to powinien wypisać: