For faster navigation, this Iframe is preloading the Wikiwand page for Deklaracja (informatyka).

Deklaracja (informatyka)

Deklaracja – konstrukcja programistyczna w określonym języku programowania, służąca związaniu z określonym identyfikatorem jego znaczenia i atrybutów.

Elementy podlegające deklarowaniu

[edytuj | edytuj kod]

W różnych językach programowania wymagania dotyczące deklaracji określonych obiektów programowych są bardzo zróżnicowane. Deklarowaniu ogólnie podlegać mogą:

W nomenklaturze informatycznej, czasem od deklaracji rozróżnia się definicję w odniesieniu do takich elementów jak między innymi:

przy czym deklaracja i definicja może występować razem, lub oddzielnie w różnych miejscach kodu źródłowego.

Miejsce deklaracji

[edytuj | edytuj kod]

Deklaracje w kodzie źródłowym, zwykle musi poprzedzać pierwsze użycie danego identyfikatora w definiowanym algorytmie. Deklaracja stanowi więc informację dla translatora, która nie generuje kodu wykonywalnego (lecz często powoduje rezerwację pamięci).

Składnia większości języków programowania narzuca umieszczanie deklaracji w określonym miejscu kodu źródłowego. Jest to albo specjalna sekcja programu (modułu, podprogramu, pakietu), albo początek określonego bloku (czyli wszystkie deklaracje muszą zostać umieszczone w tekście programu przed pierwszą instrukcją danego bloku).

Rodzaje deklaracji

[edytuj | edytuj kod]

Deklaracje mogą być:

  • niejawne
  • jawne
    • kompletne
    • częściowe

Deklaracje niejawne

[edytuj | edytuj kod]

Deklaracje niejawne występują w językach programowania, które umożliwiają użycie identyfikatora bez jego jawnej deklaracji. W tym przypadku translator musi posiadać mechanizm przypisania do identyfikatora atrybutów na podstawie określonych metod:

  • domyślnej
  • niejawnej
  • kontekstowej

Deklaracje niejawne mogą prowadzić do błędów, np. błąd literowy w identyfikatorze spowoduje utworzenie nowej zmiennej, a tym samym błąd w działaniu programu.

Deklaracje jawne

[edytuj | edytuj kod]

Deklaracje jawne mogą być kompletne lub częściowe. W przypadku deklaracji częściowych mogą wystąpić następujące przypadki:

  • niesymetryczna struktura atrybutów (np. w deklaracji wystąpienie atrybutu EXTERNAL może oznaczać obiekt zewnętrzny (zmienną, procedurę itp.) zdefiniowany w innym module, a brak jego specyfikacji oznacza obiekt wewnętrzny (tworzony daną deklaracją w danym module), przy czym brak jest możliwości jawnej specyfikacji atrybutu przeciwstawnego dla EXTERNAL (np. o nazwie INTERNAL),
  • aparat atrybutów domyślnych, obowiązują tu zasady uzupełniania atrybutów według metod jak dla deklaracji niejawnych (np. mogą istnieć atrybuty EXTERNAL i INTERNAL, przy czym brak jawnej specyfikacji któregokolwiek z tych dwóch przeciwstawnych atrybutów oznaczać będzie wystąpienie jednego z nich, np. INTERNAL).

Przykłady deklaracji

[edytuj | edytuj kod]

deklaracje zmiennych

[edytuj | edytuj kod]

Deklaracja zmiennej może zawierać oprócz samej deklaracji, także inicjalizację zmiennej, tj. nadanie zmiennej wartości początkowej.

Deklaracje występują[1][2][3]:

  • poza funkcją, klasą, metodą – dla zmiennych globalnych
  • na początku instrukcji blokowej { } dla zmiennych lokalnych.
  • jako wyrażenie w dalszych częściach instrukcji blokowej { } dla zmiennych lokalnych (nie w języku C)
 int global_var;
 main()
  {
    int y;
    ...
    {
       int z=1;
       getch();
       int x=5; /*nie w języku C*/
       ...
    }
    ...
  }

Deklaracje występują w programie lub podprogramie w specyfikacji bloku, zawartej pomiędzy nagłówkiem (program, procedure, function, unit (Turbo Pascal)), a słowem rozpoczynającym instrukcję grupującej danego bloku (begin)[4][5].

 program Przykład;
   var globar_var;
   ...
   procedure Licz();
     var local_var;
   begin
   end; {procedure}
 begin
 end. {program}

Deklaracja ma postać instrukcji DECLARE (lub skrótowe DCL) I może wystąpić w dowolnym miejscu wnętrza bloku (w PL/1 takim blokiem jest albo procedura od nagłówka PROCEDURE do słowa END albo instrukcja blokowa BEGINEND) i dotyczy obiektów dostępnych w danym bloku. Język ma bardzo rozbudowaną składnię atrybutów i rozbudowany mechanizm atrybutów domyślnych i deklaracji niejawnych[6][7].

 Przykład: PROC;
   ...
   /* użyto zmiennej X zadeklarowanej dalej */
   X=1;
   ...
   /* deklaracja w bloku może wystąpić po użyciu identyfikatora lecz
      deklarowana zmienna dostępna jest od początku bloku */
   DCL X FIXED DECIMAL(5,0);
   ...
 END Przykład;

deklaracje etykiet

[edytuj | edytuj kod]

Pascal[4][5]:

 {Pascal}
 program DclLabel;
   label Etykieta;
   …
 beginEtykieta: …;
   …
   goto Etykieta;
   …
 end.

Turbo Pascal[5]:

 program DclUnit;
   uses Crt, Graph, MyUnit;
   ...
 begin
   ...
    Write('Użyto procedury modułu Crt');
   ...
 end.

Modula 2[8]:

 MODULE DclUnit;
   FROM InOut IMPORT
     Read, Write, ...;
   ...
   Write('Użyto procedury modułu InOut');
   ...
 END DclUnit.

Deklaracja podprogramu ma postać nagłówka podprogramu definiującego oprócz identyfikatora przypisanego podprogramowi, także inne, wymagane przez dany język programowania elementy, jak np. parametry. Może także zawierać opcjonalne frazy i modyfikatory, np. dotyczące rozmieszczenia w pamięci, czy sposobu pobrania podprogramu zewnętrznego z biblioteki.

W języku C[1][2][3], C++[3] deklaracje podprogramów (nazywane prototypem) umieszcza się najczęściej w plikach nagłówkowych, definiujących określone moduły.

 /* prototyp funkcji trunc */
 int trunc(double x);

Deklaracje podprogramów stosuje się, gdy podprogram ma być wywołany, a nie został jeszcze zdefiniowany[4][5].

 { Pascal }
 procedure Proc_1; forward;
 procedure Proc_2;
 begin
    …
    {wywołanie procedury, która nie została jeszcze zdefiniowana,
     wymagana była deklaracja}
    Proc_1;
    …
 end;
 …
 {Późniejsza definicja procedury}
 procedure Proc_1;
 beginend;

Deklarację wyprzedzającą podprogramu stosuje tak jak w Pascalu. W Delphi deklaracje występują także w modułach (stanowiących rozszerzenie Delphi w stosunku do Pascala) w sekcji interface.

 { Delphi }
 unit Przykład;
 interface
   { deklaracja podprogramu dostępnego w innych modułach i programach }
   function trunc(x : real): integer;
 implementation
   { definicja zadeklarowanego wyżej podprogramu
     ponieważ parametr i wartość zwracana zostały zdefiniowane w deklaracji
     podporgramu w sekcji interface, nie jest wymagane ich powtórzenie }
    function trunc;
    begin

Przypisy

[edytuj | edytuj kod]
  1. a b 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.).
  2. a b Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.).
  3. a b c Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.).
  4. a b c Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
  5. a b c d Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
  6. Jan Bielecki: Rozszerzony PL/I i JCL w systemie OS/RIAD. Warszawa: Państwowe Wydawnictwo Naukowe, 1986, seria: Biblioteka Informatyki. ISBN 83-01-06146-4. (pol.).
  7. M. I. Auguston i inni: Programowanie w języku PL/1 OS JS. Warszawa: Państwowe Wydawnictwo Naukowe, 1988. ISBN 83-01-07463-9. (pol.).
  8. Niklaus Wirth: Modula 2. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0828-8. ISSN 0867-6011. (pol.).

Bibliografia

[edytuj | edytuj kod]
  • 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.).
{{bottomLinkPreText}} {{bottomLinkText}}
Deklaracja (informatyka)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?