Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

Fachkonzept - Funktion

Funktion als Verarbeitungseinheit

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

Als Beispiel betrachten wir die Funktion verschluesselterText aus dem letzten Abschnitt. Diese Funktion verarbeitet eine übergebene Zeichenkette (die nur aus Großbuchstaben besteht) und eine übergebene Verschiebezahl (als Schlüssel) und gibt die zugehörige, nach dem Verschiebeverfahren verschlüsselte Zeichenkette als Ergebnis zurück.

Wir verdeutlichen 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 Funktionsdefinition als Programmeinheit entwickeln.

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

def verschluesselterText(klartext, schluessel):
    geheimtext = ''
    for zeichen in klartext:
        zahl = ord(zeichen)
        neuezahl = zahl + schluessel
        if neuezahl > ord('Z'):
            neuezahl = neuezahl - 26
        neuesZeichen = chr(neuezahl)
        geheimtext = geheimtext + neuesZeichen
    return geheimtext

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

>>> verschluesselterText('HALLO', 4)
'LEPPS'

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.

>>> verschluesselterText('HALLO', 3)
'KDOOR'
>>> aktuellerText = 'WIE'
>>> aktuellerSchluessel = 5
>>> verschluesselterText(aktuellerText, aktuellerSchluessel)
'BNJ'
>>> schluesselCaesar = 3
>>> verschluesselterText(bereinigterText('Alles Käse!'), schluesselCaesar)
'DOOHVNDHVH'

Die zu verarbeitenden Daten können direkt durch konkrete Datenobjekte festgelegt werden (wie im Beispiel verschluesselterText('HALLO', 3)). Die zu veraberbeitenden Daten können aber auch indirekt mit Hilfe von Termen beschrieben werden (wie im Beispiel verschluesselterText(aktuellerText, aktuellerSchluessel) oder im Beispiel verschluesselterText(bereinigterText('Alles Käse!'), schluesselCaesar)).

Beachte, dass zu verarbeitende Datenobjekte auch von Variablen verwaltet werden können, die genauso benannt sind wie die Parameter, die in der Funktionsdefinition eingeführt sind (vgl. den folgenden Python-Dialog). Im Abschnitt Lokale und globale Variablen" gehen wir nochmal auf diese Situation ein.

>>> klartext = 'GEHTS'
>>> schluessel = 3
>>> verschluesselterText(klartext, schluessel)
'JHKWV'

Strukturierung des Quelltextes mit Funktionen

Programme werden zur Steuerung von Computern entwickelt. Einem Computer ist es egal, wie lang und unübersichtlich ein Programm ist. Der Computer muss ja nur die Anweisungen des Programms Schritt für Schritt abarbeiten.

Programme werden (in der Regel) von Menschen entwickelt. Wenn Programme zu unübersichtlich werden, dann können sich leicht Fehler einschleichen. Je unübersichtlicher ein Programm ist, desto schwieriger gestaltet sich die Fehlersuche. Ein zentrales Ziel bei der Programmentwicklung ist es daher, den Quelltext möglichst strukturiert zu gestalten.

Funktionen sind ein Mittel zur Strukturierung von Programmen. Mit Funktionen kann man Verarbeitungseinheiten bilden und diese als Unterprogramme in einem größeren Programm verwenden. Das gesamte Programm wird so klarer gegliedert.

Vermeidung von Codeduplizierung mit Funktionen

Wenn ein Programmteil - bis auf geringfügige Abweichungen - mehrfach in einem Programm vorkommt, spricht man von Codeduplizierung.

Codeduplizierung versucht man in der Regel zu vermeiden. Zum einen werden Programme hierdurch in der Regel kürzer. Zum anderen erspart man sich Arbeit, wenn der Programmteil noch einmal überarbeitet wird. Man muss dann nur eine einzige Verarbeitungseinheit bearbeiten anstatt mehrere.

Funktionen helfen bei der Vermeidung von Codeduplizierung. Eine Verarbeitungseinheit, die in ähnlicher Form mehrfach in einem Programm vorkommt, lässt sich mit einer Funktion als eigenständiges Unterprogramm konzipieren.

X

Fehler melden

X

Suche