i

Fachkonzept - Verwendung von Hilfsfunktionen

Die Grundidee

Ein Datenverarbeitungsproblem wird meist nicht mit einer einzigen Funktion gelöst. Vielmehr versucht man, für unterschiedliche Teilaufgaben bei der Datenverarbeitung eigenständige Funktionen einzuführen und diese dann geeignet zu verknüpfen.

Als einfaches Beispiel betrachten wir die Berechnung der Minimalanzahl an Fliesen für einen quaderförmigen Swimming-Pool. Die Fliesen sollen dabei quadratisch sein. Am Rand müssen ggf. Fliesen abgeschnitten werden, die Restfliesen können dann nicht weiter verwendet werden.

Verwendung einer einzigen Funktion

Die Berechnung lässt sich mit der Funktion anzahlFliesenPool durchführen.

Funktionsdefinition:

anzahlFliesenPool laenge breite hoehe seiteFliese =
    (1 * (ceiling (laenge / seiteFliese)) * (ceiling (breite / seiteFliese))) +
    (2 * (ceiling (laenge / seiteFliese)) * (ceiling (hoehe / seiteFliese))) +
    (2 * (ceiling (breite / seiteFliese)) * (ceiling (hoehe / seiteFliese)))

Funktionsaufruf:

> anzahlFliesenPool 5 3 2 0.38
376 : Int

In der vorliegenden Implementierung wird das Verarbeitungsproblem mit einer einzigen Funktion bearbeitet. Es fällt auf, dass der Ausdruck in der Funktion sehr lang und damit recht komplex ist. Zudem fällt auf, dass es in dem Ausdruck Teilausdrücke mit gleicher Struktur gibt: Die Anzahl der Fliesen wird mehrfach für unterschiedliche Rechtecke beschrieben. Es liegt hier Codeduplizierung vor, derselbe Teilausdruck kommt in ähnlicher Form mehrfach vor.

Verwendung mehrerer Funktionen

Ziel ist es, den Audruck in der Funktion möglichst einfach zu gestalten und insbesondere Codeduplizierung zu vermeiden. Das gelingt, wenn man eine zusätzliche Funktion als Hilfsfunktion einführt.

Hier eine Implementierung der Funktion anzahlFliesenPool mit einer zusätzlichen Hilfsfunktion.

Funktionsdefinitionen:

anzahlFliesenRechteck laengeRechteck breiteRechteck seiteFliese =
    (ceiling (laengeRechteck / seiteFliese)) * (ceiling (breiteRechteck / seiteFliese))

anzahlFliesenPool laenge breite hoehe seiteFliese =
    (1 * anzahlFliesenRechteck laenge breite seiteFliese) +
    (2 * anzahlFliesenRechteck laenge hoehe seiteFliese) +
    (2 * anzahlFliesenRechteck breite hoehe seiteFliese)

Funktionsaufruf:

> anzahlFliesenPool 5 3 2 0.38
376 : Int

Im Funktionsausdruck der Funktion anzahlFliesenPool wird die vorab definierte Hilfsfunktion anzahlFliesenRechteck verwendet.

Auswertung bei der Verwendung mehrerer Funktionen

Bei einem Funktionsaufruf der Funktion anzahlFliesenPool wird die Hilfsfunktion anzahlFliesenRechteck wiederholt aktiviert und liefern die jeweils Teilergebnisse, aus denen dann das Gesamtergebnis berechnet wird.

anzahlFliesenPool 5 3 2 0.38
->
(1 * anzahlFliesenRechteck 5 3 0.38) +
(2 * anzahlFliesenRechteck 5 2 0.38) +
(2 * anzahlFliesenRechteck 3 2 0.38)
->
(1 * (ceiling (5 / 0.38)) * (ceiling (3 / 0.38))) +
(2 * anzahlFliesenRechteck 5 2 0.38) +
(2 * anzahlFliesenRechteck 3 2 0.38)
-> 
112 +
(2 * anzahlFliesenRechteck 5 2 0.38) +
(2 * anzahlFliesenRechteck 3 2 0.38)
->
112 +
168 +
(2 * anzahlFliesenRechteck 3 2 0.38)
->
112 +
168 +
(2 * (ceiling (3 / 0.38)) * (ceiling (2 / 0.38)))
->
112 +
168 +
96
->
376 

Verwendung von Hilfsfunktionen

Das Beispiel oben verdeutlicht, dass es günstig sein kann, wenn Teilaufgaben von Hilfsfunktionen ausgeführt werden.

Hilfsfunktionen tragen zur Strukturierung von Programmen bei:

Jeder, der schon einmal versucht hat, ein langes und kompliziertes Programm zu verstehen, weiß, wie schwierig das ist - insbesondere, wenn man das Programm nicht selbst geschrieben hat. Viel leichter wird es, wenn das Programm gut strukturiert ist. Dazu gehört insbesondere, Lösungen von Teilproblemen in Hilfsfunktionen auszulagern.

Hilfsfunktionen dienen zur Vermeidung von Code-Duplizierungen:

Es kommt öfters vor, dass ein Teilproblem mehrfach auftritt. Ohne Hilfsfunktionen müsste man ein und denselben Teilausdruck wiederholt in den Ausdruck einer Funktion schreiben. Mit Hilfsfunktionen kann dieses Teilproblem einmal gelöst werden. Danach kann man mit diese Hilfsfunktion im Ausdruck einer anderen Funktion verwenden.

Hilfsfunktionen nutzt man insbesondere dann, wenn diese eigenständige Probleme lösen und somit auch in anderen Kontexten verwendet werden können.

Suche

v
110.2.4.3
inf-schule.de/fp_elm_alteversion/elm_programme/hilfsfunktionen/konzept_unterprogramm
inf-schule.de/110.2.4.3
inf-schule.de/@/page/00qa7ujn5mtFbXIH

Rückmeldung geben