Nagłówek podprogramu – fragment kodu źródłowego stanowiący deklaratywny opis podprogramu, poprzedzający definicję bloku podprogramu zawierającego tworzony algorytm. Zawiera on identyfikator podprogramu, ewentualną listę parametrów i jeżeli jest to w danym języku programowania wymagane deklarację ich typów oraz sposobu przekazania skojarzonego z danym parametrem argumentu do podprogramu w jego wywołaniu (np. ByVal, ByRef w Visual Basic; var w Pascalu). Może także obejmować frazy opcjonalne lub wymagane zawierające odpowiednie deklaratory i modyfikatory, w tym między innymi deklarację typu danej zwracanej przez podprogram dla podprogramów funkcyjnych. Jeżeli składnia danego języka przewiduje, to poprzedzony jest także odpowiednim słowem kluczowym (np. procedure: m.in. Icon, Pascal, PL/I; proc: m.in. Comal, PL/I (opcjonalny skrót); function: m.in. Pascal, Visual Basic, Fortran; subroutine: m.in. Fortran; sub: m.in. późniejsze implementacje języka Basic, Visual Basic, Perl; entry: m.in. dodatkowe ingresje do podprogramu w języku PL/I; property: m.in. Visual Basic; perform: m.in. Cobol; def: m.in. Ruby, Python; lub innym przewidzianym w składni konkretnego języka programowania), choć w wielu językach takiego słowa kluczowego nie ma: m.in. C, C++ i pokrewne.
Nagłówek podprogramu występować może w kodzie źródłowym: w deklaracji podprogramu – prototyp + Przykłady deklaracji zapowiadających podprogramów w językach programowania język programowania deklaracja podprogramu C, C++int plus(int a, b); Pascalfunction Plus(a, b : Integer):Integer; forward;
w definicji podprogramu przed jego blokiem. + Przykłady definicji podprogramów,nagłówek podprogramu bezpośrednio poprzedzający jego definicję język programowania definicja podprogramu C, C++int plus(int a, b); { /* treść podprogramu */ } Pascalfunction Plus(a, b : Integer):Integer; begin { treść podprogramu } end; PL/IPLUS: PROC(FIXED(5,0) A, B) RETURNS(FIXED(5,0) /* treść podprogramu */ END;
w definicji typu proceduralnego, np. Turbo Pascal: type idf_type_p=procedure({parametry}); type idf_type_f=function({parametry}):result_type;
Nagłówek podprogramu, jeżeli występuje wcześniejsza, odrębna jego deklaracja (za pomocą prototypu), może w definicji: mieć postać identyczną z prototypem zawartym w deklaracji (przy czym identyczność ta może nie dotyczyć nazw identyfikatorów poszczególnych parametrów podprogramu), mieć postać inną – uproszczoną, a pominięte szczegóły nagłówka pobierane są przez translator z deklaracji.
Przykład w Turbo Pascalu: unit m01; interface { Pełna postać nagłówka podprogramu - deklaracja w interfejsie modułu } procedure pr_1(var a : integer; b : char); implementation { Uproszczona postać nagłówka podprogramu w jego definicji } procedure pr_1; { deklaracja obiektów lokalnych } begin { treść podprogramu } end; end.
Specjalne pliki deklaracji stosowane w takich językach programowania jak C, C++ i pochodnych, noszą w nomenklaturze informatycznej i w literaturze przedmiotu nazwę plików nagłówkowych, gdyż są stosowane do definiowania między innymi bibliotek podprogramów. Plik taki składa się właśnie z deklaracji podprogramów w postaci nagłówków podprogramów (prototypów).
Również w niektórych językach, w których istnieje możliwość programowania obiektowego, nagłówek (prototyp) metody, stosuje się do definicji określonej klasy, podczas gdy sama definicja danej metody znajduje się zupełnie w innym miejscu kodu źródłowego (poza definicją klasy rozumianą jako określony fragment – wyodrębniony za pomocą zdefiniowanych ograniczników bloku – tekstu kodu źródłowego). W tych językach nagłówek metody w jej definicji umieszczonej poza definicją klasy, jest zmodyfikowany zgodnie z konwencją stosowaną w danym języku programowania, o stosowny zapis selekcji klasy, tak aby definicja metody została przypisana do właściwej klasy (różne metody w różnych klasach mogą posiadać ten sam identyfikator).
Borland/Turbo Pascal: type TOb=object procedure m1(a : integer); function f1(a:integer): integer; end; procedure TOb.m1; begin { treść metody m1 klasy TOb } end; function TOb.f1; begin { treść metody f1 klasy TOb } end;
W innych językach cała definicja metody, obejmująca nagłówek i blok kodu, zawarta jest w definicji klasy.
Python: class TOb: u"defincja klasy zawiera także definicję metod" def m1(a): u"treść metody m1 klasy TOb" def f1(a): u"treść metody f1 klasy TOb"
Jak wyżej zaznaczono nagłówek podprogramu w pewnych sytuacjach może zawierać pewne opcjonalne frazy zawierające wybrane deklaratory bądź modyfikatory definicji. + Przykłady rozszerzeń nagłówka podprogramu o opcjonalne frazy w Turbo Pascalu opis przykład definicja podprogramu, nagłówek bez fraz dodatkowychprocedure pr({parametry}); begin { treść podprogramu } end; deklaracja wyprzedzającaprocedure pr({parametry}); forward; podprogram zewnętrzny{$L nazwa_pliku} procedure pr({parametry}); external; podprogram zewnętrzny z biblioteki DLLprocedure pr({parametry}); far; external biblioteka_dll; procedure new_name({parametry}); far; external biblioteka_dll; name pr; procedure new_name({parametry}); far; external biblioteka_dll; index n;
Przypisy b:Python. b:Visual Basic. b:D. b:Perl. b:Ruby. b:Fortran.
Kategoria:Konstrukcje programistyczne