www.wikidata.de-de.nina.az
Eine Endlosschleife ist in der Computerprogrammierung eine Schleife die nach jeder Abarbeitung erneut abgearbeitet wird falls die Ausfuhrung nicht durch aussere Einflusse abgebrochen wird Aussere Einflusse sind dabei solche die im regularen Ablauf des Programms nicht vorgesehen sind beispielsweise das Abschalten des Computers Es gibt jedoch auch Programme mit absichtlichen Endlosschleifen bspw Ereignisschleifen englisch event loop oder message dispatcher darunter solche die ohne aktives Warten auskommen Inhaltsverzeichnis 1 Uberblick 2 Beispiele 3 Gegenmassnahmen 4 Siehe auch 5 WeblinksUberblick Bearbeiten nbsp Infinite loop Endlosschleife laut Blue Screen Of DeathEndlosschleifen konnen bei der Programmierung durch Fehler entstehen wenn die Abbruchbedingung nicht definiert ist oder nicht eintreten kann Genaugenommen ist zu unterscheiden ob eine Schleife kein Abbruchkriterium hat ob es nie erfullt ist oder ob dieses nur fur bestimmte Eingangsparameter der Fall ist Der erste Fall wird entweder ganz bewusst gewahlt oder kann durch Debuggen des Programms einfach gefunden werden Der zweite verhalt sich konzeptionell ahnlich der letzte Fall ist fast immer unerwunscht und kann sehr schwer zu finden sein da er nur sehr selten eintritt Dies tritt ein wenn der Zustand des Programms zu Beginn der Schleife die Schleifeninvariante nicht erfullt Fehlerhafte Abbruchbedingungen verursachen haufig unbeabsichtigte Endlosschleifen Je nach Programm kann sich ein solcher Fehler unterschiedlich aussern Falls innerhalb des Schleifenrumpfs wiederholt Ressourcen wie beispielsweise Hauptspeicher belegt und nicht wieder freigegeben werden so fuhrt dies im Allgemeinen zu einem Speicherleck Endlosschleifen konnen sich aber auch durch simple Inaktivitat des Programms dem Benutzer gegenuber aussern Einfrieren Bei Geraten bei denen kein geordnetes Abschalten Herunterfahren vorgesehen ist gibt es oft zumindest eine Endlosschleife die in dessen Grundzustand auf Benutzereingaben wartet Sofern ein Computersystem Moglichkeiten zum geordnete Abbrechen eines Programms oder Ablaufs bietet konnen Programme auch absichtlich Endlosschleifen besitzen Ublich ist dies bei Multitasking Systemen fur Event Schleifen die auf Benutzereingaben warten Bei einem Singletasking System arbeitet allenfalls eine gleichzeitig Endlosschleifen werden dann uber die gebotenen ausseren Abbruchmoglichkeiten beendet Beispiele BearbeitenEine Iteration welche die Abbruchbedingung nicht erfullt int number 0 while number lt 10 Hier fehlt ein Inkrement der Variable Beispiel number 1 oder double number 0 1 while number 1 0 number 0 1 Da 0 1 in binarer Form periodisch ist wird 1 0 nie exakt erreicht Eine Rekursion die keine Abbruchbedingung erreicht In diesem Fall sturzt das Programm wegen eines Stapeluberlaufs ab void recursion int number Hier fehlt eine Abbruchbedingung Beispiel if number gt 10 return recursion number 1 Der einfachste Fall fur eine Endlosschleife ist eine Schleifenbedingung die immer wahr ist Wenn jedoch innerhalb der Schleife eine oder mehrere break Anweisungen stehen dann ist es keine Endlosschleife mehr int number 0 while true Hier fehlt ein Schleifenabbruch Beispiel if number gt 10 break number 1 Ein Sprungbefehl der das Programm nie verlasst int number 0 begin Hier fehlt ein bedingter Sprung Beispiel if number gt 10 goto end number 1 goto begin end Gegenmassnahmen BearbeitenUm unbeabsichtigten Endlosschleifen in Programmen vorzubeugen kann die Schleifenbedingung formal verifiziert werden z B mit dem wp Kalkul Das ist jedoch bereits bei kleinen Programmen ein sehr aufwandiger Prozess und im Allgemeinen sogar ein unlosbares Problem siehe Halteproblem Eine andere Methode die unbeabsichtigte Endlosschleifen zwar nicht verhindern kann sie jedoch zeitlich begrenzt ist ein sog Watchdog Wenn ein Programm nicht mehr regelmassig signalisiert dass es vorschriftsmassig lauft kann dieser entsprechend reagieren z B den Benutzer benachrichtigen oder das Programm beenden Siehe auch BearbeitenInfiniter RegressWeblinks Bearbeiten nbsp Wiktionary Endlosschleife Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Abgerufen von https de wikipedia org w index php title Endlosschleife Programmierung amp oldid 236768236