Folien



(letzte Synchronisation der PDF-Präsentation: 24.11.2019)

Falls keine PDF-Präsentation zu sehen ist, klicken Sie zum Download hier: Direktdownload PDF-Präsentation

Übungen

Alle Übungen finden Sie in der Materialsammlung (dort auch alle zusätzlichen Dateien wie Bilder, Klassendiagramme oder HTML-Vorlagen!).

Die aktuelle Übung können Sie hier als txt-File herunterladen.


***** Übungen: Java - for-Schleife *****


Java_28_for-Schleife-1a: Einfache FOR-Schleife

Sie wollen in einer Methode hochzaehlen() mit einer FOR-Schleife die Zahlen von 1 bis 100 ausgeben lassen.
--- Erstellen Sie ein Struktogramm dazu.
--- Programmieren Sie die Aufgabe (Startklasse, Klasse 'Zaehler', in der eine Methode hochzaehlen() benutzt wird). Probieren Sie Lauffähigkeit aus.

Zusatzaufgabe GUI:
--- Erstellen Sie ein GUI, das nur einen Knopf enthält. Beim Drücken des Knopfes wird die Methode hochzaehlen() der Klasse Zaehler gestartet.




Java_28_for-Schleife-1b: Einfache FOR-Schleife

Sie wollen sich mit einer FOR-Schleife die Zahlen von 1 bis 20 in Zweierschritten ausgeben.
--- Erstellen Sie ein Struktogramm dazu.
--- Verändern Sie Aufgabe 1 entsprechend.

Zusatzaufgabe GUI
--- Verändern Sie die grafische Oberfläche so, dass man einen Wert eingeben kann, bis zu dem gezählt wird. (Fortgeschrittene: Verändern Sie die grafische Oberfläche so, dass man auch die Schrittweite eingeben kann.)




Java_28_for-Schleife-1c: Einfache For-Schleife mit Scanner-Eingabe

Der Benutzer kann in der Konsole eingeben:
Startwert
Schrittweite
Endwert

Sobald alle drei Werte eingegeben sind, wird eine Methode hochzaehlen() der Klasse Zaehler gestartet, die diese Werte verwendet.




Java_28_for-Schleife-1d: Einfache For-Schleife mit krasser Rechnerbelastung

a) Lassen Sie Ihren Rechner mal was arbeiten. Geben Sie mit einer For-Schleife die Zahlen von 1 bis einer Million aus (Sie könnten eine der vorigen Aufgaben entsprechend pimpen).

b) Das war nicht genug? Benutzen Sie für die Zählervariable den Datentyp double und hauen Sie richtig rein. Der Wertebereich für double ist 4.9e-324 bis 1.79e+308 (d.h.: 4.9 mal 10 hoch minus 324 bis 1.79 * 10 hoch 308).

Zusatzaufgabe
Messen Sie die Zeit, die der Rechner braucht, einmal mit Ausgabe der einzelnen Werte (System.out.println) und einmal ohne. Benutzen Sie dafür System.nanoTime(). Erheben Sie vor Start der Schleife die Zeit (long start = System.nanoTime();), nach Beendigung der Schleifendurchläufe die Endzeit (long ende = System.nanoTime();). Durch Subtraktion erhalten Sie die Zeitdauer in Nanosekunden.
(Mehr: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/System.html#nanoTime() )
Führen Sie Ihr Experiment mehrfach durch.





Java_28_for-Schleife-2: Erweitertes Hochzählen

Lassen Sie mit einer FOR-Schleife die Zahlen von 1 bis 100 ausgeben. Schreiben Sie hinter alle 10er-Zahlen (10, 20, 30 usw.) das Wort "Zehnerzahl!".

Ein Lösungsansatz: Sie können jede Zahl daraufhin überprüfen, ob sie sich ohne Rest durch 10 teilen lässt. Dazu benötigen Sie die Modulo-Division, bei der Sie statt des Divisionszeichens ein Prozentzeichen benutzen. Als Ergebnis steht der Rest. Beispiel
13%2 = 1
12%2 = 0
24%2 = 0
27%5 = 2
10%10 = 0
12%10 = 2

Wenn die Zählervariable also durch 10 geteilt keinen Rest ergibt (Ergebnis der Modulo-Rechnung = 0), wird die entsprechende Bemerkung ausgegeben.




Java_28_for-Schleife-3: For-Schleife mit Eingabe

Der User kann über die Scannerklasse oder GUI eingeben
- einen beliebigen Satz
- eine Zahl x

Geben Sie anschließend den Satz x Mal untereinander in der Konsole aus.


ZUSATZAUFGABE:
Realisieren Sie diese Aufgabe in einer GUI. Den Satz geben Sie aus in einer jTextArea; benutzen Sie für die Ausgabe die Methode append(), also bspw. jTextArea1.append(satz);
Sie benutzen die Textarea, da sie scrollbar sein kann. Beachten Sie, dass die Ausgabe erst vorgenommen wird, sobald alle Ergebnisse berechnet sind, es ist also nicht so spektakulär, was Sie erwartet. Seien Sie erst mal vorsichtig und starten Sie vielleicht mit 1000 oder 10000.




Java_28_for-Schleife-4: Verschachtelte For-Schleife

Erstellen Sie einen primitiven Kalender (primitiv ist er deshalb, weil er nur Monate mit 30 Tagen kennt).
Orientieren Sie sich an diesem Struktogramm: 16java/java28-for-bild1-primitiver-kalender.png

Zusatzaufgabe: Erweitern Sie die Aufgabe so, dass der Kalender korrekt zählt (d.h. in den Monaten 1,3,5,7,8,10,12 werden 31 Tage ausgegeben, in den Monaten 4,6,9,11 nur 30 Tage, im Monat 2 nur 28 Tage). Formatieren Sie die Ausgabe etwas schöner.




Java_28_for-Schleife-5: For-Schleife, ASCII-Kunst

Erzeugen Sie mit möglichst wenig Code folgende Ausgabe:

*
*
  *
   *
    *
     *
      *
       *

Erstellen Sie dazu VORHER UNBEDINGT ein Struktogramm. Sie können sich am Kalender-Struktogramm (s.o.) orientieren.





Java_28_for-Schleife-6: For-Schleife, ASCII-Kunst

Erzeugen Sie mit möglichst wenig Code folgende Ausgabe:

1
12
123
1234
12345
123456
1234567
12345678
123456789

Zusatzaufgabe: Verändern Sie Ihr Skript so, dass die Ausgabe so aussieht:

1
12
123
123*
123*5
123*56
123*567
123*5678
123*56789





Java_28_for-Schleife-7: Kamm

Erzeugen Sie in der Konsole einen Kamm, der ungefähr so aussieht:
*
*
*
*
************* *
*
*
*
************* *
*
(usw.)
Der User kann über ein GUI eingeben, wie viele Zinken (******) der Kamm hat, wie lange die Zinken sind (d.h. Anzahl der Sternchen) und wie groß die Abstände zwischen den Zinken sind (d.h. Anzahl der Zeilen zwischen den Zinken. Auf Knopfdruck wird der Kamm in der Konsole ausgegeben.




Java_28_for-Schleife-8: Einmaleins mit verschachtelter FOR-Schleife

Geben Sie in zwanzig Reihen das große Einmaleins aus. Das Ergebnis soll ungefähr so aussehen:
1: 1×1=1, 2×1=2, …. 10×1=10
2: 1×2=2, 2×2=4, … 10×2=20
3: 1×3=3, 2×3=6, … 10×3=30

Fertigen Sie vorher ein Struktogramm an.




Java_28_for-Schleife-9: Zinsrechner

Der User kann über eine Scanner-Eingabe folgende Daten eingeben:

1) Das Kapital, das er auf einem Sparbuch angelegt hat (k) - Euro
2) Den Zinssatz, mit dem das Geld verzinst ist (p) - Prozent
3) Die Anzahl der Jahre, die das Geld angelegt bleibt (n)

Zur Erinnerung: Die Formel für die Zinseszinsberechnung lautet:
Endkapital = k*((1+p/100)^n)
Eventuell brauchen Sie die Formel gar nicht, kommt darauf an, wie Sie vorgehen.

Es soll ausgegeben werden:

a) Eine Nachricht in Form von "Nach n Jahren beträgt Ihr Vermögen z Euro."
b) Eine Liste, die den jährlichen Zuwachs zeigt, in Form von:

Für das 1. Jahr erhalten Sie x Euro Zinsen, damit beträgt Ihr Gesamtvermögen y Euro.
Für das 2. Jahr erhalten Sie z Euro Zinsen, damit beträgt Ihr Gesamtvermögen d Euro.

usw.

Zusatzaufgabe a)
Setzen Sie auf Ihr Programm ein GUI.

Zusatzaufgabe b)
Leider werden müssen Sie von Ihren Zinseinnahmen 42% Steuer p.a. bezahlen (Spitzensteuersatz). Beziehen Sie dies in Ihre Kalkulation mit ein.

Zusatzaufgabe c)
Erzeugen Sie einen zusätzliche Ausgabe ganz zu Anfang (vor der Liste!), die sagt, nach welchem Zeitraum sich das Guthaben verdoppelt und verzehnfacht hat ("Nach x Jahren hat sich Ihr Guthaben verdoppelt, nach y Jahren hat sich Ihr Guthaben verzehnfacht."). Es reicht, wenn Sie auf ganze Jahre runden!




Java_28_for-Schleife-10: Musterausgabe einfach/schwer

EINFACH: In der Konsole soll folgendes Muster ausgegeben werden:

1 -
2 --
3 ---
4 ----
5 -----
6 ------
7 -------

1) Erstellen Sie ein Struktogramm.
2) Erstellen Sie das Programm und testen Sie seine Lauffähigkeit.
---------------------------------------------
SCHWERER: In der Konsole soll folgendes Muster ausgegeben werden:

1 -
2 --
3 ---
4 -
5 --
6 ---
7 -
8 --
9 ---
10 -
11 --
12 ---

1) Erstellen Sie ein Struktogramm.
2) Erstellen Sie das Programm und testen Sie seine Lauffähigkeit.




Java_28_for-Schleife-11: Code interpretieren

public static void ausgabeErzeugenV2()
{
String ausgabe;
for(int i = 1;i <= 12;i++)
{
if(i % 3 == 0)
// laufvariable durch 3 teilbar -> 3,6,9 ...
{
ausgabe = "---";
}
else if(i % 2 == 0)
// laufvariable durch 2 teilbar -> 2, 4, 8, 10, 14 ...
// 3er schon ausgeschlossen wg. ELSE if !
{
ausgabe = "--";
}
else
{
ausgabe = "-";
}
System.out.println(i + " " + ausgabe);
}

}