Startseite | Impressum
Lumrix Logo
 
 



[ICD 10 Suche]
[Mehr über den ICD]

 

 

Subretinale

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

  • 1 Zweck
  • 2 Unterstützung in Programmiersprachen
  • 3 Umsetzung auf Maschinenebene
  • 4 Informationsaustausch zwischen Unterprogrammen
  • 5 Sammlungen von Unterprogrammen
  • 6 Siehe auch

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 Programmiersprachenunterstützen das Unterprogrammkonzept. In Programmiersprachen werden Unterprogramme durch Funktionenund Prozedurenrepräsentiert. Gelegentlich wird Subroutine (oder auch einfach Routine) als Sammelbegriff für Funktion und Prozedur verwendet.

Dabei wird eine Folgevon Anweisungen, unter einem Namen zusammengefasst. Es können Parameteran 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 Sprachenwird eher von Nachricht oder Methode gesprochen, gemeint ist jedoch das selbe Prinzip, wobei hier durch dynamisches Bindenzur Laufzeit, in Abhängigkeit vom aktuellen Zustand, auch unterschiedliche Unterprogramme aufgerufen werden können.

Über die so genannten Signaturenwerden Unterprogramme vom verwendeten Compiler, Linkeroder auch Interpreteridentifiziert. Der Name eines Unterprogramms ist stets Teil seiner Signatur, daneben wird aber in vielen Programmiersprachen auch über die Parameterliste und sogar den Ergebnistyp unterschieden. So ist es dann beispielsweise möglich, dass gleichnamige Unterprogramme ausschliesslich über ihre unterschiedlichen Parametertypen differenziert werden können, was wiederum als Überladenbezeichnet wird:

   int add(int a, int b)     ==> add(1, 2)
 float add(float a, float b) ==> add(1.5, 1.0)

Im Beispiel wird allein anhand der Parameter entschieden, welches der gleich benannten Unterprogramme "add" aufgerufen wird.

Umsetzung auf Maschinenebene

Vor dem Aufruf eines Unterprogramms wird die Rücksprungadresse als Adresse des ursprünglich nächsten auszuführenden Befehls zwischengespeichert, damit der Programmfluss nach dem Beenden der Unterfunktion gewährleistet ist und die aufrufende Funktion weitergeführt werden kann.

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.

Eine Funktion wird (zumindest auf Maschinencodeebene) dadurch aufgerufen, dass auf die gespeicherte Adresse der Funktion gesprungen wird. Der Befehlszähler (Instruction Counter/Programm Counter (PC)) wird einfach auf diese Adresse gesetzt. Um aus der Funktion wieder zurückzukehren, wird zu der Adresse des ursprünglich nächsten Befehls (nach dem Sprung) gesprungen, die vorher zwischengespeichert wurde (meist auf dem Stack). Dies ist die Rücksprungadresse.

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 Prozessorenverfü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 Parametergenannt 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 Bibliothekenzusammengefasst.

Siehe auch

  • Algorithmus
  • Funktion
  • Routine (Programmierung)it:Subroutine
Von "http://de.wikipedia.org/Unterprogramm"



Dieser Artikel basiert auf dem Artikel aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation.
In der Wikipedia ist eine Liste der Autoren verfügbar.