Zum Inhalt springen

Unterprogramm

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 5. Mai 2004 um 23:05 Uhr durch Weede (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Ein Unterprogramm ist Teil eines Computerprogramms. Ein solches Programm besteht in der Regel aus einem Hauptprogramm und mehreren Unterprogrammen. In den meisten Programmiersprachen können Unterprogramme auch weitere Unterprogramme aufrufen (Schachtelung).

Unterprogramme werden zur besseren Strukturierung von Programmen, zur Abstraktion und bei mehrfachen Ausführung zum Einsparen von Schreibarbeit eingesetzt. Beim Aufruf eines Unterprogramms wird die Rücksprungadresse gespeichert. Beim Verlassen des Unterprogrammes wird dann der auf die Rücksprungadresse folgende Befehl ausgeführt. Moderne Prozessoren besitzen spezielle Befehle zur Unterstützung von Unterprogrammaufrufen (z.B. CALL, JSR) und zur Rückkehr von Unterprogrammen. Nahezu alle modernen Programmiersprachen unterstützen das Unterprogrammkonzept.

Kann ein Unterprogramm sich selbst aufrufen, oder können sich Unterprogramme gegenseitig aufrufen, spricht man von Rekursion. Dies erreicht man dadurch, dass ein Stack die Rücksprungadressen aufnimmt. Der Stapel dient zur Zwischenspeicherung von lokalen Variablen dienen.

Unterprogramme können in der Regel Argumente haben, die Parameter genannt werden. Beim Aufruf werden aktuelle Werte an die Argumente übergeben. Auch die Rückgabe von Werten ist über diese Parameter möglich.

Funktionsunterprogramme oder Funktionen haben im Gegensatz zu "echten" Unterprogrammen einen Rückgabewert. Dies ermöglicht die Verwendung von Unterprogrammen in Ausdrücken, so dass sie wie Funktionen in der üblichen mathematischen Schreibweise verwendet werden können.

Funktionen können, wenn sie mit den gleichen Parameterwerten aufgerufen werden, immer dasselbe Ergebnis liefern. Diese Funktionen heißen pur (engl. pure functions). Dazu gehören mathematische Routinen wie sin(x), log(x), jedoch z.B. nicht Zufallsgeneratorfunktionen (random). Funktionen können auch Parameterwerte verändern, z. B. wenn inc(x) das Argument um eins erhöht (Inkrement). Unterprogramme, deren Aufruf ihre Argumente und ihre Umgebung niemals verändert, heißen seiteneffektfrei, da solch eine Veränderung ein Seiteneffekt des Aufrufs wäre.

Unterprogramme können oft zu Bibliotheken zusammengefasst und vorübersetzt werden. Über einen Linker können sie dann mit einem Programm verbunden werden. Dadurch wird ein modularer Programmierstil ermöglicht. Eine Bibliothek stellt dann eine Sammlung von normalerweise getesteten und leistungsfähigen Routinen für Standard- oder Spezialaufgaben dar.