Procedury.
Procedury (PROCEDURE) są to wyodrębnione części programu, stanowiące pewną
całość, posiadające jednoznaczną nazwę i ustalony sposób wymiany
informacji z pozostałymi częściami programu. Są stosowane do
wykonania czynności, które mogą być wykorzystane w różnych
programach lub do wykonania czynności wielokrotnie powtarzanych
przez dany program.
Zadaniem procedury jest wykonanie pewnej sekwencji czynności,
polegających zwykle na obliczaniu jedej lub wielu wartości.
Definicja procedury powinna znajdować się
przed częścią operacyjną lecz po
deklaracji zmiennych oraz przed miejscem jej
pierwszego wywołania i ma postać :
PROCEDURE Nazwa_Procedury(Lista_parametrów);
...Część_opisowa
BEGIN
...Ciąg_instrukcji
END;
Lista parametrów zawiera deklarację parametrów,
przy czym poszczególne deklaracje oddziela
się średnikami (Listę parametrów można pominąć).
W części opisowej znajdują się delkaracje stałych, zmiennych
i typów lokalnych.
Korzystanie z procedury polega na jej
wywołaniu, czyli podaniu nazwy i ewentualnie
listy parametrów, zawierającej ich bieżące wartości,
i ma ogólną postać :
Nazwa_Procedury(Lista_parametrów);
Przykład :
PROGRAM Procedury1;
USES Crt;
VAR x : Integer;
Zn : Char;
PROCEDURE Wypisz; { Definicja procedury }
BEGIN
Write('Wpisales : ');
WriteLn(x:3);
END;
BEGIN
ClrScr;
Write('Podaj liczbe : ');
ReadLn(x);
Wypisz; { Wywolanie procedury }
Zn:=ReadKey;
END.
Pojawia się nowe pojęcie :
Zmienne Lokalne są to zmienne tworzone w
momencie rozpoczęcia wykonywania procedury i znikające
po jej zakończeniu. Przechowywane są one w tzw.
Stosie, który jest podczas działania
programu wykorzystywany jako miejsce
przechowywania zmiennych tymczasowych.
Lista Parametrów pozwala na przekazywanie
parametrów do i z procedury i ma ogólną postać :
(Lista_nazw : Typ; ...; Lista_nazw : Typ)
lub
(VAR Lista_nazw : Typ; ...; VAR Lista_nazw : Typ)
gdzie Lista_nazw jest grupą nazw parametrów tego
samego typu, rozdzielonych przecinkami; lub pojedyńczym
parametrem.
Słowo kluczowe VAR przed paramertem oznacza że
procedura ma możliwość Zwrócenia tego parametru
czyli zmiany jego wartości.
Mechanizm przekazywania parametrów.
Parametr nie poprzedzony słowem kluczowym VAR
jest Przekazywany przez Wartość. Oznacza to, że
procedura otrzymuje kopię wartości zmiennej i
może z nią robić wszystko, ale wyłącznie na własny
użytek.
Natomiast poprzedzenie parametru słowem VAR
powoduje, że procedura otrzymuje nie kopię zmiennej lecz
adres zmiennej w pamięci, co umożliwia jej dowolną
modyfikację ze skutkiem widzianym poza procedurą. Ten sposób przekazywania parametrów nazywany jest Przekazywaniem przez Nazwę.
Gdy przekazujemy parametry przez nazwę, to odpowiednie
parametry aktualne w wywołaniu procedury muszą być
zmiennymi. Przekazywanie parametrów przez wartość
dopuszcza użucie zarówno zmiennych jak i wyrażeń.
Przykład :
PROGRAM Procedury2;
USES Crt;
VAR x : Integer;
zn : Char;
PROCEDURE Wypisz(y : Integer; s : String); { Procedura z parametrami }
BEGIN
WriteLn(s, y:3);
END;
PROCEDURE Oblicz(VAR z : Integer); { Zmiana wartoÂci parametru }
BEGIN
z:=z*z;
END;
BEGIN
ClrScr;
Write('Podaj liczbe : ');
ReadLn(x);
Wypisz(x, 'Twoja liczba : ');
Oblicz(x);
Wypisz(x, 'Jej kwadrat : ');
Zn:=ReadKey;
END.