Literał wyliczeniowy
Literał wyliczeniowy – literał reprezentujący w kodzie źródłowym konkretną wartość określonego typu wyliczeniowego. Literały tego rodzaju dostępne są w językach programowania, bądź ich konkretnych implementacjach, w których składni zdefiniowano możliwość posługiwania się wyliczeniowym typem danych.
Programista tworząc kod programu z użyciem typu wyliczeniowego musi zdefiniować taki typ, tj. określić listę wartości, jakie obejmuje definiowany typ wyliczeniowy. W językach programowania przyjęto, że wartości takich typów definiuje się za pomocą identyfikatorów. Z takim identyfikatorem skojarzona zostaje pewna wartość całkowita (dobrana według określonych przez autorów języka programowania reguł, ewentualnie – jeżeli język dopuszcza taką konstrukcję – jawnie przypisana w definicji wartości), która używana jest między innymi w wyrażeniach oraz jest przypisywana i przechowywana w zmiennych typu wyliczeniowego. Jednak wszelkie operacje z użyciem danego typu wyliczeniowego w kodzie źródłowym podczas programowania określane są nie za pomocą skojarzonych wartości liczbowych lecz za pomocą zdefiniowanych wartości wybranego typu wyliczeniowego, tj. za pomocą użytych w definicji typu identyfikatorów.
Taka implementacja typu wyliczeniowego implikuje w pewnych językach programowania przynależność typów wyliczeniowych do kategorii typów porządkowych, co z kolei pozwala na używanie tych typów danych w operacjach określania następnika i poprzednika dla aktualnej wartości (np. podprogramy standardowe Pred(x)
i Succ(x)
w Turbo Pascalu[1]), co umożliwia między innymi stosowanie typów wyliczeniowych jako typów dla zmiennych sterujących przebiegiem w realizacji pętli, w tym także pętli iteracyjnych, oraz w innych konstrukcjach jak np. indeksowanie tablic, sterowanie polem znacznikowym w rekordach z wariantami, itd. W pewnych językach, jak np. w języku C, literały tego typu mogą być używane analogicznie jak stałe o wartościach typu całkowitoliczbowego[2][3][4][5].
Powyższy, uogólniony zarys realizacji literałów wyliczeniowych odnosi się do ich implementacji między innymi w takich językach programowania jak: C[2][3][4][5][6], C++[4][5], D[7][8], Boo[9], Turbo Pascal[1] i w innych, których składnia umożliwia definiowanie typów wyliczeniowych.
element | C[2][3][4][5][6] | Turbo Pascal[1] |
---|---|---|
kod źródłowy: |
/* definicja typu wyliczeniowego
oraz literałów wyliczeniowych */
typedef enum{pn=0,ws=90,
pd=180,zd=270} e_kier;
main() {
e_kier a;
...
switch(a) {
case pn:
...
case ws:
...
case pd:
...
default:
...
}
}
|
{ definicja typu wyliczeniowego
oraz literałów wyliczeniowych }
type firmy=(elwro, elzab, kfap, unimor);
{ deklaracja zmiennej typu wyliczeniowego }
var i:firmy;
begin
...
{ użycie wyliczenia do iteracji }
for i:=elwro to kfap do
begin
{treść pętli }
end;
...
end.
|
zdefiniowane literały – wartości – wyliczeniowe: | pn, ws, pd, zd | elwro, elzab, kfap, unimor |
użyte literały – wartości – wyliczeniowe: | pn, ws, pd | elwro, elzab, kfap |
Zobacz też
edytujPrzypisy
edytuj- ↑ a b c Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
- ↑ a b c Brian W. Kernighan, Dennis M. Ritche: Język C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1067-3. (pol.).
- ↑ a b c Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.).
- ↑ a b c d Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.).
- ↑ a b c d Sektor van Skijlen: 2.5 Deklaracje zmiennych i typy danych. [w:] C++ bez cholesterolu [on-line]. www.intercon.pl. [dostęp 2011-10-21]. [zarchiwizowane z tego adresu (2011-09-07)]. (ang.).
- ↑ a b C Reference Card (ANSI). www.digilife.be. s. 2. [dostęp 2011-08-08]. [zarchiwizowane z tego adresu (2011-08-07)]. (ang.).
- ↑ Types. [w:] D Programming Language 2.0 [on-line]. www.digitalmars.com – DIGITAL MARS. [dostęp 2011-10-21]. (ang.).
- ↑ Types. [w:] Language Reference – D Programming Language [on-line]. www.d-programming-language.org. [dostęp 2011-10-21]. (ang.).
- ↑ Enums. [w:] BOO – Language Guide [on-line]. boo.codehaus.org. [dostęp 2011-10-21]. [zarchiwizowane z tego adresu (2011-09-27)]. (ang.).
Bibliografia
edytuj- Michael Marcotty, Henry Ledgord, tłumaczenie: Krystyna Jerzykiewicz: W kręgu języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1342-7. (pol.).
- John E. Nicholls: Struktura języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Informatyka. ISBN 83-204-0246-8. (pol.).