Fachkonzept - Problemzerlegung
Verwendung einer Strategie
Bei der Entwicklung von Funktionen als Programme zur Lösung von Berechnungsproblemen sollte man überlegt vorgehen und Strategien verwenden.
Wenn ein Problem komplex ist, dann hat sich die Strategie Problemzerlegung bewährt: Man zerlegt das Problem in Teilprobleme und versucht, diese zu lösen und mit den Lösungen der Teilprobleme dann auch eine Lösung für das Gesamtproblem zu entwickeln.
Wir verdeutlichen diese Strategie am Beispiel "Berechnung der Anzahl der Fliesen für einen Swimming-Pool".
Problemzerlegung
Folgendes Berechnungsproblem muss man bei der Planung eines Pools lösen:
Ein quaderförmiger Pool mit einer vorgegebenen Länge, Breite und Höhe soll am Boden und auf den Seitenflächen mit Fliesen ausgelegt werden. Die Fliesen sollen quadratisch sein. Am Rand müssen ggf. Fliesen abgeschnitten werden, die Restfliesen können dann nicht weiter verwendet werden. Da einige Fliesen beim Bau kaputt gehen, sollen 3% mehr Fliesen eingeplant werden als unbedingt erforderlich sind. Wie kann man die Kosten für die zu bestellenden Fliesen berechnen, wenn der Preis pro Fliese bekannt ist?
Gesamtproblem [0]: Wie berechnet man den Preis für die Gesamtheit aller benötigten Fliesen?
Teilprobleme:
Teilproblem [1]: Wie viele Fliesen braucht man für die Bodenfläche? Teilproblem [2]: Wie viele Fliesen braucht man für die Seitenflächen? Teilproblem [3]: Wie groß ist die Minimalanzahl der Fliesen für den Pool? Teilproblem [4]: Wie erhält man aus der Minimalanzahl von Fliesen die Gesamtanzahl einschließlich der 3% Reservefliesen?
Die Teilprobleme [1] und [2] kann man verallgemeinernd zusammenfassen zu:
Teilproblem [1;2]: Wie viele Fliesen braucht man für eine rechteckige Fläche?
Entwicklung von Lösungen
Teilproblems [1; 2] lässt sich mit der Funktion anzahlFliesenRechteck
lösen.
anzahlFliesenRechteck laengeRechteck breiteRechteck seiteFliese =
(ceiling (laengeRechteck / seiteFliese)) * (ceiling (breiteRechteck / seiteFliese))
Teilproblems [3] lässt sich mit der Funktion anzahlFliesenPool
lösen.
Beachte, dass diese Funktion die Funktion anzahlFliesenRechteck
verwendet.
anzahlFliesenPool laenge breite hoehe seiteFliese =
(1 * anzahlFliesenRechteck laenge breite seiteFliese) +
(2 * anzahlFliesenRechteck laenge hoehe seiteFliese) +
(2 * anzahlFliesenRechteck breite hoehe seiteFliese)
Teilproblems [4] lässt sich mit der Funktion gesamtanzahlFliesen
lösen.
Beachte, dass diese Funktion die Funktion anzahlFliesenPool
verwendet.
gesamtanzahlFliesen laenge breite hoehe seiteFliese =
ceiling ((toFloat (anzahlFliesenPool laenge breite hoehe seiteFliese)) * 1.03)
Das Gesamtproblem [0] lässt sich schließlich mit der Funktion preisPoolFliesen
lösen.
Beachte, dass diese Funktion die Funktion gesamtanzahlFliesen
verwendet.
preisPoolFliesen laenge breite hoehe seiteFliese preisFliese =
(toFloat (gesamtanzahlFliesen laenge breite hoehe seiteFliese)) * preisFliese