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