Verwendung von Hilfsfunktionen

Verständlichkeit als Ziel

Wir betrachten weiterhin das folgende Hausmodell.

Hausmodell

Zur Berechnung der gesamten Oberfläche des Hauses (ohne den Boden) haben wir im letzten Abschnitt die folgende Funktion(sdefinition) entwickelt:

from math import sqrt

def flaecheHaus(laenge, breite, hoeheHaus, hoeheDach):
    return 2*laenge*hoeheHaus + \
           2*breite*hoeheHaus + \
           2*(breite*hoeheDach/2) + \
           2*laenge*sqrt((breite/2)*(breite/2)+hoeheDach*hoeheDach)

Der Berechnungsausdruck innerhalb der Funktionsdefinition ist hier bereits recht komplex. Meist ist es schwierig, komplexe Berechnungsausdrücke korrekt zu entwickeln. Schwierig ist es zudem, komplexe Berechnungsausdrücke nachträglich zu durchschauen. In der Informatik nutzt man in solchen Situationen Strategien zur Reduzierung der Komplexität. Man zerlegt das Berechnungsproblem in überschaubare Teilprobleme und führt Hilfsfunktionen zur Bearbeitung der Teilprobleme ein. Wir spielen das im Folgenden im aktuellen Kontext einmal durch.

Konzeption von Hilfsfunktionen

Wenn man beliebige Berechnungen für Hausoberflächen durchführen möchte, muss man jeweils die Flächeninhalte von Rechtecken und Dreiecken sowie die Länge der Hypotenuse in einem rechtwinkligen Dreieck berechnen. Es ist günstig, für solche Teilberechnungen Hilfsfunktionen einzuführen.

Funktion zur Berechnung des Flächeninhaltes eines Rechtecks:

<Black-Box-Diagramm><Funktionsname>flaecheRechteck</Funktionsname><Übergaben><Übergabe><Wert>7</Wert><Variable>a</Variable></Übergabe><Übergabe><Wert>4</Wert><Variable>b</Variable></Übergabe></Übergaben><Rückgabe><Text>return</Text><Wert>28</Wert></Rückgabe></Black-Box-Diagramm>

Funktion zur Berechnung des Flächeninhaltes eines Dreiecks:

<Black-Box-Diagramm><Funktionsname>flaecheDreieck</Funktionsname><Übergaben><Übergabe><Wert>8</Wert><Variable>g</Variable></Übergabe><Übergabe><Wert>5</Wert><Variable>h</Variable></Übergabe></Übergaben><Rückgabe><Text>return</Text><Wert>20</Wert></Rückgabe></Black-Box-Diagramm>

Funktion zur Berechnung der Länge der Hypotenuse in einem rechtwinkligen Dreieck:

<Black-Box-Diagramm><Funktionsname>laengeHypotenuse</Funktionsname><Übergaben><Übergabe><Wert>3</Wert><Variable>a</Variable></Übergabe><Übergabe><Wert>4</Wert><Variable>b</Variable></Übergabe></Übergaben><Rückgabe><Text>return</Text><Wert>5</Wert></Rückgabe></Black-Box-Diagramm>

Aufgabe 1

Entwickle geeignete Funktionsdefinitionen und teste sie mit Funktionsaufrufen.

from math import sqrt

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

...

Verwendung der Hilfsfunktionen

Wir entwickeln zunächst eine Funktion zur Berechnung des Flächeninhalts einer Giebelfläche (das ist die gesamte Seitenfläche).

<Black-Box-Diagramm><Funktionsname>flaecheGiebel</Funktionsname><Übergaben><Übergabe><Wert>1.2</Wert><Variable>breite</Variable></Übergabe><Übergabe><Wert>0.8</Wert><Variable>hoeheHaus</Variable></Übergabe><Übergabe><Wert>0.4</Wert><Variable>hoeheDach</Variable></Übergabe></Übergaben><Rückgabe><Text>return</Text><Wert>1.2</Wert></Rückgabe></Black-Box-Diagramm>

Diese Funktion kann man jetzt mit den bereits entwickelten Hilfsfunktionen so definieren:

def flaecheGiebel(breite, hoeheHaus, hoeheDach):
    return flaecheRechteck(breite, hoeheHaus) + \
           flaecheDreieck(breite, hoeheDach)

Aufgabe 2

(a) Entwickle analog Black-Box-Modellierungen und Funktionsdefinitionen für die Funktionen flaecheDach (für die gesamte Dachfläche) und flaecheSeitenwaende (für die Vorder- und Rückseite des Hauses).

(b) Entwickle anschließend eine Black-Box-Modellierung und eine Funktionsdefinition für die Funktion flaecheHaus (für die gesamte Oberfläche des Hauses). Benutze hier die neu entwickelten Hilfsfunktionen. Bestimme mit dieser Funktion den Materialbedarf für die im letzten Abschnitt angegebenen Maße.

(c) Warum ist es günstig, Hilfsfunktionen einzuführen und sie bei der Definition der eigentlich benötigten Funktion zu benutzen? Bearbeite hierzu den Abschnitt Fachkonzept - teile und herrsche durch und übetrage die Argumentation auf das vorliegende Beispiel.

X

Fehler melden

X

Suche