For faster navigation, this Iframe is preloading the Wikiwand page for Nagłówek podprogramu.

Nagłówek podprogramu

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[1][2][3][4][5][6][7][8][9][10]. Jeżeli składnia danego języka przewiduje, to poprzedzony jest także odpowiednim słowem kluczowym (np. procedure: m.in. Icon[11], Pascal[2][3][12], PL/I[4][5]; proc: m.in. Comal[12], PL/I (opcjonalny skrót)[4][5]; function: m.in. Pascal[2][3][12], Visual Basic[10], Fortran[13][14][15]; subroutine: m.in. Fortran[13][14][15]; sub: m.in. późniejsze implementacje języka Basic, Visual Basic[9][10], Perl[16]; entry: m.in. dodatkowe ingresje do podprogramu w języku PL/I[4][5]; property: m.in. Visual Basic[9][10]; perform: m.in. Cobol[17]; def: m.in. Ruby[18], Python[19]; 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[1][6][7][8][20].

Nagłówek podprogramu występować może w kodzie źródłowym[2][3][6][7][8]:

Przykłady deklaracji zapowiadających podprogramów w językach programowania
język programowania deklaracja podprogramu
C, C++[6][7][8]
int plus(int a, b);
Pascal[2][3]
function Plus(a, b : Integer):Integer; forward;
Przykłady definicji podprogramów,
nagłówek podprogramu bezpośrednio poprzedzający jego definicję
język programowania definicja podprogramu
C, C++[6][7][8]
int plus(int a, b);
{
  /* treść podprogramu */
}
Pascal[2][3]
function Plus(a, b : Integer):Integer;
begin
  { treść podprogramu }
end;
PL/I[4][5]
PLUS: PROC(FIXED(5,0) A, B) RETURNS(FIXED(5,0)
  /* treść podprogramu */
END;
  • w definicji typu proceduralnego, np. Turbo Pascal[3]:
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[2][3][6][7][8]:

  • 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[3]:

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)[6][7][8].

 Osobny artykuł: Plik nagłówkowy.

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)[3][8].

Borland/Turbo Pascal[3]:

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[8].

Python[19]:

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[3]
opis przykład
definicja podprogramu, nagłówek bez fraz dodatkowych
procedure pr({parametry});
begin
  { treść podprogramu }
end;
deklaracja wyprzedzająca
procedure pr({parametry}); forward;
podprogram zewnętrzny
{$L nazwa_pliku}
procedure pr({parametry}); external;
podprogram zewnętrzny z biblioteki DLL
procedure 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

[edytuj | edytuj kod]
  1. a b 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.).
  2. a b c d e f g 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.).
  3. a b c d e f g h i j k l Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.).
  4. a b c d e 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.).
  5. a b c d e 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.).
  6. a b c d e f g 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.).
  7. a b c d e f g Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.).
  8. a b c d e f g h i Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.).
  9. a b c John Walkenbach: Excel 2003 PL. Programowanie w VBA. HELION, 2004. ISBN 837361-504-0. (pol.).
  10. a b c d b:Visual Basic.
  11. Ralph E. Griswold, Madge T. Griswold: Icon. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-0871-7. (pol.).
  12. a b c Mike Ducka, tłumaczenie: Marcin Turski: Języki mikrokomputerów. Przewodnik dla początkujących. Basic, Pascal, Logo, Prolog, Comal, Forth. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988. ISBN 83-204-0966-7. (pol.).
  13. a b Ryszard K. Kott, Krzysztof Walczak: Programowanie w języku Fortran 77. Warszawa: Wydawnictwa Naukowo-Techniczne, 1991. ISBN 83-204-1362-1. (pol.).
  14. a b Kazimierz Orlicz: Język konwersacyjny JEAN z elementami programowania w Fortranie. Wrocław: Wydawnictwo Politechniki Wrocławskiej, 1977, seria: Skrypt wydany w serii Biblioteka WASC. (pol.).
  15. a b b:Fortran.
  16. b:Perl.
  17. Eugeniusz Kurzydrem, Andrzej Macieliński, Urszula Szmidt, Eugeniusz Więcek: COBOL. Język programowania. Wyd. drugie. Warszawa: Państwowe Wydawnictwo Ekonomiczne, 1978. (pol.).
  18. b:Ruby.
  19. a b b:Python.
  20. b:D.
{{bottomLinkPreText}} {{bottomLinkText}}
Nagłówek podprogramu
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?