Literał wyliczeniowy

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

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 | edytuj kod]

Przypisy

  1. 1,0 1,1 1,2 Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISSN 0867-6011. ISBN 83-85060-53-7. (pol.)
  2. 2,0 2,1 2,2 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. 3,0 3,1 3,2 Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
  4. 4,0 4,1 4,2 4,3 Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.)
  5. 5,0 5,1 5,2 5,3 Sektor van Skijlen: 2.5 Deklaracje zmiennych i typy danych (ang.). W: C++ bez cholesterolu [on-line]. www.intercon.pl. [dostęp 2011-10-21].
  6. 6,0 6,1 C Reference Card (ANSI) (ang.). www.digilife.be. [dostęp 2011-08-08]. s. 2.
  7. Types (ang.). W: D Programming Language 2.0 [on-line]. www.digitalmars.com – DIGITAL MARS. [dostęp 2011-10-21].
  8. Types (ang.). W: Language Reference – D Programming Language [on-line]. www.d-programming-language.org. [dostęp 2011-10-21].
  9. Enums (ang.). W: BOO – Language Guide [on-line]. boo.codehaus.org. [dostęp 2011-10-21].

Bibliografia[edytuj | edytuj kod]

  1. 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.)
  2. John E. Nicholls: Struktura języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Informatyka. ISBN 83-204-0246-8. (pol.)