Wie weiß ich, ob ich mich in einer Endlosschleife befinde oder das Programm doch noch enden wird?

Kushina99  11.08.2022, 22:54

Worum genau geht es?

qed2fwe 
Fragesteller
 11.08.2022, 23:02

Um ein Programm, welches läuft und bei einer Schleife sich z. B. befindet und ich nicht weiß, ob es endet oder weiter geht.

6 Antworten

Bin noch am lernen, aber man kann ja immer, bei jedem Schleifendurchlauf, eine Testvariable ausgeben, vielleicht einfach das i aus der Bedingung. Dann sieht man anhand der Veränderung, denke ich, ob man endlos weiter macht, oder nicht. Wenn man da etwas kreativ ist, kann man sicher die meisten Programme beim Testen auf Endlosigkeit untersuchen.

Wie gesagt, bin noch am Lernen, kann also sein dass ich mirs zu einfach vorstelle.

Alleskoenner11  12.08.2022, 01:39

Ja, das kann man machen, ist zwar nicht die sauberste Methode, sowas zu prüfen, aber das macht eh jeder Programmierer so oder so ähnlich :)

0

Ich empfehle einfach den Code auszuprobieren und, wenn der Code nach der Schleife ausgeführt wird, scheint sie nicht unendlich zu sein.

Falls du jedoch eine sehr zeitaufwendige Schleife hast und dir dort unsicher bist, empfehle ich, die Schleife zu analysieren und zu schauen unter welcher Bedingung die Schleife abbricht. Dies kannst du tun, indem du nach "break"s in der Schleife suchst und schaust, in welchem "if" die eingeklammert ist oder du schaust in der Schleifenkopf, welche meistens eine Variable beinhaltet, welche du einfach verfolgen kannst, wo sie in der Schleife verändert wird.

Bsp.: (in Java)

int i = 0;
while(i <= 5) {
  if(i % 2 == 0) i++;
}

Diese Schleife ist endlos, da sie von der Variable "i" abhängig ist, aber, wenn man im Kopf ein paar Schritte durchgeht, man merkt, dass die Variable "i" einmal erhöht wird, aber dann nie wieder, wobei die Bedingung der Schleife nie erreicht wird.

Bei Fragen gerne fragen.

Woher ich das weiß:Hobby

Gar nicht.

https://de.m.wikipedia.org/wiki/Halteproblem

Man kann nicht für alle Programme entscheiden ob und wann sie zu einem Ende führen oder eine Endlosschleife sind.

Am ehesten kannst du nur den Code verstehen und analysieren wo er eben lange braucht und warum. Dann kannst du versuchen zu überlegen in welche Fällen eine Endlosschleife draus wird.

  1. Verstehe dein code
  2. Manche Compiler geben dir das in manchen Situationen bescheid zB wenn du nur hast while(true){}
  3. Führe dein Programm aus und schau ob es zum ende kommt
qed2fwe 
Fragesteller
 11.08.2022, 22:59

Schon klar, ich mein nur im high end Programmierbereich. Wo man z. B. 10.000 Zeilen Code hat und im Nachhinein bei einer Schleife länger wartet, einmal hatte ich den Fall, dass nach 32 Minuten ich doch zu einem Ende kam, obwohl ich die 32 Minuten zuvor dachte, dass ich in einer Endlosschleife bin, was nicht der Fall war und mein Algorithmus hat funktioniert, hätte jedoch fast abgebrochen, obwohl alles geklappt hat.

0
zooper  12.08.2022, 00:06
@qed2fwe

1) was hat anzahl zeilen code mit "high end" zu tun

2) was hast du denn in der schleife gemacht das du 32 Minuten gebraucht hast? Klingt unglaubwürdig.

0
Lamanini  12.08.2022, 13:43
@zooper
was hast du denn in der schleife gemacht das du 32 Minuten gebraucht hast? Klingt unglaubwürdig.

Also ich hab jetzt doch schon ein paar Programme gesehen, die nunmal länger brauchen. Gerade wenn man was mathematisches macht.

0

Indem du logisch analysierst, ob die Abbruchbedingung überhaupt eintreffen kann.

Woher ich das weiß:Berufserfahrung – 20 Jahre Berufserfahrung