Fachkonzept - Funktion

Funktion als Verarbeitungseinheit

Eine Funktion ist eine Verarbeitungseinheit, die übergebene Daten verarbeitet und den berechneten Funktionswert als Ergebnis zurückgibt.

Funktionen kennst du aus der Mathematik.

Beispiel 1:

Die Funktion f mit der Funktionsdefinition f(x) = x2 ordnet jeder Zahl (aus einer noch festzulegenden Definitionsmenge) ihr Quadrat zu. Die entsprechende Funktionsdefinition sieht in Python so aus:

def f(x):
    return x*x

Der Funktionsaufruf f(3) liefert dann das Quadrat der Zahl 3. In Python kann man einen Funktionsaufruf direkt im Ausführfenster auswerten lassen:

>>> f(3)
9

Beispiel 2:

Die Funktionen A bzw. u mit den Funktionsdefinitionen A(a, b) = a*b und u(a, b) = 2*a+2*b ordnen den Seitenlängen eines Rechtecks den Flächeninhalt bzw. den Umfang des Rechtecks zu. Die entsprechenden Funktionsdefinitionen sehen in Python so aus:

def A(a, b):
    return a*b

def u(a, b):
    return 2*a+2*b

Der Funktionsaufruf A(2, 5) liefert den Flächeninhalt 10 eines Rechtecks mit den Seitenlängen 2 und 5, der Funktionsaufruf u(2, 5) den Umfang 14. In Python kann man das so realisieren:

>>> A(2, 5)
10
>>> u(2, 5)
14

Funktionen werden nicht nur in der Mathematik benutzt, sie bilden auch ein wichtiges Werkzeug in der Informatik bei der automatisierten Datenverarbeitung.

Funktionsmodellierung

Als Beispiel betrachten wir die Funktion ersetzterText. Diese Funktion soll ein bestimmtes Zeichen jeweils durch ein anderes Zeichen in einem gegebenen Text ersetzen.

Wir modellieren eine solche Verarbeitungseinheit mit einem Black-Box-Diagramm:

black box

Funktionsdefinition

Eine Funktion muss vorab definiert werden, bevor sie benutzt werden kann. Hierzu muss man eine Programmeinheit als Funktionsdefinition entwickeln.

Im Fall der Funktion ersetzterText könnte die Funktionsdefinition in Python wie folgt aussehen:

def ersetzterText(zeichenAlt, zeichenNeu, text):
    textNeu = ''
    for zeichen in text:
        if zeichen == zeichenAlt:
            textNeu = textNeu + zeichenNeu
        else:
            textNeu = textNeu + zeichen
    return textNeu

Die Funktionsdefinition besteht aus zwei Teilen, einem Funktionskopf und einem Funktionskörper.

Der Funktionskopf beginnt mit def. Es folgt der Funktionsname und - in Klammern - die Auflistung der sogenannten Parameter (s.u.). Den Abschluss bildet der Doppelpunkt.

Der Funktionsrumpf ist eine Folge von Anweisungen zur Berechnung des Funktionswerts. Diese Anweisungen müssen - wie in Python üblich - eingerückt werden. Mit einer return-Anweisung (das ist meist die letzte Anweisung) wird der zurückgelieferte Funktionswert festgelegt.

Funktionsaufruf

Bei einem Funktionsaufruf wird die Verarbeitungseinheit aktiviert, so dass sie für die übergebenen Daten eine Rückgabe erzeugt.

>>> ersetzterText('s', 'n', 'Tasse')
'Tanne'

Parameter

Parameter sind Variablen, mit deren Hilfe die zur Verarbeitung übergebenen Daten bei einer Funktion verwaltet werden.

black box

Bei einem Funktionsaufruf müssen die Parameter mit konkreten zu verarbeitenden Daten versehen werden.

>>> ersetzterText('i', 'a', 'Drei Chinesen mit dem Kontrabass ...')
'Drea Chanesen mat dem Kontrabass ...'
>>> lied = 'Drei Chinesen mit dem Kontrabass ...'
>>> ersetzterText('i', 'a', lied)
'Drea Chanesen mat dem Kontrabass ...'
>>> ersetzterText('e', 'a', ersetzterText('i', 'a', lied))
'Draa Chanasan mat dam Kontrabass ...'

Die zu verarbeitenden Daten können wie im Beispiel ersetzterText('i', 'a', 'Drei Chinesen mit dem Kontrabass ...') direkt durch konkrete Datenobjekte festgelegt werden.

Die zu veraberbeitenden Daten können aber auch indirekt mit Hilfe von Termen beschrieben werden. Im Beispiel ersetzterText('i', 'a', lied) wird der zu verarbeitende Text mit Hilfe einer Variablen übergeben. Im Beispiel ersetzterText('e', 'a', ersetzterText('i', 'a', lied)) wird der zu verarbeitende Text mit Hilfe eines komplexeren Terms übergeben.

Weitere Hinweise zur Datenübergabe findest du in den folgenden Abschnitten.

Funktionsdefinition als Unterprogramm

Funktionsdefinitionen sind Programmeinheiten, die als Unterprogramme in komplexeren Programmen vorkommen können.

Wenn ein Funktionsaufruf im Hauptprogramm ausgeführt wird, dann werden die als Unterprogramm ausgelagerten Anweisungen der Funktionsdefinition ausgeführt, bevor es mit der nächsten Anweisung im Hauptprogramm weitergeht.

Das folgende Programm enthält neben dem Hauptprogramm eine Funktionsdefinition als Unterprogramm.

# Unterprogramme

def ersetzterText(zeichenAlt, zeichenNeu, text):
    textNeu = ''
    for z in text:
        if z == zeichenAlt:
            textNeu = textNeu + zeichenNeu
        else:
            textNeu = textNeu + z
    return textNeu

# Hauptprogramm

# Initialisierung
lied = """
Drei Chinesen mit dem Kontrabass
sassen auf der Strasse und erzaehlten sich was.
Da kam die Polizei, fragt ‚Was ist denn das?‘
Drei Chinesen mit dem Kontrabass.
"""
# Verarbeitung
liedA = ersetzterText('e', 'a', lied)
liedA = ersetzterText('i', 'a', liedA)
liedA = ersetzterText('o', 'a', liedA)
liedA = ersetzterText('u', 'a', liedA)
# Ausgabe
print(lied)
print(liedA)
X

Fehler melden

X

Suche