Funktion (Programmierung)

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, sodass 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 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.

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:

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

  • Siegfried Grohmann, Dirk Papendieck, OStR Peter Westphal-Nagel: Automatisierungstechnik mit Simatic S7. Programmierprojekte für die berufliche Aus- und Weiterbildung. 3., überarbeitete und aktualisierte Auflage, Elektronik-Praktiker-Verlag (EPV), Duderstadt 2009, ISBN 978-3-936318-75-3, 160 Seiten.

Read other articles:

2011 film by Antti Jokinen The ResidentTheatrical release posterDirected byAntti JokinenWritten byAntti JokinenRobert OrrErin Cressida WilsonProduced bySimon OakesCary BrokawGuy EastNigel SinclairStarringHilary SwankJeffrey Dean MorganLee PaceAunjanue EllisChristopher LeeCinematographyGuillermo NavarroEdited byBob MurawskiStuart LevyMusic byJohn OttmanProductioncompaniesHammer FilmsExclusive Media GroupDistributed byParamount PicturesIcon Film DistributionRelease date 29 March 2011&...

 

العلاقات الناوروية الميكرونيسية ناورو ولايات ميكرونيسيا المتحدة   ناورو   ولايات ميكرونيسيا المتحدة تعديل مصدري - تعديل   العلاقات الناوروية الميكرونيسية هي العلاقات الثنائية التي تجمع بين ناورو وولايات ميكرونيسيا المتحدة.[1][2][3][4][5] مقا...

 

Yoga guru who founded Siddha Yoga (1908–1982) SwamiMuktanandaMuktananda in 1974PersonalBornKrishna Rai(1908-05-16)16 May 1908Mangalore, Madras Presidency, British IndiaDied2 October 1982(1982-10-02) (aged 74)Ganeshpuri, Maharashtra, IndiaResting placeMuktananda's samādhi shrine, Gurudev Siddha PeethReligionHinduismNotable work(s)Play of ConsciousnessPhilosophyVedanta, Kashmir ShaivismReligious careerPeriod in office1956-1982InitiationShaktipat15 August 1947Ganeshpuri, Mahrashtra,...

Peta menunjukan lokasi Carmen Untuk kegunaan lain, lihat Carmen. Carmen adalah munisipalitas yang terletak di provinsi Cebu, Filipina. Pada tahun 2007, munisipalitas ini memiliki populasi sebesar 41.279 jiwa. Pembagian wilayah Secara politis Carmen terbagi menjadi 21 barangay, yaitu: Baring Bliss Cantipay Cantumog Cantucong Caurasan Corte Dawis Norte Dawis Sur Cogon East Hagnaya Ipil Lanipga Liboron Lower Natimao-an Luyang Poblacion Puente Sac-on Triumfo Upper Natimao-an Cogon West Pranala lu...

 

American politician (1774–1860) Littleton Tazewell26th Governor of VirginiaIn officeMarch 31, 1834 – April 30, 1836Preceded byJohn FloydSucceeded byWyndham Robertson (acting)President pro tempore of the United States SenateIn officeJuly 9, 1832 – July 16, 1832Preceded bySamuel SmithSucceeded byHugh Lawson WhiteUnited States Senatorfrom VirginiaIn officeDecember 7, 1824 – July 16, 1832Preceded byJohn TaylorSucceeded byWilliam RivesMember of the Virginia House...

 

Election in Indiana Main article: 1824 United States presidential election 1824 United States presidential election in Indiana ← 1820 October 26 – December 2, 1824 1828 →   Nominee Andrew Jackson Henry Clay John Quincy Adams Party Democratic-Republican Democratic-Republican Democratic-Republican Home state Tennessee Kentucky Massachusetts Running mate John C. Calhoun Nathan Sanford John C. Calhoun Electoral vote 5 0 0 Popular vote 7,343 5,315 3...

† Человек прямоходящий Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:Синапсиды�...

 

South American Football ConfederationSingkatanCONMEBOLCSFTanggal pendirian9 Juli 1916; 107 tahun lalu (1916-07-09)TipeOrganisasi olahragaKantor pusatLuque (Gran Asunción), ParaguayKoordinat25°15′38″S 57°30′58″W / 25.26056°S 57.51611°W / -25.26056; -57.51611Wilayah layanan Amerika SelatanJumlah anggota 10 asosiasiBahasa resmi Spanyol PortugisPresidenAlejandro DomínguezWakil Presiden Laureano González Claudio Tapia Ramón Jesurún[1] Sekretari...

 

Martian landscape feature Hephaestus FossaeTwo views of the Hephaestus Fossae, as seen by HiRISE. Picture on right lies to the top (north) of other picture. Fossae often form by material moving into an underground void.Coordinates21°06′N 237°30′W / 21.1°N 237.5°W / 21.1; -237.5Naminga classical albedo feature name The Hephaestus Fossae are a system of troughs and channels in the Amenthes quadrangle of Mars, with a location centered at 21.1 N and 237.5 W. They a...

Cet article est une ébauche concernant un coureur cycliste allemand. Vous pouvez partager vos connaissances en l’améliorant (comment ?). Pour plus d’informations, voyez le projet cyclisme. Sigi RenzSigi Renz en 2006InformationsNaissance 2 août 1938 (85 ans)MunichNationalité allemandeÉquipes professionnelles 1960Pro individuel1961TorpedoBerolina1962Torpedo-ContinentalTorpedo-Fichtel & Sachs1963Torpedo1964Torpedo-Continental1965Torpedo-Fichtel & Sachs1966Torpedo1967M...

 

Collection of Galician canticles (songs with music), preserved in several manuscripts An illustration from the E codex of the Cantigas de Santa Maria. The Cantigas de Santa Maria (Galician: [kanˈtiɣɐz ðɪ ˈsantɐ maˈɾi.ɐ], Portuguese: [kɐ̃ˈtiɣɐʒ ðɨ ˈsɐ̃tɐ mɐˈɾi.ɐ]; Canticles of Holy Mary) are 420 poems with musical notation, written in the medieval Galician-Portuguese language during the reign of Alfonso X of Castile El Sabio (1221–1284). Traditionall...

 

PowerPC Macs and Windows x86 emulator This article is about the x86 emulator for PowerPC Macs and virtualization software by Microsoft and formerly by Connectix. For the generic term, see Virtual machine. Not to be confused with Windows Virtual Desktop. Virtual PC is an x86 emulator for PowerPC Mac hosts and a virtualization app for Microsoft Windows hosts. It was created by Connectix in 1997 and acquired by Microsoft in 2003. The Mac version was discontinued in 2006 following the Mac transit...

斯洛博丹·米洛舍维奇Слободан МилошевићSlobodan Milošević 南斯拉夫联盟共和国第3任总统任期1997年7月23日—2000年10月7日总理拉多耶·孔蒂奇莫米尔·布拉托维奇前任佐兰·利利奇(英语:Zoran Lilić)继任沃伊斯拉夫·科什图尼察第1任塞尔维亚总统任期1991年1月11日[注]—1997年7月23日总理德拉古京·泽莱诺维奇(英语:Dragutin Zelenović)拉多曼·博若维奇(英语:Radoman Bo...

 

American football player (born 1995) American football player Shaquem GriffinGriffin with the UCF Knights in 2017No. 49, 53Position:LinebackerPersonal informationBorn: (1995-07-20) July 20, 1995 (age 28)St. Petersburg, Florida, U.S.Height:6 ft 0 in (1.83 m)Weight:227 lb (103 kg)Career informationHigh school:Lakewood(St. Petersburg, Florida)College:UCF (2013–2017)NFL draft:2018 / Round: 5 / Pick: 141Career history Seattle Seahawks (2018–202...

 

2024年夏季奥林匹克运动会瑞典代表團瑞典国旗IOC編碼SWENOC瑞典奧林匹克委員會網站sok.se(英文)(瑞典文)2024年夏季奥林匹克运动会(巴黎)2024年7月26日至8月11日運動員37參賽項目8个大项历届奥林匹克运动会参赛记录(总结)夏季奥林匹克运动会189619001904190819121920192419281932193619481952195619601964196819721976198019841988199219962000200420082012201620202024冬季奥林匹克运动会1924192819321936194819...

بنو لخم مناذرة اللخميون 300 – 602 خريطة للمدن العربية في زمن المناذرة مناطق نفوذ المناذرة في القرن السادس الميلاديمناطق نفوذ المناذرة في القرن السادس الميلادي عاصمة الحيرة نظام الحكم ملكية لغات مشتركة العربية الديانة المسيحية النسطورية (رسميا) [1] قلّة و...

 

Este artículo o sección necesita referencias que aparezcan en una publicación acreditada. Busca fuentes: «Parque natural Montes de Málaga» – noticias · libros · académico · imágenesEste aviso fue puesto el 16 de agosto de 2016. Montes de Málaga Categoría UICN VI (área protegidade recursos gestionados) SituaciónPaís España EspañaComunidad Andalucía AndalucíaProvincia Málaga MálagaCoordenadas 36°50′00″N 4°22′00″O / &#x...

 

Railway Station in Maharashtra, India For other uses, see Dadar (disambiguation). Dadar Indian Railways and Mumbai Suburban Railway stationMumbai Local train Arrives on the Western side of Dadar railway stationGeneral informationLocationSenapati Bapat Road and Lakhamsi Nappu Road, Dadar, MumbaiCoordinates19°01′06″N 72°50′36″E / 19.018335°N 72.843214°E / 19.018335; 72.843214Elevation6.610 metres (21.69 ft)Owned byIndian RailwaysLine(s)Central LineMumbai...

Cabinet of the Kingdom of Saudi Arabia Politics of Saudi Arabia Member State of the Arab League Basic Law Monarchy King and Custodian of the Two Holy Mosques Salman Crown Prince Mohammed bin Salman Deputy crown prince Vacant Allegiance Council Succession Government Prime Minister Mohammed bin Salman Council of Ministers Consultative Assembly President: Abdullah ibn Muhammad Al ash-Sheikh National Security Council Legal system The Quran The Hadith Judiciary Capital punishment Freedom of religi...

 

Gaëtan RobailRobail nel 2018Nazionalità Francia Altezza182 cm Calcio RuoloCentrocampista Squadra Atromītos CarrieraGiovanili  Arras Squadre di club1 2012-2016 Arras89 (26)2016-2017 Paris Saint-Germain 220 (8)2017-2018→  Cercle Bruges7 (0)2018-2019 Valenciennes44 (17)2019-2020 Lens24 (7)2020-2021→  Guingamp9 (0)2021-2022→  Valenciennes47 (4)2022- Atromītos26 (4)[1] 1 I due numeri indicano le presenze e le reti segnate, pe...