Literał wyliczeniowy

literał reprezentujący konkretną wartość typu wyliczeniowego

Literał wyliczeniowyliterał 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.

Przykłady
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ż

edytuj

Przypisy

edytuj
  1. 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.).
  2. 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.).
  3. 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.).
  4. 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.).
  5. 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.).
  6. a b C Reference Card (ANSI). www.digilife.be. s. 2. [dostęp 2011-08-08]. [zarchiwizowane z tego adresu (2011-08-07)]. (ang.).
  7. Types. [w:] D Programming Language 2.0 [on-line]. www.digitalmars.com – DIGITAL MARS. [dostęp 2011-10-21]. (ang.).
  8. Types. [w:] Language Reference – D Programming Language [on-line]. www.d-programming-language.org. [dostęp 2011-10-21]. (ang.).
  9. 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.).