Najlepsze pytania
Chronologia
Czat
Perspektywa
Rezultat podprogramu
wartość wyznaczona przez podprogram i następnie przekazana do miejsca jego wywołania Z Wikipedii, wolnej encyklopedii
Remove ads
Rezultat podprogramu (wynik podprogramu, wartość zwracana przez podprogram) w programowaniu, to wartość, która zostaje wyznaczona przez podprogram i następnie przekazana do miejsca jego wywołania. Wartość przekazana przez podprogram może zostać następnie użyta w wyrażeniu do dalszego przetwarzania danych, bądź w pewnych przypadkach może zostać zignorowana (pominięta, odrzucona).
W zakresie przedmiotowego zagadnienia w językach programowania można spotkać różne rozwiązania, przy czym można wyodrębnić grupę typowych, najczęściej spotykanych zasad:
- brak możliwości przekazania rezultatu z podprogramu (a więc wymiana danych między podprogramem a otoczeniem musi odbywać się za pomocą innych konstrukcji programistycznych, np. zmiennych globalnych – m.in. wczesne wersje języka BASIC[a][1][2], stosu – m.in. Forth[3][4], i inne rozwiązania),
- udostępnianie przez podprogram rezultatu:
Jak wyżej zaznaczono rezultat podprogramu może zostać użyty bądź odrzucony, przy czym istnieją języki programowania, w których:
- istnieje standardowo możliwość pominięcia wartości zawracanej przez podprogram – m.in. język C[9][10][11] i inne,
- nie ma możliwości pominięcia wartości zawracanej przez podprogram – m.in. język Pascal[5] i inne, choć taka możliwość bywa w kolejnych implementacjach tych języków dodawana – m.in. Turbo Pascal[6] i inne.
Udostępnienie rezultatu następuje w wyniku wyjścia z podprogramu, tj. albo na końcu bloku podprogramu, albo w wyniku wykonania instrukcji powrotu. Spośród spotykanych rozwiązań można wymienić sytuację, w której rezultat ten jest umieszczany jako odpowiednia fraza instrukcji powrotu. Tak jest np. w języku C[9][10][11] – return wyrażenie;
. Innym rozwiązaniem jest traktowanie nazwy funkcji jako zmiennej lokalnej, na której można wykonywać różne działania w treści podprogramu. Następnie wykonanie instrukcji wyjścia, w której nie specyfikuje się jawnie wartości rezultatu podprogramu, skutkuje przyjęciem jako rezultatu aktualnej wartości przypisanej do zmiennej reprezentowanej przez identyfikator podprogramu. Tak jest np. w języku Pascal[5][6].
Część autorów różnych języków programowania oraz publikacji w odniesieniu do podprogramu, który zwraca rezultat, stosuje pojęcie funkcji (także pojęcie podprogramu funkcyjnego), co stanowi analogię do tego pojęcia stosowanego w matematyce, w odróżnieniu od podprogramu, który nie zwraca rezultatu, w odniesieniu do którego stosuje pojęcie procedury. Ma to w niektórych językach programowania swoje odzwierciedlenie w składni tych języków. Przykładowo w języku Pascal[5][6] i Fortran[12] stosuje się odpowiednio słowo kluczowe function
, gdy podprogram zwraca wartość i procedure
(Pascal[5][6]) lub SUBROUTINE
(Fortran[12]), gdy nie zwraca wartości. Nie ma jednak w literaturze przedmiotu jednolitych zasad w tym względzie. W języku C[9][10][11] i pochodnych często stosuje się określenie funkcja do wszystkich podprogramów, w PL/1[7][8], czy ALGOL[13][14] – procedura, także do podprogramów zwracających wartość.
Rezultat może zostać także zwrócony przez program, do systemu operacyjnego, z którego został wywołany, w postaci kodu powrotu. Kod ten może być następnie użyty w systemie. Jest to więc rezultat zwracany przez podprogram główny, nawet jeżeli wyjście z programu nastąpiło z określonego podprogramu wewnętrznego. Przykładowo w systemie DOS i pochodnych dostęp do kodu powrotu z programu zapewnia zmienna wbudowana ERRORLEVEL
.
Remove ads
Uwagi
- We wczesnych wersjach Basica wartości nie mogły zwracać podprogramy wywoływane instrukcją wywołania
GOSUB
, możliwość taką dawały jedynie proste pseudopodprogramy (makra), definiowane w pojedynczych liniach kodu źródłowego za pomocą instrukcjiDEF FN
. - We wczesnych wersjach C każdy podprogram zwracał wartość (zaszłość), w późniejszych implementacjach wprowadzono typ pusty
void
, stanowiący pewien substytut dla definiowania podprogramów bez zwracanej wartości.
Remove ads
Przypisy
Bibliografia
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads