wartości takie, jak nazwy dni tygodnia... Sugerujesz, żeby użyć typu String? Jest to jakiś pomysł, ale aby porównać dwa dni, trzeba porównać łańcuchy, co trwa dłużej. Poza tym typ String nie jest typem porządkowym, więc nie będziemy w stanie stwierdzić, że po poniedziałku przychodzi wtorek.
Rozważmy też program, który pomaga układać kostkę Rubika. Można oczywiście sześciu kolorom przyporządkować liczby, ale o ileż prościej byłoby nadawać zmiennym nazwy kolorów.
To wszystko da się zrobić! W tym celu możemy zdefiniować typ wyliczeniowy. Jego definicja ma postać:
NazwaTypuWyliczeniowego - (wartości, wartosc2, .... waroscN);
Na przykład:
type
TPlec - (kobieta, mezczyzna);
TDniTygodnia - (poniedziałek, wtorek, środa, czwartek, piątek, sobota, niedziela);
TMiesiace - (styczeń, luty, marzec, kwiecień, maj, czerwiec, lipiec, sierpień, wrzesień, październik, listopad, grudzień);
TWyksztalcenie - (podstawowe, średnie, wyzsze);
var
Piec : TPlec;
BiezacyMiesciac : TMiesiace;
TemperaturyTygodniowe : array [TDniTygodnia] of Integer;
ZarobkiWCiaguRoku : array [TMiesiace] of Real;
Poprawne są zapisy:
Piec mezczyzna;
BiezacyMiesiac grudzień;
TemperaturyTygodniowe [poniedziałek] 6;
ZarobkiWCiaguRoku[BiezacyMiesiac] 1200;
Szczególnie ciekawa wydaje się możliwość indeksowania tablic poprzez zmienne typu wyliczeniowego. Pomaga to bardzo pisać czytelne programy.
Niestety nieprawidłowe są instrukcje:
Writeln (Piec);
Readln (BiezacyMiesiac);
Zmienne typu wyliczeniowego nie mogą być bezpośrednio ani wypisywane, ani wprowadzane. Mogą być jedynie wykorzystywane wewnątrz programu. Jeżeli chce się wypisać wartość zmiennej tego typu, trzeba napisać po prostu funkcję zamieniającą ją na odpowiedni tekstowy łańcuch (lub w drugą stronę, jeżeli chce się zmienną wczytać).
i c z t h 11_