Rezultat podprogramu

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

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).

Podprogram (inaczej funkcja lub procedura) - termin związany z programowaniem proceduralnym. Podprogram to wydzielona część programu wykonująca jakieś operacje. Podprogramy stosuje się, aby uprościć program główny i zwiększyć czytelność kodu.Biblioteka Użytkownika Mikrokomputerów - BUM- to seria wydawnicza książek z zakresu informatki, wydawana przez wydawnictwo NAKOM.

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, stosu – m.in. Forth, i inne rozwiązania),
  • udostępnianie przez podprogram rezultatu:
  • dla wybranych podprogramów – m.in. Pascal, PL/I i inne,
  • dla wszystkich podprogramów – m.in. język C i inne.
  • Jak wyżej zaznaczono rezultat podprogramu może zostać użyty bądź odrzucony, przy czym istnieją języki programowania, w których:

    Podprogram główny – zdefiniowany w kodzie źródłowym, wybrany podprogram, od którego rozpocznie się wykonanie gotowego programu. Wyróżnienie więc podprogramu głównego spośród innych bloków, ma na celu wskazanie programowi łączącemu tej ingresji, która ma być wejściową dla gotowej aplikacji. Różne języki programowania w zależności od swojej specyfiki posługują się różną nomenklaturą dla określenia tego pojęcia oraz we własny, specyficzny sposób definiują metodę wskazania podprogramu głównego. Można jednak wyróżnić kilka najczęściej spotykanych konstrukcji.Stos (ang. Stack) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). Ideę stosu danych można zilustrować jako stos położonych jedna na drugiej książek – nowy egzemplarz kładzie się na wierzch stosu i z wierzchu stosu zdejmuje się kolejne egzemplarze. Elementy stosu poniżej wierzchołka można wyłącznie obejrzeć, aby je ściągnąć, trzeba najpierw po kolei ściągnąć to, co jest nad nimi.
  • istnieje standardowo możliwość pominięcia wartości zawracanej przez podprogram – m.in. język C i inne,
  • nie ma możliwości pominięcia wartości zawracanej przez podprogram – m.in. język Pascal i inne, choć taka możliwość bywa w kolejnych implementacjach tych języków dodawana – m.in. Turbo Pascal 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 – 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.

    ALGOL (z ang. ALGOrithmic Language) – język programowania, który odegrał ważną rolę w historii informatyki. Wpłynął istotnie na kształtowanie się innych języków, w tym Pascala. Od momentu powstania przez około 20 lat ALGOL (lub jego dialekty) był de facto standardem opisu algorytmów w publikacjach naukowych i podręcznikach.Instrukcja powrotu (wyjścia) to instrukcja w określonym języku programowania powodująca opuszczenie aktualnie wykonywanego bloku programu (modułu, podprogramu: procedury, funkcji, metody, lub innych segmentów - bloków programowych - występujących w określonym języku programowana, a także całego programu, procesu) i przejście do następnej instrukcji występującej po instrukcji wywołania danego podprogramu.

    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 i Fortran stosuje się odpowiednio słowo kluczowe function, gdy podprogram zwraca wartość i procedure (Pascal) lub SUBROUTINE (Fortran), gdy nie zwraca wartości. Nie ma jednak w literaturze przedmiotu jednolitych zasad w tym względzie. W języku C i pochodnych często stosuje się określenie funkcja do wszystkich podprogramów, w PL/1, czy ALGOL – procedura, także do podprogramów zwracających wartość.

    Instrukcja wywołania jest to instrukcja, w danym języku programowania, powodująca wywołanie (i w konsekwencji wykonanie) określonego podprogramu.Zmienna lokalna w programowaniu, to zmienna zdefiniowana i dostępna wyłącznie w określonym bloku programu, tworzona w momencie wejścia do tego bloku oraz usuwana z pamięci w momencie wyjścia z danego bloku. Tym samym zasięg zmiennej lokalnej oraz czas jej życia pokrywaną się i obejmują blok, w którym zmienna lokalna jest zdefiniowana. Zmienna lokalna ma więc określony, ograniczony zakres istnienia i dostępności. To w jakich blokach programowych można tworzyć zmienne lokalne definiuje składnia konkretnego języka programowania. Typowymi blokami, w których można w różnych językach programowania tworzyć zmienne lokalne, są moduły, podprogramy oraz w pewnych językach programowania także instrukcje blokowe (lub inne instrukcje strukturalne, np. pętla for w języku C i inne). Zmienna lokalna w danym bloku przesłania zdefiniowaną zmienną globalną, lub zmienną lokalną z bloku nadrzędnego, o tym samym identyfikatorze. Tym samym programista nie może wprost, za pomocą danego identyfikatora, w bloku o zdefiniowanej zmiennej lokalnej, odwołać się do zmiennej zewnętrznej o tym samym identyfikatorze co zdefiniowana zmienna lokalna, choć może to zrobić za pomocą innych konstrukcji, jeżeli są dostępne w danym języku programowania, np. selekcja, wskaźniki, przemianowanie, nakładanie zmiennych lub inne.

    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.

    Przetwarzanie danych (ang. data processing) – przekształcanie treści i postaci danych wejściowych (ang. input) metodą wykonywania systematycznych operacji w celu uzyskania wyników (ang. output) w postaci z góry określonej. Wyróżnia się przetwarzanie numeryczne (stosunkowo skomplikowane algorytmy i niewielkie ilości danych) oraz systemowe (stosunkowo proste algorytmy i duże ilości danych).Wywołanie podprogramu, to przekazanie sterowania w programie komputerowym do wybranego podprogramu. Taka operacja definiowana jest w kodzie źródłowym w odpowiedni sposób określony w składni konkretnego języka programowania. Wywołanie podprogramu, w skompilowanym, gotowym programie komputerowym, wiąże się z niejawnym wykonaniem szeregu akcji dodatkowych, takich między innymi jak skojarzenie argumentów zawartych w wywołaniu z odpowiednimi parametrami wyspecyfikowanymi w deklaracji podprogramu, a także umieszczenie na stosie niezbędnego adresu umożliwiającego powrót z podprogramu do miejsca wywołania oraz wiele innych kwestii i szczegółów technicznych.

    Uwagi[ | edytuj kod]

    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.

    Przypisy[ | edytuj kod]

    1. Zbigniew Czech, Krzysztof Nałęcki, Stanisław Wołek: Programowanie w języku BASIC. Wyd. drugie uzupełnione. Warszawa: Wydawnictwa Naukowo-Techniczne, 1985. ISBN 83-204-0776-1. (pol.)
    2. Wacław Iszkowski: Nauka programowania w języku BASIC dla początkujących. Warszawa: Wydawnictwa Naukowo-Techniczne, 1987, seria: Mikrokomputery. ISBN 83-204-0834-2. (pol.)
    3. Jan Bielecki: Język FORTH. Warszawa: Wydawnictwa Naukowo-Techniczne, 1988, seria: Mikrokomputery. ISBN 83-204-0930-6. (pol.)
    4. Jan Ruszczyc: Poznajemy FORTH. Warszawa: SOETO, 1987, seria: Informatyka mikrokomputerowa. (pol.)
    5. 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.)
    6. Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISBN 83-85060-53-7. ISSN 0867-6011. (pol.)
    7. 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.)
    8. 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.)
    9. 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.)
    10. Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
    11. Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.)
    12. Ryszard K. Kott, Krzysztof Walczak: Programowanie w języku Fortran 77. Warszawa: Wydawnictwa Naukowo-Techniczne, 1991. ISBN 83-204-1362-1. (pol.)
    13. Joanna Jonkisz, Jan Makuch, Stanisław Starzak: Programowanie w językach Algol 60 i Fortran 1900. Łódź: Wydawnictwo Politechniki Łódzkiej, Politechnika Łódzka, Ośrodek Elektronicznej Techniki Obliczeniowej, 1982, seria: Skrypty dla szkół wyższych. (pol.)
    14. Jan Małuszyński, Krzysztof Pisecki, A. van Wijngaarden, B.J. Mailloux, J.E.L. Peck, C.H.A. Koster, M. Sintzoff, .H. Lindsey, L.G.L.T. Meertens, R.G. Fisker, w tłumaczeniu Jana Małuszyńskiego i Krzysztofa Piseckiego: Algol 68. Wprowadzenie do języka Algol 68. Zmieniony raport o języku algorytmicznym Algol 68. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Informatyka. ISBN 83-204-0161-5. (pol.)

    Bibliografia[ | edytuj kod]

    1. 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. John E. Nicholls: Struktura języków programowania. Warszawa: Wydawnictwa Naukowo-Techniczne, 1980, seria: Informatyka. ISBN 83-204-0246-8. (pol.)
    Program komputerowy (ang. computer program) - sekwencja symboli opisująca obliczenia zgodnie z pewnymi regułami zwanymi językiem programowania. Program jest zazwyczaj wykonywany przez komputer (np. wyświetlenie strony internetowej), czasami bezpośrednio – jeśli wyrażony jest w języku zrozumiałym dla danej maszyny lub pośrednio – gdy jest interpretowany przez inny program (interpreter). Program może być ciągiem instrukcji opisujących modyfikacje stanu maszyny ale może również opisywać obliczenia w inny sposób (np. rachunek lambda).Definicja intuicyjna: Kod źródłowy to zapis programu komputerowego w formie czytelnej dla człowieka umożliwiający jego modyfikację i rozwój.




    Warto wiedzieć że... beta

    Fraza – składniowa jednostka podrzędna stanowiąca część definicji większej jednostki złożonej, występującej w składni określonego języka programowania. Rolą fraz jest modyfikowanie i definiowanie szczegółów działania określonej jednostki nadrzędnej, w szczególności instrukcji lub deklaracji.
    System operacyjny (ang. Operating System, skrót OS) – oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika.
    Pascal – dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego poziomu, ogólnego zastosowania, oparty na języku Algol. Został opracowany przez Niklausa Wirtha w 1970 roku. Nazwa języka pochodzi od nazwiska francuskiego fizyka, matematyka i filozofa Blaise Pascala.
    Turbo Pascal – jedna z popularniejszych implementacji kompilatorów języka Pascal, zintegrowane środowisko programistyczne, produkt firmy Borland International dla procesorów Z-80 (system CP/M) oraz rodziny Intel 80x86 i nowszych. Obecnie nie jest już rozwijany. Następcą Turbo Pascala jest Borland Delphi.
    Instrukcja - w programowaniu jest to najmniejszy samodzielny element imperatywnego języka programowania. Instrukcja może być niskiego poziomu napisana w asemblerze np. mov ax,bx, która po przetłumaczeniu na kod binarny nadaje się do uruchomienia przez procesor lub instrukcja wysokiego poziomu napisana np. w języku C: int a = 5;, która zostanie przetłumaczona na kilka instrukcji niskiego poziomu. Program jest tworzony jako zbiór różnych instrukcji. Instrukcja może zawierać wewnętrzne komponenty (np. wyrażenia).
    Fortran (od wersji 90 do aktualnej) a dawniej FORTRAN (do wersji 77 włącznie) (od ang. FORmula TRANslator) – język programowania pierwotnie zaprojektowany do zapisu programów obliczeniowych, był niegdyś językiem proceduralnym, obecnie jest nadal rozwijanym językiem ogólnego przeznaczenia. Umożliwia programowanie strukturalne, obiektowe (Fortran 90/95), modularne i równoległe (Fortran 2008). Jego zastosowaniami są, między innymi, obliczenia naukowo-inżynierskie, numeryczne, symulacja komputerowa itp.
    Analogia (gr. αναλογια – odpowiedniość, podobieństwo) – orzekanie o pewnych cechach omawianego przedmiotu (rzeczy, osoby, pojęcia itp.) na zasadzie jego podobieństwa do innego przedmiotu (dla którego odpowiednie cechy są określone i znane) lub równoległości występujących pomiędzy nimi innych cech. Pojęcie analogii jest szeroko stosowane w filozofii, prawie, matematyce, statystyce itd.

    Reklama