HSZG Vorkurs Informatik WS 2014/Komplexe Methoden
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
Bisher haben wir die von uns selbst entwickelten Methoden nur für einen einzigen Aufruf verwendet. Es ist nun an der Zeit, Methoden als Bausteine für komplexere Programme aufzufassen. Dazu betrachten wir nochmal das alte Beispiel:
<code id="5418901d9e27f">int addiere(int a, int b){
int ergebnis = 0;
ergebnis = a + b;
return ergebnis;
}</code>
Die Methode ''addiere'' lässt sich innerhalb einer anderen Methode aufrufen. Zum Beispiel kann auf diese Weise die Addition mehrerer Eingabewerte ($a+b+c+d$) umgesetzt werden:
<code id="5418901d9e2f7">int addiere_zusammengesetzt(int a, int b, int c, int d){
int ergebnis = 0;
int teil1 = addiere(a, b);
int teil2 = addiere(c, d);
ergebnis = addiere(teil1, teil2);
return ergebnis;
}</code>
<run id="5418901d9e3ee">addiere_zusammengesetzt(5,8,9,10);</run>
Diese Vorgehensweise wird spätestens dann interessant, wenn eine Baustein-Methode eine umfangreiche Aufgabe oder Berechnung übernimmt, die innerhalb eines Programms ''mehrmals'' ausgeführt werden muss. Es ist dann sehr bequem, innerhalb des Programms einfach die Methode mehrmals aufrufen zu können.
'''Aufgabe 1'''
Entwickeln Sie eine Methode, die 8 Zahlen addiert und nur aus den Methoden ''addiere'' und ''addiere_zusammengesetzt'' aufgebaut ist. Das heißt, die Verwendung des '''+'''-Operators ist verboten! Verwenden Sie Hilfsvariablen!
<code id="5418901d9e368">int addiere_gross(int a, int b, int c, int d, int e, int f, int g, int h){
}</code>
<run id="5418901d9e458"></run>
'''Aufgabe 2'''
Methodenaufrufe können verschachtelt sein. Beispiel:
<code id="541913469fc76">double ergebnis = Math.sqrt(Math.pow(5,3));</code>
Häufig ist das Verschachteln keine gute Programmierpraxis, da Sie das Programm unleserlich macht. In den meisten Fällen sollten Sie lieber mit Hilfsvariablen arbeiten.
Versuchen Sie, die Methode ''addiere_gross'' ohne Hilfsvariablen und mit einem geschachtelten Methodenaufruf umzusetzen!
<code id="541913469fd06"></code>
<run id="541913469fda7"></run>
'''Aufgabe 3'''
[[Datei:Kreiszylinder.png]]
Für einen Kreiszylinder mit dem Radius $r$ und der Höhe $h$ sollen folgende Daten berechnet werden:
* das Volumen $V = G * h$,
* die Mantelfläche $M = U * h$,
* die Oberfläche $O = M + 2*G$
Dabei ist $G$ der Flächeninhalt der Grundfläche und $U$ der Umfang der Grundfläche. Da die Grundfläche kreisförmig ist, gilt: $G = \pi*r^2$ und $U=2*\pi*r$
Entwickeln Sie zuerst zwei Methoden zur Berechnung von $G$ und $U$ in Abhängigkeit vom Radius $r$:
<code id="54189404e3868"></code>
<code id="54189404e38ee"></code>
<run id="54189404e3b8d"></run>
Entwickeln Sie nun zwei Methoden $V$ und $M$, welche die oberen beiden Methoden als Bausteine verwenden! Höhe und Radius sollen als Parameter übergeben werden.
<code id="54189404e39f7"></code>
<code id="54189404e3aaf"></code>
<run id="54189404e3c04"></run>
Entwickeln Sie zum Schluss eine Methode für $O$, die auf den Methoden für $M$ und $G$ aufbaut! Höhe und Radius sollen als Parameter übergeben werden.
<code id="541898c4a292c"></code>
<run id="541898c4a29cd"></run>