Funktion (Programmierung)
aus Wikipedia, der freien Enzyklopädie
Eine Funktion ist in der Informatik die Bezeichnung eines Programmierkonzeptes. Die genaue Bedeutung hängt von der Art der verwendeten Programmiersprache ab:
- Imperative Programmiersprachen: Hier bezeichnet eine Funktion ein Unterprogramm.
- Funktionale Programmiersprachen: Hier ist eine Funktion, ähnlich wie in der Mathematik, eine Abbildungsvorschrift.
Inhaltsverzeichnis |
[Bearbeiten] Funktionen in der imperativen Programmierung
In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. Oft benötigter Code kann in Funktionen zusammengefasst werden und über den Namen der Funktion nach Bedarf aufgerufen werden. In der Regel erzeugt der Compiler für jeden Funktionsaufruf einen neuen Bereich auf dem Stack. Dort werden die Parameter, die lokalen Variablen der Funktion sowie der Rückgabewert abgelegt.
Funktionen können einen oder mehrere Aufrufparameter haben und liefern nach ihrem Ende einen Funktionswert zurück. Funktionen werden typischerweise in Bibliotheken thematisch gebündelt. Neben Standardfunktionen, mit denen man zum Beispiel an die Schnittstellen des Betriebssystems ankoppeln kann, gibt es auch eigenständige Funktionen, die lediglich Daten verarbeiten und wiederkehrende Aufgaben, wie das Suchen einer Zeichenkette in einem Text, übernehmen.
Je nach Programmiersprache werden für Funktionen unterschiedliche Bezeichnungen verwendet. So werden Funktionen in Java als Methoden bezeichnet, um ihre Zugehörigkeit zu einem Objekt (siehe Objektorientierte Programmierung) zu betonen. Andere Bezeichnungen sind sub (von Subroutine) in Perl oder allgemein Routine. In einigen Programmiersprachen unterscheidet man zwischen Funktionen, die einen Wert als Ergebnis einer Berechnung zurückliefern, und Routinen, die nur Code ausführen.
Funktionen können, je nach Art der Parameterübergabe, auch Parameterwerte verändern, z. B. wenn inc(x) das Argument um eins erhöht (Inkrement). Funktionen, deren Aufruf ihre Argumente und ihre Umgebung niemals verändern, heißen nebeneffektfreie Funktionen.
[Bearbeiten] Beispiele
Beispiel einer Funktionsvereinbarung in C:
int Summe(int a, int b) { return a + b; }
Beispiel eines Funktionsaufrufs in C:
ergebnis = Summe(1, 2);
Beispiel einer Funktionsvereinbarung in Pascal:
function Summe(a: Integer; b: Integer): Integer; begin Summe := a + b; end;
Beispiel eines Funktionsaufrufs in Pascal:
ergebnis := Summe(1, 2);
Beispiel einer Funktionsvereinbarung in PowerBASIC:
Function Summe(a AS Integer, b AS Integer) AS Integer Summe = a + b End Function
Alternativ lässt PowerBASIC für genau die selbe Funktion eine knappere Schreibweise zu:
Function Summe%(a%, b%) Summe% = a% + b% End Function
Oder gar noch einfacher:
DefInt i, j 'alle mit i od. j beginnende Variablen sind Integer Function Summe%(i, j) Function = i + j End Function
Beispiel eines Funktionsaufrufs in PowerBASIC:
ergebnis = Summe(1, 2)
[Bearbeiten] Funktionen in der funktionalen Programmierung
In der funktionalen Programmierung stellen Funktionen Abbildungsvorschriften dar. Eine Funktion besteht dann aus einer Reihe von Definitionen, die diese Vorschrift beschreiben. Im Gegensatz zur imperativen Programmierung sind Funktionen also keine zusammengefassten Codeblöcke. Viel mehr entspricht die Funktion hier eher der mathematischen Definition einer Funktion.
[Bearbeiten] Beispiele
In Haskell würde man z. B. schreiben
Summe :: Int -> Int -> Int Summe a b = a + b
Eine weitere Funktion wäre
max :: Int -> Int -> Int max a b | a > b = a | otherwise = b
Diese Schreibweise erinnert an die mathematische Definition des Maximums zweier Zahlen.
Ein funktionales Programm besteht ausschließlich aus Funktionsdefinitionen und besitzt keine Kontrollstrukturen wie Schleifen. Wichtigstes Hilfsmittel für die funktionale Programmierung ist daher die Rekursion.
Funktionen sind in funktionalen Programmiersprachen Objekte, mit denen wie mit Variablen gearbeitet werden kann. Insbesondere können Funktionen also als Argument oder Rückgabewert einer anderen Funktion auftreten. Man spricht dann von Funktionen höherer Ordnung.