WikiDer > Unterprogramm
In dem Informatik ist ein Unterprogramm oder Subroutine (manchmal auch Funktion, Verfahren oder Routine named) ein klar definierter Programmblock mit eigenem Namen innerhalb eines Computer Programm, die an anderer Stelle im Programm aufgerufen (ausgeführt) werden kann. Die Namen der Unterprogramme können von der verwendeten Programmiersprache.
Unterscheidung zwischen Prozeduren und Funktionen
Einige Programmiersprachen, wie z Pascal und PL/SQL, zwischen Prozeduren und Funktionen unterscheiden; eine Funktion ist dann ein Sonderfall einer Prozedur, die einen Ergebniswert an das aufrufende Programm zurückgibt. Sie werden hauptsächlich für die Implementierung verwendet mathematische Funktionen.
In anderen Sprachen, wie z C und Reichweite, alle Unterprogramme heißen Funktionen, auch wenn sie keinen Wert zurückgeben. Sie geben beispielsweise einen leeren Typ zurück Leere oder Einheit.
Im funktionale Sprachen sind (fast) nur Funktionen im Mathematiker Ausdruck verwendet. In rein funktionalen Sprachen wie Haskell und sauber kann nicht mal diese funktionen Nebenwirkungen Ursache.
Im objektorientierten Programmiersprachen werden zu Prozeduren und Funktionen Methoden erwähnt, wenn sie innerhalb von a . sind Objekt sind festgelegt. Sie sind an dieses Objekt gebunden und heißen mit a Präfix die einen Link zum Objekt und seiner Methode angibt.
Gründe für die Verwendung eines Unterprogramms
Es gibt mehrere Gründe, ein Unterprogramm zu verwenden:
- zu Redundanz vermeiden, Wiederhole dich nicht (DRY)-Prinzip;
- um Code in mehreren Programmen und Anwendungen wiederzuverwenden, Single Point of Definition;
- die Komplexität eines Programms in kleinere, überschaubarere Teile zu unterteilen;
- um die Lesbarkeit eines Programms zu verbessern;
- um einen Teil eines Programms zu verbergen oder zu schützen.
Parameter und Rückgabewerte
Viele Programmiersprachen erleichtern den Datenaustausch zwischen dem aufrufenden Programm und dem Unterprogramm. Diese Daten werden vom aufrufenden Programm als Parameter an das Unterprogramm übergeben Es wird zwischen Ein- und Ausgabeparametern unterschieden. Eingabeparameter übergeben nur Werte an das Unterprogramm. Ausgabeparameter geben Daten aus dem Unterprogramm zurück an das Hauptprogramm. Strengere Sprachen wie C# haben einen separaten Typ, bei dem die Parameter beide sein können, andere Sprachen verwenden auch die Ausgabeparameter als Eingabeparameter.
Im Allgemeinen gibt es drei Mechanismen, um Parameter an Unterprogramme zu übergeben:
- Wert weitergeben
- Bei diesem Mechanismus wird beim Aufruf eines Unterprogramms für jeden Formalparameter des Unterprogramms ein Ausdruck im Sinne der Programmiersprache angegeben. Während der Ausführung des Programms wird beim Aufruf des Unterprogramms dieser Ausdruck berechnet. Der Wert dieses Ausdrucks wird dann als Anfangswert des Formalparameters an das Unterprogramm übergeben. Ein besonderes Merkmal dieses Mechanismus gegenüber anderen Mechanismen besteht darin, dass, wenn der Ausdruck aus einer Programmvariablen besteht, die Wert dieser Variablen wird an das Unterprogramm übergeben, aber nicht die Variable selbst. Was auch immer das Unterprogramm mit diesem Wert oder dem Formalparameter macht, hat keinen Einfluss auf den Wert der Programmvariablen.
- als Referenz weitergeben
- Bei diesem Mechanismus wird ein Formalparameter des Unterprogramms zum Synonym für eine Variable des Hauptprogramms. Charakteristisch für diesen Mechanismus ist, dass jede Änderung des Formalparameters im Unterprogramm auch eine direkte Änderung des Wertes der übergebenen Variablen ist. Die meisten Sprachen, die diesen Mechanismus verwenden, erfordern, dass das, was als Parameter an das Unterprogramm übergeben wird, eine veränderliche Variable ist und nichts anderes.
- mit Namen weitergeben
- Bei diesem Mechanismus wird beim Aufruf eines Unterprogramms die Referenz eines Wertes übergeben. Bei der Programmausführung wird im Programmtext des Unterprogramms der Formalparameter durch den übergebenen Variablen- oder Funktionsnamen ersetzt. Dadurch besteht die Chance, dass die Auswertung später oder gar nicht durchgeführt wird. Dies entspricht in einigen Sprachen dem Callback-Parameter. Eine typische Anwendung liegt in der optionalen Weitergabe von Protokolldaten. Sofern keine Logdaten angefordert werden, werden keine unnötigen Auswertungen vorgenommen.
Manchmal wird eine Kombination von Mechanismen verwendet oder eine Nebenwirkung eines Mechanismus, durch den mehr als ein Wert übergeben wird. Das Java-Sprache kennt zB als Typen für Programmvariablen eine Reihe von Grundtypen und weiter den "Objektverweis"; Variablen dieses Typs sind transparent und werden in der Sprache tatsächlich so behandelt, als wären sie die Objekte, auf die sie sich beziehen. Darüber hinaus verfügt Java über einen Wertübergabemechanismus als Parametermechanismus. Wenn jedoch der Wert eines Objekts als Referenz übergeben wird, wird dieses Objekt natürlich auch tatsächlich übergeben – als ob es per Referenz übergeben würde. Man könnte diesen Mechanismus so etwas wie "Referenzwertübergabe" nennen.
Unterprogramme unterscheiden manchmal zwischen den Werten, die nach einem Aufruf zurückgegeben werden. Manche Sprachen haben nur Unterprogramme mit einem Ergebniswert, manche Sprachen haben nur Unterprogramme ohne, wieder andere Sprachen haben eine Kombination.
Gesunde Programmierung
Aus der Sicht von strukturierte Programmierung Beim Schreiben von Unterprogrammen gelten andere Faustregeln.
- Zunächst einmal sowohl das Verfahren selbst als auch die Parameter selbstdokumentierende Namen, also selbsterklärende Namen haben.
- Ein Unterprogramm sollte eine und nur eine Aufgabe ausführen. Wenn es zwei Aufgaben gibt, teilen Sie sie in zwei Unterprogramme auf.
- Ein Unterprogramm, wie jedes Programm haben nur einen Eingang und einen Ausgang.
- Ein Unterprogramm hat starker Zusammenhalt und schwache Kopplung, dh die Elemente innerhalb des Unterprogramms haben einen starken Zusammenhalt und nur wenige Schnittstellen nach außen.
Rekursion
Einige Sprachen erlauben es Unterprogrammen, sich selbst aufzurufen. Dieses Phänomen wird Rekursion Wichtig ist, dass der rekursive Aufruf eine Bedingung im Unterprogramm hat, um zu verhindern, dass ein Unterprogramm in eine Endlosschleife geht, indem es sich selbst aufruft. Die Bedingung, die erfüllt sein muss, damit die Rekursion beendet wird, heißt Stoppbedingung erwähnt.