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 W różnych językach programowania wymagania dotyczące deklaracji określonych obiektów programowych są bardzo zróżnicowane. Deklarowaniu ogólnie podlegać mogą: zmienne parametry podprogramów moduły (biblioteki, pakiety, itp.) podprogramy (procedury, funkcje) etykiety klasy stałe typy literały inne elementy, specyficzne dla konkretnego języka programowania

W nomenklaturze informatycznej, czasem od deklaracji rozróżnia się definicję w odniesieniu do takich elementów jak między innymi: typów stałych literałów podprogramów klas przy czym deklaracja i definicja może występować razem, lub oddzielnie w różnych miejscach kodu źródłowego.

Miejsce deklaracji 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 Deklaracje mogą być: niejawne jawne kompletne częściowe

Deklaracje niejawne 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 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 deklaracje zmiennych

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

C, C++ Deklaracje występują: 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*/ ...

...

Pascal 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). program Przykład; var globar_var; ... procedure Licz(); var local_var; begin

end; {procedure} begin

end. {program}

PL/1 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 BEGIN … END) 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.

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 Pascal: {Pascal} program DclLabel; label Etykieta; … begin … Etykieta: …; … goto Etykieta; … end.

deklaracje modułów Turbo Pascal Turbo Pascal: program DclUnit; uses Crt, Graph, MyUnit; ... begin ... Write('Użyto procedury modułu Crt'); ... end.

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

deklaracje podprogramów 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.

C, C++ W języku C, C++ 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);

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

{ 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; begin … end;

Delphi 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

Bibliografia

Kategoria:Konstrukcje programistyczne