Endlosschleife: Unterschied zwischen den Versionen

Aus EINI
Wechseln zu: Navigation, Suche
(Korigiertes Beispiel)
 
Zeile 1: Zeile 1:
Eine Endlosschleife ist eine Schleife, die nicht terminiert. Die Schleife wird endlos durchgearbeit, ohne ein richtiges Ergebnis widerzugeben.
+
Eine '''Endlosschleife''' ist eine [[Schleife]], die nicht terminiert. Das heißt, die Schleife wird endlos durchgearbeit, ohne jemals ein richtiges Ergebnis wiederzugeben.
  
===Beispiel===
+
=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) wider. Jedoch ändert sich dieser Wert nicht, so dass 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 er aufgebraucht ist oder der Nutzer das Programm abbricht.
+
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=
  
==Vermeidung von Endlosschleife==
+
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 den obigen Beispiel wäre dies, wenn im Schleifenrumpf die Variable ''i'' durch ''i = i+1;'' hochgezählt würde. ''i'' hätte nach zehn Schleifendurchläufe den Wert 10 und damit wäre die Bedingung im Schleifenkopf ''false'' und der Schleifenrumpf würde nicht ausgeführt.
+
  
===Korigiertes Beispiel===
+
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()
 
{
 
{

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.");
}