Bedingte Wiederholung mit Anfangsbedingung
Bedingte Wiederholung mit Anfangsbedingung
Bedingte Wiederholung mit Anfangsbedingung
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Informatik 10 <strong>Bedingte</strong> <strong>Wiederholung</strong><br />
<strong>Bedingte</strong> <strong>Wiederholung</strong> <strong>mit</strong> <strong>Anfangsbedingung</strong><br />
Aufgabe 1<br />
Wie viele Jahre dauert es, bis ein Kapital (z. B. 1000 €) bei einer Verzinsung von p (z. B.<br />
4 %) auf den Endbetrag (z. B. 2000 €) angewachsen ist?<br />
Erzeuge ein neues Projekt <strong>mit</strong> einer Klasse ZINSRECHNUNG. Die Klasse besitzt eine<br />
Methode berechneLaufzeit(), die die Parameter anfangskapital, endkapital<br />
und zinssatz besitzt, die Berechnungen durchführt und die Zahl der Jahre zurückgibt.<br />
Lösung Methode berechneLaufzeit:<br />
public int berechneLaufzeit(double anfangskapital, double endkapital, double zinssatz)<br />
{<br />
}<br />
int zaehler = 0; // zählt die Jahre<br />
double kapital = anfangskapital; // kapital ist das aktuelle guthaben<br />
while (kapital < endkapital)<br />
{<br />
}<br />
kapital = kapital * (1+zinssatz);<br />
zaehler = zaehler + 1;<br />
return zaehler;<br />
Für die obigen Beispielzahlen muss die Methode wie folgt aufgerufen werden:<br />
berechneLaufzeit(1000,2000,0.04)<br />
Aufgabe 2<br />
Gegeben seien zwei natürliche Zahlen a und b.<br />
Solange a größer oder gleich b ist, soll a um b verkleinert werden.<br />
Am Ende soll a zurückgegeben werden.<br />
Erstelle dafür ein Struktogramm.<br />
Solange a>=b wiederhole<br />
Welche Bedeutung hat das Ergebnis?<br />
Das Ergebnis ist der ganzzahlige Rest der Division von a durch b.<br />
Aufgabe 3<br />
a = a -b<br />
Wie Aufgabe 2. Allerdings soll die Anzahl der Subtraktionen ausgegeben werden.
Informatik 10 <strong>Bedingte</strong> <strong>Wiederholung</strong><br />
Lösung:<br />
Aufgabe 4<br />
Übersetze die Java-Zeilen in ein Struktogramm. Welchen<br />
Sinn könnte dieser Programmteil haben?<br />
Teste die Zeilen eventuell in einem Java-Programm.<br />
Der Programmteil liefert den größten gemeinsamen Teiler<br />
von a und b.<br />
Aufgabe 5<br />
int a,b;<br />
...<br />
while (a!=b)<br />
{ if (a>b) {a=a-b;}<br />
else {b=b-a;}<br />
}<br />
Ein Kredit wird in gleichen Jahresraten getilgt. Der Zinssatz ist über die gesamte Laufzeit<br />
fest.<br />
Für jedes Jahr wird der Zins aus der Restschuld berechnet und zu dieser addiert sowie die<br />
Jahresrate davon subtrahiert.<br />
Erstelle ein Struktogramm zur Berechnung der Tilgungsdauer und zur Berechnung der letzten<br />
(i. Allg. kleineren) Jahresrate.<br />
Schreibe eine neue Methode der Klasse ZINSRECHNUNG, die die beiden Werte auf der<br />
Konsole ausgibt.<br />
public void TilgungsdauerBerechnen(double kredit, double rate, double zinssatz)<br />
{<br />
zaehler = 0<br />
Solange a>=b wiederhole<br />
a = a -b<br />
zaehler = zaehler +1<br />
return zaehler<br />
Solange a!=b wiederhole<br />
Ist a > b<br />
?<br />
ja nein<br />
a = a – b b = b - a<br />
int jahre = 0;<br />
while (kredit > rate)<br />
{<br />
if (rate > kredit*zinssatz) // zusätzliche Abprüfung, da<strong>mit</strong> die Rate nicht
Informatik 10 <strong>Bedingte</strong> <strong>Wiederholung</strong><br />
{<br />
}<br />
else<br />
{<br />
kredit = kredit* (1+zinssatz) - rate;<br />
// zu klein gewählt wird<br />
System.out.println("kredithöhe: " + kredit);<br />
jahre = jahre + 1;<br />
System.out.println("Die Jahresrate muss höher als die Jahreszinsen sein!<br />
Jahreszins aktuell:" + (kredit*zinssatz));<br />
}<br />
}<br />
}<br />
rate = kredit*zinssatz +1;<br />
System.out.println("Tilgungsdauer: " + jahre);<br />
System.out.println("Restrate im letzten Jahr: " + kredit);