Endlosschleife: Unterschied zwischen den Versionen
Marius (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Eine Endlosschleife ist eine Schleife, die nicht terminiert. Die Schleife wird endlos durchgearbeit, ohne ein richtiges Ergebnis widerzugeben. ===Beispiel=== …“) |
|||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Eine Endlosschleife ist eine Schleife, die nicht terminiert. | + | Eine '''Endlosschleife''' ist eine [[Schleife]], die nicht terminiert. Das heißt, die Schleife wird endlos durchgearbeit, ohne jemals ein richtiges Ergebnis wiederzugeben. |
− | + | =Beispiel= | |
<source lang="java"> public static void Endlosschleife() | <source lang="java"> public static void Endlosschleife() | ||
Zeile 14: | Zeile 14: | ||
</source> | </source> | ||
− | Dieses Programm gibt den Variablenwert von i (i = 0) | + | Dieses [[Programm]] gibt den Variablenwert von i (i = 0) wieder. Dieser Wert ändert sich jedoch nicht, sodass die Überprüfung im Schleifenkopf immer ''true'' ist und die Schleife immer wieder ausgeführt wird. Das Programm erreicht nie die Anweisungen nach der [[while]]-Schleife. Das Programm nutzt daher immer mehr Speicher, bis dieser aufgebraucht ist oder der Nutzer das Programm abbricht. |
+ | =Vermeidung von Endlosschleifen= | ||
− | + | Um Endlosschleifen zu vermeiden, ist es wichtig, zu überprüfen, ob die Bedingung im Schleifenkopf irgendwann ''false'' ist. | |
− | Um Endlosschleifen zu vermeiden, ist es wichtig, zu überprüfen, ob die Bedingung im Schleifenkopf irgendwann ''false'' ist | + | |
− | == | + | Im obrigen Beispiel wäre dies der Fall, wenn im Schleifenrumpf die Variable ''i'' durch ''i = i+1;'' hochgezählt würde. ''i'' hätte nach zehn Iterationen den Wert 10. Damit wäre die Bedingung im Schleifenkopf ''false'' und der Schleifenrumpf würde nicht ausgeführt. |
+ | |||
+ | =Korrigiertes Beispiel= | ||
<source lang="java"> public static void Endlosschleife() | <source lang="java"> public static void Endlosschleife() | ||
{ | { | ||
Zeile 29: | Zeile 31: | ||
i = i + 1; | i = i + 1; | ||
} | } | ||
− | System.out.println("Das Programm erreicht diese Zeile | + | System.out.println("Das Programm erreicht diese Zeile nun."); |
} | } | ||
</source> | </source> |
Aktuelle Version vom 13. Juni 2016, 21:47 Uhr
Eine Endlosschleife ist eine Schleife, die nicht terminiert. Das heißt, die Schleife wird endlos durchgearbeit, ohne jemals ein richtiges Ergebnis wiederzugeben.
Beispiel
public static void Endlosschleife() { int i = 0; while(i < 10) { System.out.println(i); } System.out.println("Das Programm erreicht diese Zeile nie."); }
Dieses Programm gibt den Variablenwert von i (i = 0) wieder. Dieser Wert ändert sich jedoch nicht, sodass die Überprüfung im Schleifenkopf immer true ist und die Schleife immer wieder ausgeführt wird. Das Programm erreicht nie die Anweisungen nach der while-Schleife. Das Programm nutzt daher immer mehr Speicher, bis dieser aufgebraucht ist oder der Nutzer das Programm abbricht.
Vermeidung von Endlosschleifen
Um Endlosschleifen zu vermeiden, ist es wichtig, zu überprüfen, ob die Bedingung im Schleifenkopf irgendwann false ist.
Im obrigen Beispiel wäre dies der Fall, wenn im Schleifenrumpf die Variable i durch i = i+1; hochgezählt würde. i hätte nach zehn Iterationen den Wert 10. Damit wäre die Bedingung im Schleifenkopf false und der Schleifenrumpf würde nicht ausgeführt.
Korrigiertes Beispiel
public static void Endlosschleife() { int i = 0; while(i < 10) { System.out.println(i); i = i + 1; } System.out.println("Das Programm erreicht diese Zeile nun."); }