|
Article on other languages:
|
Eine Funktion ist in der Informatik die Bezeichnung eines Programmierkonzeptes, das große Ähnlichkeit zum Konzept der Prozedur hat. Hauptmerkmal einer Funktion ist es, dass sie ein Resultat zurückliefert und deshalb im inneren von Ausdrücken verwendet werden kann. Die genaue Bezeichnung und Details ihrer Ausprägung ist in verschiedenen Programmiersprachen durchaus unterschiedlich.
Funktionen in der funktionalen ProgrammierungDas Konzept einer Funktion im Sinne der Mathematik ist in der funktionalen Programmierung am deutlichsten umgesetzt. Hier stellen Funktionen Abbildungsvorschriften dar. Eine Funktion besteht dann aus einer Reihe von Definitionen, die diese Vorschrift beschreiben. BeispieleIn Haskell würde man z. B. schreiben
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. Ein Beispiel hierfür ist das map :: (a -> b) -> [a] -> [b] map f [] = [] map f (x : xs) = f x : map f xs
Funktionen in der imperativen ProgrammierungIn der imperativen Programmierung ist die Lage deutlich komplizierter. Zwar dienen auch hier Funktionen im Prinzip dazu, aufgrund einer Reihe von Argumenten ein Resultat zu berechnen, aber durch die Verwendung von globalen Variablen kann eine Funktion mehr Argumente empfangen, als aus ihrer Argumentliste ersichtlich ist, und kann auf diesem Weg auch mehr als ein Resultat abliefern. Änderungen in den globalen Variablen einer Funktion werden häufig als Seiteneffekt bezeichnet, obwohl dies eine missglückte Übersetzung aus dem Englischen ist (side effect = „Nebenwirkung“). Damit gerät das Konzept der Funktion in die Nähe der Prozedur, bei der solche „Nebenwirkungen“ in Wirklichkeit die beabsichtigten Hauptwirkungen sind (siehe dazu Wirkung (Informatik)). Das führt dazu, dass Programmiersprachen oft eine irreführende Terminologie verwenden: In C wird beispielsweise generell nur von Funktionen gesprochen; Prozeduren sind dort Funktionen mit dem Rückgabetyp „ BeispielePascalPascal unterscheidet zwischen Funktionen und Prozeduren:
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); Funktionen und Prozeduren sind in Pascal (im Gegensatz zu C) schachtelbar, das heißt, sie können weitere Funktionen und Prozeduren enthalten. Argumente werden normalerweise als Wert übergeben (by value); der Wert einer Variablen, die einer Funktion (oder Prozedur) als Argument übergeben wird, wird durch deren Ausführung nicht verändert. Es ist aber auch möglich, mit dem Schlüsselwort „ CArgumente werden prinzipiell immer als Wert übergeben (by value); soll eine übergebene Variable verändert werden, so übergibt man deren Adresse, also einen Pointer. Die Bestimmung des Rückgabewertes geschieht durch eine Beispiel einer Funktionsvereinbarung in C: int Summe(int a, int b) { return a + b; } Beispiel eines Funktionsaufrufs in C: ergebnis = Summe(1, 2); Siehe auch |
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net