Procedury i funkcje
Transkrypt
Procedury i funkcje
Procedury i funkcje 11/10/2005 Procedury Procedury i funkcje ! Procedura jest modułem (częścią) programu napisanym niezależnie od pozostałych ! Przepływ sterowania Zmienne lokalne i globalne Rodzaje parametrów Przez wartość czy referencję? ! ! ! Sterowanie do procedury przekazuje się za pomocą instrukcji skoku Po zakończeniu wykonania procedury sterowanie jest przekazywane z powrotem do wywołującego programu Proces przekazywania sterowania nazywa się wywołaniem procedury (calling, invoking procedure) Moduł, który wywołuje procedurę to moduł wywołujący (calling unit) 2/12 Przepływ sterowania wywołanie procedury Definicja procedury ! ©2005 R. Robert ‘RoG@j’ Gajewski Moduł Wywołujący Definicja procedury zaczyna się od nagłówka procedury (procedure header), który określa np. jej nazwę. ! ! Przekazanie Sterowania Po nim są instrukcje stanowiące jej treść Procedura może być traktowana jako miniaturowy program Procedura Powrót 3/12 ©2005 R. Robert ‘RoG@j’ Gajewski 4/12 Zmienne lokalne i globalne ! ! ! ! 5/12 Parametry Zmienne zadeklarowane w procedurze nazywa się zmiennymi lokalnymi. ! ! Można się do nich odwoływać jedynie wewnątrz procedury Zmienne w różnych procedurach nawet jeśli mają te same nazwy to są… różne zmienne ! Wartość dostępna dla wszystkich fragmentów programu nazywana jest zmienną globalną Większość języków programowania ‘prowadzi’ oba rodzaje zmiennych ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski ©2005 R. Robert ‘RoG@j’ Gajewski ! ! 6/12 Nie jest dobrą praktyką nadużywanie zmiennych globalnych Lepszym pomysłem jest podawanie danych z których będzie korzystała procedura podczas jej wywoływania Nagłówek procedury może zawierać listę zmiennych, którym przy wywołaniu przypisywane są wartości Elementy takiej listy to parametry ©2005 R. Robert ‘RoG@j’ Gajewski 1 Procedury i funkcje 11/10/2005 Rodzaje parametrów ! Mamy dwie listy parametrów ! ! ! ! ! Przekazywanie danych ! Listę parametrów w kodzie procedury Listę parametrów w wywołaniu procedury Parametry z kodu procedury to parametry formalne Parametry z miejsca wywołania to parametry aktualne Panują tu proste zasady przyporządkowania ! ! ! ! Pierwszy formalny odpowiada pierwszemu aktualnemu itd.. 7/12 ©2005 R. Robert ‘RoG@j’ Gajewski Aktualny 5 Aktualny 5 Bardziej efektywne jest umożliwienie procedurze bezpośredniego dostępu do parametrów aktualnych przez podanie ich adresów – jest to przekazywanie parametrów przez referencję ©2005 R. Robert ‘RoG@j’ Gajewski Przez referencję Środowisko procedury Środowisko miejsca wywołania Formalny Aktualny 5 5 Formalny Aktualny 6 6 Aktualny 10/12 Funkcje ! ! ! 11/12 5 Formalny 6 ©2005 R. Robert ‘RoG@j’ Gajewski Wejście-wyjście Moduł (podprogram) implementujemy jako funkcję, jeśli jesteśmy zainteresowani tylko jedną warością ! Formalny 6 ©2005 R. Robert ‘RoG@j’ Gajewski ! Środowisko procedury Aktualny 5 9/12 Ten sposób jest nieefektywny, gdy mamy do czynienia z dużymi blokami danych Niepotrzebnie są tworzone ich kopie 8/12 Przez wartość Środowisko miejsca wywołania Jeśli przekazanie danych z parametrów formalnych na aktualne odbywa się przez ich skopiowanie to mówimy o przekazywaniu przez wartość ! Jest to podprogram podobny do procedury – zwraca on jedną wartość Przekazanie wartości nie odbywa się przez listę parametrów lecz w postaci `wartości funkcji’ Wartość funkcji jest związana z nazwa funkcji tak jak wartość zmiennej z nazwą zmiennej… Różnica jest w działaniu – odwołanie do zmiennej to pobranie jej wartości z pamięci, odwołanie do funkcji to obliczenie jej wartości ©2005 R. Robert ‘RoG@j’ Gajewski (C)2005 R. Robert "RoG@j" Gajewski Procedury i funkcje rozszerzają konstrukcje dostępne w języku programowania ! ! ! 12/12 Jeśli dana operacja nie jest dostępna to możemy ja oprogramować w postaci procedury lub funkcji W ten sposób są implementowane operacje wejścia i wyjścia Ich wywołanie powoduje wywołanie określonych operacji obsługiwanych bezpośrednio przez system operacyjny ©2005 R. Robert ‘RoG@j’ Gajewski 2