5Wiederholungen (Schleifen)
Jeder kennt sie, nervige Arbeiten bei denen wir stumpf immer wieder und wieder und wieder dasselbe machen müssen. Ein Beispiel aus dem Alltag wäre das Einräumen des Kühlschranks nach dem Einkaufen. Kühlschranktür auf, eine volle Einkaufstüte davor, wir greifen nach unten und holen etwas heraus, räumen es ein. Diesen Ablauf wiederholen wir einige Male. Wie oft wir das machen ist bei genauerer Überlegung ganz genau definiert, nämlich so oft bis eben alles im Kühlschrank eingeräumt ist.
Beim Programmieren nennt man das eine „Schleife“ oder auch „Wiederholung“. Das schöne ist, dass wir sie einmal programmieren, und die nervige Rechenarbeit liegt dann beim Computer. Dabei besteht eine Form der Schleife, die gezählte Wiederholung oder „for-Schleife“ aus genau drei Teilen:
ein Startwert,
eine Bedingung, wann die Schleife endet, und
eine Anweisung, wie sich die beiden Werte annähern, damit die Schleife eben endet.
Hier das Beispiel von oben.
1/* Unsere Einkaufstüte startet mit einem Inhalt von 14, z. B. Äpfeln;
2„einkaufstuete > 0“ sagt aus, dass die Schleifesolange wiederholt wird wie
3der Inhalt unserer Tüte größer als 0 ist, logisch, denn dann ist sie leer;
4„einkaufstuete = einkaufstuete - 1“ bedeutet, dass mit jedem mal, wenn wir
5etwas auf der Tüte in den Kühlschrank legen, der Inhalt unserer Tüte um 1
6reduziert */
7for (einkaufstuete = 14; einkaufstuete > 0; einkaufstuete = einkaufstuete - 1) {
8/* Mit jedem Durchgang der Schleife wächst der Inhalt des Kühlschranks um 1,
9sobald die Schleife fertig ist, gilt dementsprechend einkaufstuete = 0 und
10kuehlschrank = 14 */
11 kuehlschrank = kuehlschrank + 1;
12}
Es gibt aber auch noch andere Formen für Schleifen, das ist teilweise eine Geschmacksfrage welche man lieber verwendet, generell ist die „for-Schleife“ wie oben aber nach etwas Eingewöhnungszeit die praktischste. Trotzdem dasselbe nochmal in Form einer „while-Schleife“:
1/* In dem hier gezeigten Beispiel ist diese Schreibform sicherlich auch
2eine gute Wahl, schnell und übersichtlich, außerdem durch die Verwendung
3der englischen Wörter einfach zu verstehen. Aber sobald die Algorithmen
4verschachtelter werden, ist die „for-Schleife“ meistens übersichtlicher*/
5while (einkaufstuete > 0) {
6 einkaufstuete = einkaufstuete -1;
7 kuehlschrank = kuehlschrank + 1;
8}
Bei Wiederholungen besteht immer die Gefahr einer sogenannten Endlosschleife. Das ist eine Schleife, welche endlos wiederholt wird, weil die Bedingung zu ihrem Ende einfach nicht erfüllt wird. Hier ein kleines Beispiel:
1/* a hat hier immer einen Wert kleiner 0, dadurch wird diese Schleife
2theoretisch endlos durchgeführt, und der Computer ordnet der Variable
3"a" immer wieder „-5“ zu */
4a = -5;
5while(a < 0) {
6 a = -5;
7}
Zusammenfassung:
Wir können mithilfe von Schleifen den Algorithmus eine Aufgabe mehrfach hintereinander bearbeiten lassen, ohne jede Wiederholung neu schreiben zu müssen
Dafür gibt es diverse Schreibweisen, je nach Anwendung kann die eine besser passen als die andere
Achten wir nicht auf Start- und Endbedingung der Schleife kann es sein, dass wir eine „Endlosschleife“ programmieren, die niemals aufhört, sich zu wiederholen