Dreißig Übungen zum Durchlaufen von Reihungen — vom Schleifenkopf bis zum Maximum, das es gar nicht gibt.
Dein Fortschritt:
0 / 0 Aufgaben
1
Übungsaufgaben
Dreißig Übungen zu Zählschleife, for-each, Summe, Maximum und Zählen — von AFB I bis AFB III. Jede Übung gibt sofort Rückmeldung; wenn Sie nicht weiterkommen, helfen die gestuften Tipps.
A1
Schleifenkopf und Indexfolge
AFB I
Ein Schrittzähler speichert die Werte von acht Tagen: int[] schritte = new int[8];Ordnen Sie jedem Schleifenkopf die Indizes zu, die i im Rumpf nacheinander annimmt.
Klicken Sie links einen Eintrag an und dann rechts den passenden — es entsteht eine Verbindungslinie. Mit der Tastatur: Enter zum Auswählen, ↑/↓ zum Wandern.
Die Standardschleife besucht 0 bis 7. Mit <= kommt zusätzlich i = 8 in den Rumpf — der Zugriff schritte[8] bricht ab. Beginnt die Schleife bei 1, fehlt das erste Element (beim Maximum ist das gewollt).
Ansatz: Lesen Sie Startwert, Bedingung und Schrittweite getrennt ab.
Weiter: Die Länge ist 8, der letzte gültige Index also 7.
A2
Spendenlauf
AFB I
Beim Spendenlauf erlaufen fünf Klassen diese Beträge (in €): int[] spende = {12, 5, 20, 8, 14};
int s = 0;
for (int x : spende) {
if (x > 10) {
s = s + x;
}
}
Berechnen Sie den Wert von s nach der Schleife.
Tragen Sie das Ergebnis ein — Enter prüft direkt.
Addiert werden nur Beträge über 10: \(12+20+14=46\). Die 5 und die 8 werden übersprungen. Die for-each-Schleife reicht hier, weil nur gelesen wird.
Ansatz: Gehen Sie die fünf Werte einzeln durch und prüfen Sie jeweils die Bedingung.
Weiter: Drei Werte sind größer als 10.
A3
Die schnellste Läuferin
AFB II
Bei einem 100-m-Lauf werden fünf Zeiten in Sekunden gespeichert: double[] zeit = {12.4, 11.9, 12.7, 11.9, 12.1};
int pos = 0;
for (int i = 1; i < zeit.length; i++) {
if (zeit[i] < zeit[pos]) {
pos = i;
}
}
Erklären Sie das Programm, indem Sie den Lückentext mit den passenden Begriffen füllen. Zwei Begriffe bleiben übrig.
Wort anklicken, dann Lücke anklicken (oder umgekehrt) — mit Tab und Enter geht es genauso. Ein Klick auf eine gefüllte Lücke legt das Wort zurück.
pos speichert nicht die Zeit selbst, sondern deren . Am Anfang gilt das Element mit dem Index als das beste, deshalb beginnt die Schleife bei . Ist die Bedingung wahr, wird ausgeführt. Bei den beiden gleichen Bestzeiten 11,9 s bleibt am Ende die stehen, weil < nur echt kleinere Zeiten erkennt. Die beste Zeit selbst liefert .
pos merkt sich die Position. Weil zeit[0] schon der Startwert ist, beginnt die Schleife bei 1. Bei zeit[3] = 11,9 ist 11,9 < 11,9 falsch, deshalb bleibt pos = 1 (erste Bestzeit) stehen. Die Zeit liefert zeit[pos] = 11,9 s.
Überlegen Sie, was in pos steht: eine Zeit in Sekunden oder eine Platznummer der Reihung?
Die Bedingung zeit[i] < zeit[pos] ist bei gleichen Zeiten falsch. Dann wird pos nicht verändert, und der frühere Index bleibt erhalten.