Najlepsze pytania
Chronologia
Czat
Perspektywa
Pole znacznikowe
Z Wikipedii, wolnej encyklopedii
Remove ads
Pole znacznikowe[1][2], pole wyróżnikowe[2], flaga[2], pole rozróżniające[1] – specjalny rodzaj pola dostępny w rekordach z wariantami, które określa aktualną postać rekordu, tzn. który wariant z dostępnego wykazu wariantów zawartych w definicji rekordu, ma przypisaną wartość aktualną.
Rodzaje pól znacznikowych
Podsumowanie
Perspektywa
W różnych językach programowania pola znacznikowe mogą być:
- jawne
- anonimowe
- ukryte.
Powyższe rodzaje pól znacznikowych mają następujące implikacje:
- pole jawne
- to pole znacznikowe wymagające jawnej deklaracji w definicji rekordu wariantowego, wymagane jest podanie identyfikatora dla tego pola oraz określenie jego atrybutów, w szczególności typu danych (w większości języków programowania istnieją istotne ograniczenia typu dla pola znacznikowego, często musi być to typ porządkowy[3][1]),
Przykład w języku Pascal - pole jawne wies
typu Boolean
:
type adres=record
kod : string[6];
poczta : ''string''[30];
case wies : Boolean of
True : (nazwa : string[25]; numer : integer);
False : (ulica : string[30]; numer : integer
mieszkanie : integer);
end;
- pole anonimowe
- to pole znacznikowe bez nazwy, wymagane jest jedynie określenie typu danych[3],
Przykład w języku Pascal - pole anonimowe typu Boolean
:
type adres=record
kod : string[6];
poczta : ''string''[30];
case Boolean of
True : (nazwa : string[25]; numer : integer);
False : (ulica : string[30]; numer : integer
mieszkanie : integer);
end;
- pole ukryte
- to pole znacznikowe umieszczane w rekordzie wariantowym przez translator, bez jakiegokolwiek udziału programisty i bez możliwości odwoływania się do takiego pola, obsługa pola jest całkowicie ukryta przez implementację[2].
Remove ads
Stosowanie pól znacznikowych
Podsumowanie
Perspektywa
Jawne pola znacznikowe umożliwiają dokonywanie w projektowanym algorytmie, kontroli, jaka jest aktualna postać rekordu, a tym samym prawidłowości bieżącego odwołania do pewnego pola. Jeżeli bowiem zostanie przypisana wartość do pola pewnego wariantu, to odwołanie do składowej dla innego wariantu może dać całkowicie błędną, przypadkową wartość (gdyż warianty są rozmieszczone począwszy od tego samego miejsca w pamięci). Może to być jednak zamierzone działanie programisty. Nie jest jednak zalecane przez literaturę przedmiotu, ze względu na zaciemnienie kodu i możliwość powstania trudno wykrywalnych błędów[2].
Natomiast pole anonimowe i ukryte (ale także jawne), w przypadku dostarczenia przez implementację odpowiednich mechanizmów, mogą umożliwiać automatyczną kontrolę poprawności odwołań i sygnalizowanie błędu lub ostrzeżenia, w przypadku odwołań od pól, które nie są składową aktualnego wariantu.
W języku Ada wymagane jest, aby pole znacznikowe było inicjalizowane, na etapie:
- definicji typu
- wartość pola znacznikowego jest wartością domyślną dla deklarowanych zmiennych, lub
- deklaracji zmiennej
- dla tak zadeklarowanych zmiennych nie ma możliwości późniejszej zmiany postaci rekordu (tzn. nie ma możliwości późniejszego wyboru innego wariantu niż podanego w inicjalizacji pola znacznikowego danej zmiennej),
Taka konstrukcja zapewnia, że zmienna ma od początku istnienia określoną postać[4].
Pole znacznikowe może być też bitem wykorzystywanym do przechowywania pewnej informacji logicznej. Najczęściej są to bity rejestru flag służące kontrolowaniu wykonywanego przez procesor kodu, choć często nazywa się nimi też wartości zbiorowego typu danych bądź wyliczeniowego typu danych (które zapamiętywane są jako bity pewnego słowa określonej długości).
Remove ads
Pola znacznikowe w językach programowania
Przypisy
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads