K-EL/Schleifen/Bedingte Schleifen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
== bedingte Schleifen ==
Wir erinnern uns an den gennerellen Aufbau einer bedingten Schleife. Bei dieser Art Schleife wurden die Anweisungen im Schleifenkörper, im Gegensatz zu Zählschleifen, nicht eine feste Anzahl Male ausgeführt, sondern solange wiederhohlt, wie eine gewisse Bedingung wahr war:
<pre>
SOLANGE (Bedingung) {
Anweisung 1 ...;
Anweisung 2 ...;
Anweisung 3 ...;
...
</pre>
In der Programmierung setzen wir dies wie folgt um:
<pre>
while (Bedingung) {
Anweisung 1;
Anweisung 2;
Anweisung 3;
}
</pre>
dabei können für die Bedingung alle Operationen verwendet werden, die wir schon bei Verzweigungen kennengleernt haben. Bspw. kann die Schleife so lange ausgeführt werden, solange eine Zahl kleiner ist als die andere:
<run id="4fe826dd6f2bc">
int a = 3;
int b = 20;
while (a <= b) { // SOLANGE a kleiner oder gleich b
b = b - a; // ziehe a von b ab und speichere das Ergebnis wieder in b
}
System.out.println(b);
</run>
Das Beispiel berechnet, welchen Rest b beim Teilen durch a lässt. Was läuft hie rin den einzelnen Schritten ab? Wir schauen uns dazu das Beispiel 20:3 an:
<pre>
1. Durschlauf: a=3, b=20 -> Berechne b = b-a = 17 -> a <= b ist noch wahr, da 3 <= 17 also neuer Durchlauf
2. Durschlauf: a=3, b=17 -> Berechne b = b-a = 14 -> a <= b ist noch wahr, da 3 <= 14 also neuer Durchlauf
3. Durschlauf: a=3, b=14 -> Berechne b = b-a = 11 -> a <= b ist noch wahr, da 3 <= 11 also neuer Durchlauf
4. Durschlauf: a=3, b=11 -> Berechne b = b-a = 8 -> a <= b ist noch wahr, da 3 <= 8 also neuer Durchlauf
5. Durschlauf: a=3, b=8 -> Berechne b = b-a = 5 -> a <= b ist noch wahr, da 3 <= 5 also neuer Durchlauf
6. Durschlauf: a=3, b=5 -> Berechne b = b-a = 2 -> a <= b ist NICHT MEHR WAHR -> Schleife beendet
gib b als Rest von b:a aus
</pre>
== Beispiel ==
<code id="KEL-einAusgabe-1" hidden>
String eingabe(String text) {
return JOptionPane.showInputDialog(null, text);
}
void ausgabe(String text){
JOptionPane.showMessageDialog(null,text);
}
</code>
Im folgenden ist ein kleines Fitnessprogramm dargestellt. Solange der Nutzer bei Nachfragen ja angibt, wird die Schleife stets wiederholt. Das 1. bis 4. Workout besteht aus 5 Liegestützen. Anschließend muss der Sportler nur noch 3 Hock-Streck-Sprünge pro Workout absolvieren.
<run id="4fd8d41e6be3a">
int anzWorkout = 0;
var nutzerEingabe = eingabe("Kann's losgehen?");
while(nutzerEingabe.equals("ja")) {
if(i < 5) {
ausgabe("Los geht's ... 5 Liegestütze");
}
else {
ausgabe("Gut! Jetzt 3 Hock-Streck-Sprünge.");
}
anzWorkout = anzWorkout + 1;
nutzerEingabe = eingabe("Weiter?"); // Nutzer fragen, ob er noch kann -> nur falls er noch kraft hat, wird die Schleife nochmal durchlaufen
}
System.out.println("Wow! Du hast das Workout " + anzWorkout + "x geschafft.");
</run>