Unterprogramm

Ein Unterprogramm ist Teil eines Computerprogramms, das eine bestimmte Bearbeitungsfolge kapselt. Ein Programm besteht in der Regel aus einem Hauptprogramm und mehreren Unterprogrammen. Andere Ausdrücke für Unterprogramm sind Subroutine oder Unterroutine.

Inhaltsverzeichnis

Zweck

Unterprogramme werden zur besseren Strukturierung von Programmen, zur Abstraktion, Modularisierung, bei mehrfacher Verwendung zum Einsparen von Schreibarbeit und um den Ziel-Code kompakt zu halten eingesetzt.

Unterstützung in Programmiersprachen

Nahezu alle modernen Programmiersprachen unterstützen das Unterprogrammkonzept. In Programmiersprachen werden Unterprogramme durch Funktionen und Prozeduren repräsentiert. Gelegentlich wird Subroutine (oder auch einfach Routine) als Sammelbegriff für Funktion und Prozedur verwendet.

Dabei wird eine Folge von Anweisungen, unter einem Namen zusammengefasst. Es können Parameter an die Folge übergeben, und ggf. auch ein Wert zurückgeliefert werden. Die Parameter werden in der Regel durch Reihenfolge, Typ und Anzahl festgelegt. Ein Unterprogramm wird eingesetzt, um Anweisungsfolgen, die an mehreren Stellen in einem Programmsystem verwendet werden, zusammengefasst an nur einer Stelle aufzuführen.

In den meisten Programmiersprachen können Unterprogramme auch weitere Unterprogramme aufrufen (Schachtelung). Kann ein Unterprogramm sich selbst aufrufen, oder können sich Unterprogramme gegenseitig aufrufen, spricht man von Rekursion.

In objektorientierten Sprachen wird eher von Nachricht oder Methode gesprochen, gemeint ist jedoch das selbe Prinzip, wobei hier durch dynamisches Binden zur Laufzeit, in Abhängigkeit vom aktuellen Zustand, auch unterschiedliche Unterprogramme aufgerufen werden können.

Als Signatur eines Unterprogramms wird der Satz aus Name, Parametertypen und Rückgabetypen verstanden:

 Unterprogrammname : Param_typ1, Param_typ2, Param_typ3 -> Ergebnistyp
 

Umsetzung auf Maschinenebene

Vor dem Aufruf eines Unterprogramms wird die Rücksprungadresse gespeichert. Dann wird ein Sprungbefehl zur Zieladresse des Unterprogramms durchgeführt. Beim Verlassen des Unterprogramms wird dann der auf die Rücksprungadresse folgende Befehl ausgeführt.

Zur Verwaltung einer hohen Verschachtelungstiefe von Unterprogrammen und zur Realisierung von Rekursion wird eine eigene Datenstruktur für die Speicherung der Rücksprungadressen angelegt, der so genannte Stapelspeicher (Stack). Moderne Prozessoren verfügen über spezielle Befehle zur Unterstützung von Unterprogrammaufrufen (z.B. CALL, JSR). Dabei wird üblicherweise von dem Befehl sowohl die Speicherung der Rücksprungadresse auf dem Stapelspeicher als auch die Verzweigung ausgeführt. Außer zur Speicherung der Rücksprungadressen dient der Stapelspeicher auch zur Zwischenspeicherung von lokalen Variablen.

Informationsaustausch zwischen Unterprogrammen

Unterprogramme können Argumente haben, die auch Parameter genannt werden. Beim Aufruf des Unterprogramms werden die Argumente übergeben. Auch die Rückgabe von Werten ist über diese Parameter möglich.

Sammlungen von Unterprogrammen

Unterprogramme werden oft vorübersetzt und zu Bibliotheken zusammengefasst.

Siehe auch

Algorithmus, Funktion, Routine (Programmierung)

See also: Unterprogramm, Algorithmus, Bibliothek (EDV), Computerprogramm, Dynamische Bindung, Folge, Funktion, Funktion (Programmierung), Objektorientierte Programmierung, Parameter (Informatik)