Podprogram zagnieżdżony
Podprogram zagnieżdżony (podprogram lokalny[a], podprogram wewnętrzny[b]) – w programowaniu konstrukcja programistyczna umożliwiająca tworzenie podprogramów zawartych w innych podprogramach, a więc o ograniczonym zasięgu widoczności. Podprogramy takie są więc podprogramami lokalnymi w stosunku do podprogramu nadrzędnego. Podprogram zagnieżdżony może zostać wywołany wyłącznie w bloku podprogramu, w którym został zagnieżdżony. Wszystkie podprogramy zagnieżdżone mają dostęp do obiektów zdefiniowanych lokalnie w podprogramie nadrzędnym (tj. elementów takich jak np. zmienne, stałe, typy lub inne, które może w danym języku programowania deklarować i definiować lokalnie).
W wielu językach programowania taka konstrukcja jest niedostępna i wszystkie podprogramy są deklarowane oraz definiowane na tym samym poziomie programu (modułu). Tak jest m.in. w języku C[1][2][3], C++[3] i podobnych. Istnieje jednak grupa języków programowania, w których zrealizowano zagnieżdżanie podprogramów. Takimi językami są między innymi: Ada[4][5], Pascal[6][7], PL/1[8][9], PL/SQL[10].
Przykład w języku Pascal[6][7]:
procedure A;
var localA:integer;
function AB:integer;
begin
{ treść funkcji zagnieżdżonej AB }
end;
procedure AA;
begin
{ treść procedury zagnieżdżonej AA }
{ zmienna lokalna localA zadeklarowana w procedurze nadrzędnej A
jest także dostępna w podprogramach zagnieżdżonych }
localA:=AB;
end;
begin
{ wywołanie procedury zagnieżdżonej }
AA
end;
Uwagi
- ↑ Analogicznie do pojęcia: zmienna lokalna.
- ↑ Użycie terminu podprogram wewnętrzny może być niejednoznaczne, gdyż część autorów publikacji używa takiego terminu w odniesieniu do zupełnie innej konstrukcji – typu inline.
Przypisy
- ↑ 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.)
- ↑ Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
- ↑ a b Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.)
- ↑ A. Nico Habermann, Dewayne E. Perry: Ada dla zaawansowanych. Warszawa: Wydawnictwa Naukowo-Techniczne, 1989, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-204-1058-4. (pol.)
- ↑ Michał Morawski, Antoni M. Zajączkowski: Wstęp do programowania w języku Ada’95. Wyd. drugie. Łódź: 2004. [dostęp 2011-01-29]. (pol.)
- ↑ a b Michał Iglewski, Jan Madey, Stanisław Matwin: Pascal. Język wzorcowy – Pascal 360. Wyd. wydanie trzecie – zmienione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1984, seria: Biblioteka Inżynierii Oprogramowania. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.)
- ↑ a b Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.)
- ↑ 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.)
- ↑ 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.)
- ↑ Piotr Różnicki: PL/SQL ORACLE'a. 2000. [dostęp 2011-03-02]. [zarchiwizowane z tego adresu (2010-06-09)].
Bibliografia
- 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.)