Unterroutinen oder auch je nach Programmiersprache Subroutines,
Prozeduren genannt, dienen dazu, ein Programm in kleinere
thematisch gegliederte und überschaubarere Teile zu
zerlegen. Ein weiterer Vorteil ergibt sich, wenn diese
Programmteile mehrmals im Programm vorkommen, da man eine Prozedur
einmalig deklariert und mehrmals ausführen kann.
Vorteile:
Ein Programm kann klar thematisch gegliedert werden.
Im gleichen Programm wiederkehrende Anweisungsfolgen braucht
man nur einmalig schreiben. Hauptprogramm und Prozedur in gleicher
Datei.
In verschiedenen Programmen immer wiederkehrende
Anweisungsfolgen braucht man nur einmalig schreiben. Hauptprogramm
und Prozedur in verschiedenen Dateien.
Der Code der Prozedur muß also einmalig programmiert werden.
Unterroutinen bestehen aus einer Folge von Anweisungen. Beim
Aufruf werden dann die zuvor einmalig geschriebenen
Anweisungen ausgeführt und danach die Kontrolle wieder dem
aufrufenden Programmteil zurückgegeben. Um eine Prozedur zur
Ausführung zu bringen, wird sie mit ihrem Namen
aufgerufen:
Parameter einer Prozedur stellen die Schnittstelle für
Daten zwischen dem aufrufenden Programm und der Prozedur dar -
Parameterübergabe. Wenn Parameter an die Prozedur
übergeben werden sollen, muß dies bei der Deklaration
der Prozedur durch eine formale Parameterliste kenntlich
gemacht werden. Man spricht von formalen Parametern, weil
deren Namen nicht identisch mit den Variablennamen beim aktuellen
Aufruf der Prozedur sein müssen (aktuelle
Parameter).
Man unterscheidet 2 Arten von Parametern: Parameter
«called by value» (Werteaufruf) und Parameter
«called by name» (Namensaufruf):
Wird ein «called by value» Parameter
übergeben, wird eine Kopie des Wertes (deshalb
«called by value») angelegt, mit der in der Prozedur
gearbeitet werden kann. Es können im aktuellen Prozeduraufruf
des aufrufenden Programmteils somit Ausdrücke als aktuelle
Parameter übergeben werden.
Da es sich beim Parameter I um eine Kopie handelt, wirken sich
Änderungen des Wertes von I in der Prozedur nicht auf die
Variable N aus. Dies gilt auch, wenn die Variable des
Hauptprogramms und der Parameter den gleichen Namen besitzen
sollten.
Bei Parameter «called by name» dagegen wird
eine (RAM-) Adresse übergeben. Deshalb können im
aktuellen Prozeduraufruf des aufrufenden Programmteils keine
Ausdrücke sondern nur Adressen von Variablennamen
übergeben werden (deshalb «called by name»).
Änderungen von I in der Prozedur wirken sich immer auf den
Inhalt der Variablen N aus, da ja mit einem Zugriff auf I auf die
Adresse von N zugegriffen wird.