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.

Więcej informacji Turbo Pascal ...
Remove ads

Uwagi

  1. 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ą instrukcji DEF FN.
  2. 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

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads