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

Więcej informacji język programowania ...

Przypisy

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads