Übung 1 von 5
Deine erste Schleife
Eine for-Schleife wiederholt Code. Sie hat drei Teile:
for (int i = 0; i < 3; i++) {
IO.println(i);
}
// Gibt aus: 0, 1, 2
int i = 0 — Start bei 0
i < 3 — Laufe solange i kleiner als 3 ist
i++ — Erhöhe i nach jedem Durchlauf um 1
Ändere die 3 zu einer 5, damit die Zahlen 0 bis 4 ausgegeben werden.
Startcode
void main() {
for (int i = 0; i < 3; i++) {
IO.println(i);
}
}
Hintergrund
Die drei Teile einer for-Schleife
for (init; bedingung; update) — die drei Teile werden zu unterschiedlichen Zeitpunkten ausgeführt:
1. init — einmal am Anfang. 2. bedingung — vor jedem Durchlauf geprüft. 3. update — nach jedem Durchlauf.
Alle drei Teile sind optional. for (;;) ist eine Endlosschleife (wie while(true)).
Übung 2 von 5
Schleife: Startwert
Du kannst den Startwert der Schleife ändern:
for (int i = 5; ...) // Startet bei 5
Ändere den Startwert, damit die Zahlen 1 bis 5 ausgegeben werden.
Ändere nur eine Zahl.
Startcode
void main() {
for (int i = 0; i <= 5; i++) {
IO.println(i);
}
}
Hintergrund
Warum startet man bei 0?
In der Informatik startet man fast immer bei 0 — das kommt daher, dass Array-Indizes Offsets vom Anfang sind. Das erste Element liegt 0 Positionen vom Start entfernt.
Dieses "Off-by-one" Thema (falsch um 1 daneben) ist einer der häufigsten Bugs in der Softwareentwicklung.
Übung 3 von 5
Countdown
Schleifen können auch rückwärts laufen:
for (int i = 10; i >= 1; i--) {
// i-- bedeutet: i um 1 verringern
}
Die Schleife ist fast fertig. Ersetze ??? durch den richtigen Ausdruck, damit von 5 bis 1 runtergezählt wird.
Startcode
void main() {
for (int i = 5; i >= 1; ???) {
IO.println(i);
}
}
Hintergrund
Inkrement und Dekrement
i++ ist Kurzform für i = i + 1. Es gibt zwei Varianten: i++ (Post-Inkrement) und ++i (Pre-Inkrement). Der Unterschied: int a = i++; speichert erst den alten Wert und erhöht dann. int a = ++i; erhöht erst und speichert dann.
In einer for-Schleife ist der Unterschied egal, weil der Rückgabewert nicht benutzt wird.
Übung 4 von 5
Schleife mit Bedingung
Du kannst ein if innerhalb einer Schleife benutzen — so filterst du Werte.
Die Schleife läuft von 1 bis 10. Ergänze die Bedingung im if, damit nur gerade Zahlen ausgegeben werden.
Tipp: Eine Zahl ist gerade, wenn i % 2 == 0 (kein Rest bei Division durch 2).
Startcode
void main() {
for (int i = 1; i <= 10; i++) {
if (???) {
IO.println(i);
}
}
}
Hintergrund
Der Modulo-Operator %
% gibt den Rest einer Division. 7 % 3 = 1 (7 geteilt durch 3 = 2 Rest 1). Damit prüfst du Teilbarkeit: x % n == 0 heißt "x ist durch n teilbar".
Häufige Anwendungen: gerade/ungerade prüfen, Werte "wrappen" (z.B. index % array.length für zyklisches Durchlaufen), oder Uhrzeiten berechnen.
Übung 5 von 5
While-Schleife
Eine while-Schleife läuft, solange die Bedingung true ist:
while (bedingung) {
// code
}
Die Schleife soll bei 1 starten und bei 3 aufhören. Ergänze die Bedingung.
Startcode
void main() {
int i = 1;
while (???) {
IO.println(i);
i++;
}
}
Hintergrund
for vs. while — wann was?
for nutzt du, wenn du vorher weißt, wie oft die Schleife laufen soll (z.B. "5 mal" oder "für jedes Element"). while nutzt du, wenn du das nicht weißt — z.B. "lese Zeilen bis Dateiende" oder "wiederhole bis der User 'exit' eingibt".
Es gibt auch do-while: Wie while, aber der Body läuft mindestens einmal, weil die Bedingung erst am Ende geprüft wird.