Funktion (Programmierung) - de.LinkFang.org

Funktion (Programmierung)


(Weitergeleitet von Funktionsaufruf)



Eine Funktion (englisch function) ist in der Informatik und in verschiedenen höheren Programmiersprachen die Bezeichnung eines Programmkonstrukts, mit dem der Programm-Quellcode strukturiert werden kann, so dass Teile der Funktionalität des Programms wiederverwendbar sind. Das besondere Merkmal einer Funktion (im Vergleich zum ähnlichen Konstrukt der Prozedur) ist, dass die Funktion ein Resultat direkt zurückgibt und deshalb in Ausdrücken verwendet werden kann. Die genaue Bezeichnung und Details ihrer Ausprägung sind in verschiedenen Programmiersprachen durchaus unterschiedlich.

Funktionen gelten als spezielle Varianten von Unterprogrammen.

Nicht zu verwechseln ist das Programmkonstrukt ‚Funktion‘ mit anderen Bedeutungen des Ausdrucks ‚Funktion‘, beispielsweise mit Funktionen im Sinn der Organisation oder der Systemtheorie oder mit Funktion im Sinne von Aufgabe.

Inhaltsverzeichnis

Funktionale Programmierung


Das 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.

Beispiele

In Haskell würde man zum Beispiel 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-Funktional:

 map :: (a -> b) -> [a] -> [b]
 map f []         = []
 map f (x : xs)   = f x : map f xs

map nimmt als Argument eine Funktion von a nach b, wobei a und b beliebige Typen sind (Typvariablen) und liefert als Ergebnis eine neue Funktion, die Listen von a in Listen von b abbildet, indem nämlich f auf jedes Element der Liste angewendet wird.

Imperative Programmierung


Zwar dienen auch in der imperativen Programmierung 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 Nebeneffekt bezeichnet. 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 in der 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 void; in Modula-2 dagegen werden auch Funktionen mit dem Schlüsselwort procedure definiert.

Direktes Verwenden des Ergebnisses

Im Gegensatz zu Prozeduren geben Funktionen einen Wert zurück, der direkt verwendet werden kann. Prozeduren, die keinen Rückgabewert haben, können nur indirekt Ergebnisse liefern, indem entweder Referenzparameter oder globale Variablen verändert werden.

Die Programmiersprache Pascal bietet eine explizite Unterscheidung für Funktionen und Prozeduren. Eine Funktion increment, welche eine Zahl um eins erhöht, kann folgendermaßen definiert werden:

function increment(variable: Integer): Integer;
begin
    increment := variable + 1;
end;

Bei einer Prozedur kann das Berechnungsergebnis nur indirekt zurückgegeben werden wie beispielsweise über Referenzparameter.

procedure increment(variable: Integer, var reference: Integer);
begin
    reference := variable + 1;
end;

Während das Ergebnis bei einem Funktionsaufruf direkt genutzt werden kann, muss das Ergebnis bei einer Prozedur zuerst in einer Variablen gespeichert werden, da die Variable als Parameter übergeben wird.

program main;
var
    variable: Integer;
begin
    // Aufruf einer Funktion
    writeln(increment(3));    // Aufruf einer Prozedur
    increment(3, variable);
    writeln(variable);
end;

Beispiele

Pascal

Pascal 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. Dies bedeutet, dass sie weitere Funktionen und Prozeduren enthalten können.

Argumente werden normalerweise als Wertparameter übergeben (call / pass 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 var die Übergabe als Referenz (call by reference) festzulegen. Dadurch wird nicht der Wert einer Variablen übergeben, sondern ihre Adresse.

C

Argumente werden prinzipiell immer als Wertparameter übergeben (call / pass 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 return Anweisung. Funktionen in C sind nicht schachtelbar. Allerdings liefern einige C-Compiler nicht standardisierte Erweiterungen aus, welche eine Schachtelung ermöglichen.

Beispiel einer Funktionsvereinbarung in C:

int summe(int a, int b) {
    return a + b;
}

Beispiel eines Funktionsaufrufs in C:

ergebnis = summe(1, 2);

Automatisierungstechnik: SPS-Programmierung


In der Automatisierungstechnik werden bei der SPS-Programmierung Funktionen (FCs) sowie Funktionsbausteine (FBs) als bibliotheksfähige Bausteine verwandt.

Literatur





Kategorien: Programmierkonzept | Unterprogramm | Programmiersprachelement



Quelle: Wikipedia - https://de.wikipedia.org/wiki/Funktion (Programmierung) (Autoren [Versionsgeschichte])    Lizenz: CC-by-sa-3.0


Veränderungen: Alle Bilder und die meisten Designelemente, die mit ihnen in Verbindung stehen, wurden entfernt. Icons wurden teilweise durch FontAwesome-Icons ersetzt. Einige Vorlagen wurden entfernt (wie „Lesenswerter Artikel“, „Exzellenter Artikel“) oder umgeschrieben. CSS-Klassen wurden zum Großteil entfernt oder vereinheitlicht.
Wikipedia spezifische Links, die nicht zu Artikeln oder Kategorien führen (wie „Redlink“, „Bearbeiten-Links“, „Portal-Links“) wurden entfernt. Alle externen Links haben ein zusätzliches FontAwesome Icon erhalten. Neben weiteren kleinen Designanpassungen wurden Media-Container, Karten, Navigationsboxen, gesprochene Versionen & Geo-Mikroformate entfernt.


Stand der Informationen: 05.05.2020 07:18:29 CEST - Wichtiger Hinweis Da die gegebenen Inhalte zum angegebenen Zeitpunkt maschinell von Wikipedia übernommen wurden, war und ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.org nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein oder Fehler in der Darstellung vorliegen, bitten wir Sie darum uns per zu kontaktieren: E-Mail.
Beachten Sie auch : Impressum & Datenschutzerklärung.