Funktion (Informatik)

Funktion (Informatik)

Eine Funktion (engl.: function, subroutine) 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.

Inhaltsverzeichnis

Funktionen in der funktionalen 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 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-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.


Funktionen in der imperativen Programmierung

In 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 „void“; in Modula-2 dagegen werden auch Funktionen mit dem Schlüsselwort PROCEDURE definiert.

Beispiele

Pascal

Pascal unterscheidet zwischen Funktionen und Prozeduren:

  • Funktionen werden mit dem Schlüsselwort „FUNCTION“ deklariert und liefern einen Rückgabewert mit einem definierten Typ. Funktionsaufrufe stehen innerhalb von Ausdrücken. Die Festlegung des Rückgabewerts erfolgt durch eine (Pseudo-)Zuweisung an den Funktionsnamen. Als Nebenwirkung können Funktionen aber den Zustand des Programms verändern, indem nämlich globale Variablen neue Werte erhalten.
  • Prozeduren werden mit dem Schlüsselwort „PROCEDURE“ deklariert und haben keinen definierten Rückgabewert. Ihre Wirkung kann sich deshalb nur in den Änderungen globaler Variablen zeigen.

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 „VAR“ die Übergabe als Referenz (by reference) festzulegen. Dadurch wird nicht der Wert einer Variablen übergeben, sondern ihre Adresse.


C

Argumente 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 return-Anweisung. Funktionen in C sind nicht schachtelbar.

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


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Funktion (Programmierung) — Funktion (engl.: function) ist in der Informatik die Bezeichnung eines Programmkonstrukts. Unterscheidungsmerkmal einer Funktion im Vergleich zum ähnlichen Konstrukt der Prozedur ist es, dass die Funktion ein Resultat zurückliefert und deshalb im …   Deutsch Wikipedia

  • Informatik — ist die „Wissenschaft von der systematischen Verarbeitung von Informationen, besonders der automatischen Verarbeitung mit Hilfe von Digitalrechnern“ [1]. Historisch hat sich die Informatik einerseits aus der Mathematik entwickelt, andererseits… …   Deutsch Wikipedia

  • Funktion höherer Ordnung — Eine Funktion höherer Ordnung ist in der Informatik eine Funktion, die Funktionen als Argumente erhält oder Funktionen als Ergebnis liefert. Der Begriff wird insbesondere im Lambda Kalkül verwendet, der theoretischen Grundlage der Funktionalen… …   Deutsch Wikipedia

  • Informatik — Informationstechnik; Computerwissenschaft * * * In|for|ma|tik [ɪnfɔr ma:tɪk], die; : Wissenschaft von der systematischen Verarbeitung von Informationen mithilfe von Computern: Informatik studieren. * * * In|for|ma|tik 〈f. 20; unz.〉 Wissenschaft… …   Universal-Lexikon

  • Funktion (Mathematik) — In der Mathematik ist eine Funktion oder Abbildung eine Beziehung zwischen zwei Mengen, die jedem Element der einen Menge (Funktionsargument, unabhängige Variable, x Wert) genau ein Element der anderen Menge (Funktionswert, abhängige Variable, y… …   Deutsch Wikipedia

  • Funktion — I. Organisation:Teilaufgabe zur Erreichung des Unternehmungsziels. Beispiele: Beschaffung, Produktion, Absatz, Verwaltung. F. als Grundlage der Organisationsstruktur: ⇡ Funktionalorganisation. II. Mathematik:1. Begriff: Eine F. dient der… …   Lexikon der Economics

  • Funktion — Funk|ti|on die; , en <aus lat. functio »Verrichtung, Geltung« zu fungi, vgl. ↑funktionieren>: 1. a) (ohne Plur.) Tätigkeit, das Arbeiten (z. B. eines Organs); b) Amt, Stellung (von Personen); c) …   Das große Fremdwörterbuch

  • Informatik — In|for|ma|tik die; <zu ↑Information u. 2↑...ik>: a) Wissenschaft vom Wesen u. der Funktion der Information (2), ihrer Verarbeitung sowie der Anwendung informationsverarbeitender Systeme; b) Computerwissenschaft …   Das große Fremdwörterbuch

  • berechenbare Funktion — I berechenbare Funktion,   Informatik, mathematische Logik: eine Funktion f : M → N, für die es einen Algorithmus gibt, der für jeden Eingabewert …   Universal-Lexikon

  • Rekursive Funktion — Dieser Artikel erläutert die Technik der rekursiven Definition; zum Begriff rekursive Menge siehe entscheidbar. Als Rekursion (lat. recurrere „zurücklaufen“) bezeichnet man die Technik in Mathematik, Logik und Informatik, eine Funktion durch sich …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”