<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Schleife_%28Programmierung%29</id>
	<title>Schleife (Programmierung) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Schleife_%28Programmierung%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Schleife_(Programmierung)&amp;action=history"/>
	<updated>2026-06-08T19:02:56Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Schleife_(Programmierung)&amp;diff=30561&amp;oldid=prev</id>
		<title>imported&gt;Serols: Änderungen von ~2025-61381-7 (Diskussion) auf die letzte Version von Serols zurückgesetzt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Schleife_(Programmierung)&amp;diff=30561&amp;oldid=prev"/>
		<updated>2025-09-15T07:42:23Z</updated>

		<summary type="html">&lt;p&gt;Änderungen von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/~2025-61381-7&quot; title=&quot;Spezial:Beiträge/~2025-61381-7&quot;&gt;~2025-61381-7&lt;/a&gt; (&lt;a href=&quot;/index.php?title=Benutzer_Diskussion:~2025-61381-7&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer Diskussion:~2025-61381-7 (Seite nicht vorhanden)&quot;&gt;Diskussion&lt;/a&gt;) auf die letzte Version von &lt;a href=&quot;/index.php?title=Benutzer:Serols&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Benutzer:Serols (Seite nicht vorhanden)&quot;&gt;Serols&lt;/a&gt; zurückgesetzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[File:Programmingloops.svg|300px|thumb]]&lt;br /&gt;
Eine &amp;#039;&amp;#039;&amp;#039;Schleife&amp;#039;&amp;#039;&amp;#039; (auch „Wiederholung“ oder {{enS|&amp;#039;&amp;#039;loop&amp;#039;&amp;#039;}}) ist eine [[Kontrollstruktur]] in [[Programmiersprache]]n. Sie wiederholt einen [[Blockstruktur|Anweisungs-Block]] –&amp;amp;nbsp;den sogenannten &amp;#039;&amp;#039;Schleifenrumpf&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Schleifenkörper&amp;#039;&amp;#039;&amp;amp;nbsp;–, solange die Schleifenbedingung als Laufbedingung&amp;lt;ref group=&amp;quot;Anm&amp;quot; name=&amp;quot;Laufbed.&amp;quot; /&amp;gt; gültig bleibt bzw. als [[Abbruchbedingung]] nicht eintritt. Schleifen, deren Schleifenbedingung immer zur Fortsetzung führt oder die keine Schleifenbedingung haben, sind [[Endlosschleife (Programmierung)|Endlosschleife]]n.&lt;br /&gt;
&lt;br /&gt;
Schleifen können beliebig verschachtelt werden: Innerhalb des Schleifenkörpers der &amp;#039;&amp;#039;äußeren&amp;#039;&amp;#039; Schleife befindet sich wiederum eine Schleife, sie &amp;#039;&amp;#039;liegt innen&amp;#039;&amp;#039;, oder &amp;#039;&amp;#039;unter&amp;#039;&amp;#039; der äußeren Schleife.&lt;br /&gt;
Jede Schleife kann in eine [[Rekursion|rekursive]] oder sogar [[Endrekursion|endrekursive]] Form umgewandelt werden.&lt;br /&gt;
Zur Beschleunigung des Programmablaufs werden Schleifen oft durch den [[Compiler]] &amp;#039;&amp;#039;[[Loop Unrolling|entrollt]]&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Eine Schleife wird schrittweise wiederholt (&amp;#039;&amp;#039;[[Iteration#Informatik|iterativ]]&amp;#039;&amp;#039;) verarbeitet:&lt;br /&gt;
# Üblicherweise wird (außer bei einer [[#Fußgesteuerte Schleife|fußgesteuerten Schleife]]) erst geprüft, ob die Schleifenbedingung gültig ist; falls nicht, wird die Schleife beendet.&lt;br /&gt;
# Der gesamte Schleifenrumpf wird ausgeführt. Anschließend wird mit 1. fortgesetzt.&lt;br /&gt;
&lt;br /&gt;
== Arten ==&lt;br /&gt;
Prinzipiell werden folgende Typen von Schleifen unterschieden:&lt;br /&gt;
* Die &amp;#039;&amp;#039;vorprüfende&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;kopfgesteuerte&amp;#039;&amp;#039; Schleife.&amp;lt;br /&amp;gt;Bei dieser Schleife wird &amp;lt;u&amp;gt;vor&amp;lt;/u&amp;gt; der (eventuellen) Ausführung des Schleifenrumpfs eine Bedingung geprüft, ob der Schleifenrumpf (Schleifeninhalt) anschließend (erstmals/erneut) ausgeführt wird (meist mit &amp;#039;&amp;#039;WHILE&amp;#039;&amp;#039; = &amp;#039;&amp;#039;solange&amp;#039;&amp;#039; eingeleitet).&lt;br /&gt;
* Die &amp;#039;&amp;#039;nachprüfende&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;fußgesteuerte&amp;#039;&amp;#039; Schleife.&amp;lt;br /&amp;gt;Bei dieser Schleife wird &amp;lt;u&amp;gt;nach&amp;lt;/u&amp;gt; dem Durchlauf des Schleifenrumpfes (Schleifeninhalts) eine Bedingung überprüft, ob der Schleifenrumpf erneut ausgeführt wird (meist als Konstrukt &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;DO…WHILE&amp;lt;/span&amp;gt; = „ausführen … solange“ oder &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;REPEAT…UNTIL&amp;lt;/span&amp;gt; = „wiederholen … bis“).&lt;br /&gt;
* Die &amp;#039;&amp;#039;Zählschleife&amp;#039;&amp;#039;, eine Sonderform der vorprüfenden Schleife (meist als &amp;#039;&amp;#039;FOR&amp;#039;&amp;#039; = &amp;#039;&amp;#039;für&amp;#039;&amp;#039;-Schleife implementiert).&amp;lt;br /&amp;gt;{{Hauptartikel|For-Schleife}}&lt;br /&gt;
* Die &amp;#039;&amp;#039;Mengenschleife&amp;#039;&amp;#039;, eine Sonderform der Zählschleife (meist als &amp;#039;&amp;#039;FOREACH&amp;#039;&amp;#039; = „für jedes Element der Menge“ implementiert; die Reihenfolge der Elemente ist beliebig).&lt;br /&gt;
{{Anker|Laufbedingung|Abbruchbedingung}}Ferner können sich Schleifen bzgl. ihrer Bedingungsprüfung unterscheiden:&lt;br /&gt;
* Schleife mit &amp;#039;&amp;#039;Laufbedingung&amp;#039;&amp;#039;: Die Schleife wird solange durchlaufen, wie die Schleifenbedingung zu „wahr“ ausgewertet wird.&lt;br /&gt;
* Schleife mit &amp;#039;&amp;#039;Abbruchbedingung&amp;#039;&amp;#039;: Wertet die Bedingung zu „wahr“ aus, so wird die Schleife abgebrochen.&lt;br /&gt;
&lt;br /&gt;
== Schleifenabbruch im Sonderfall ==&lt;br /&gt;
&lt;br /&gt;
In Fällen, die schwierig als Schleifenbedingung zu fassen sind, kann eine Schleife (aus dem Schleifenkörper heraus) meist abgebrochen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Iterationsabbruch &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Es wird lediglich die aktuelle Iteration abgebrochen: Der Rest des aktuellen Schleifenrumpfs wird [[Sprunganweisung|übersprungen]]. Die Schleife jedoch wird mit der nächsten Iteration fortgesetzt.&lt;br /&gt;
Mitunter kann in verschachtelten Schleifen auch auf eine weiter außen liegende Schleife Bezug genommen werden – der Abbruch der aktuellen Iteration gilt dann bezüglich jener angegebenen „weiter äußeren“ Schleife; die „weiter innere“, in deren Schleifenrumpf die Abbruchanweisung steht, wird dann komplett abgebrochen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; Schleifenabbruch &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Meist gibt es auch einen Befehl zum Gesamt-Abbruch der Schleife, das Programm wird dann mit der ersten [[Anweisung (Programmierung)|Anweisung]] nach der Schleife fortgesetzt. Oft ist in verschachtelten Schleifen auch eine Bezugnahme auf eine weiter außen liegende Schleife möglich, was die inneren dann ebenfalls abbricht.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
Die nachfolgenden Beispiele in [[Pseudocode]] finden sich in den jeweiligen [[Programmiersprache]]n meist sehr ähnlich.&lt;br /&gt;
&lt;br /&gt;
=== Zählschleife ===&lt;br /&gt;
{{Anker|For}}&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;FOR&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Iterator&amp;#039;&amp;#039;:=&amp;#039;&amp;#039;Anfangszahl&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;TO&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Endezahl&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;STEP&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schrittweite&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;DO&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schleifenrumpf&amp;#039;&amp;#039;.&lt;br /&gt;
Bei einer [[For-Schleife]] zählt der [[Computer]] von einer Anfangszahl bis zu einer Endzahl und wiederholt dabei jedes Mal den Codeblock („Schleifenrumpf“). Die aktuelle Zahl wird in eine Variable („Iterator“) gesetzt, damit sie bei Bedarf in dem Codeblock Verwendung finden kann. Häufig ist die Zählschleife auf Ganzzahlen beschränkt. Das Ändern der Iterator-Variablen im Schleifenkörper ist bei vielen Programmiersprachen verboten und gilt als schlechter [[Programmierstil]], da es oft zu schwer verständlichem Code führt – es läuft der Denkweise zuwider, direkt am Schleifenkopf die Anzahl der Durchläufe ablesen zu können.&lt;br /&gt;
&lt;br /&gt;
=== Kopfgesteuerte Schleife ===&lt;br /&gt;
{{Anker|While}}&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;WHILE&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;[[Aussage (Logik)|Logischer Ausdruck]]&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;DO&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schleifenrumpf&amp;#039;&amp;#039;.&lt;br /&gt;
Bei einer kopfgesteuerten Schleife erfolgt die Abfrage der Bedingung, &amp;#039;&amp;#039;bevor&amp;#039;&amp;#039; der Schleifenrumpf ausgeführt wird, also am &amp;#039;&amp;#039;Kopf&amp;#039;&amp;#039; des Konstruktes. Eine logische Operation kann beispielsweise sein: &amp;lt;code&amp;gt;(x &amp;gt; 4)&amp;lt;/code&amp;gt; Solange diese Bedingung wahr ist, werden die Anweisungen innerhalb der Schleife ausgeführt. Wird der Inhalt der logischen Operation nicht im Schleifenrumpf verändert, ist diese Kontrollstruktur meist nicht die richtige, weil diese Schleife sonst kein einziges Mal durchlaufen wird oder unendlich lang läuft.&lt;br /&gt;
&lt;br /&gt;
=== Fußgesteuerte Schleife ===&lt;br /&gt;
{{Anker|Do}}&lt;br /&gt;
{{Anker|Repeat}}&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;DO&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schleifenrumpf&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;WHILE&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039;&lt;br /&gt;
bzw.&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;REPEAT&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schleifenrumpf&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;UNTIL&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039;&lt;br /&gt;
Bei einer fußgesteuerten Schleife erfolgt die Abfrage der Bedingung, &amp;#039;&amp;#039;nachdem&amp;#039;&amp;#039; der Schleifenrumpf ausgeführt wurde, also am &amp;#039;&amp;#039;Fuß&amp;#039;&amp;#039; des Konstruktes.&lt;br /&gt;
Auf &amp;lt;code&amp;gt;WHILE&amp;lt;/code&amp;gt; (dt.: solange) folgt eine Laufbedingung, auf &amp;lt;code&amp;gt;UNTIL&amp;lt;/code&amp;gt; (dt.: bis) eine [[Abbruchbedingung]].&lt;br /&gt;
Wie für die kopfgesteuerte Schleife gilt: Wird der Inhalt der logischen Operation nicht im Schleifenrumpf verändert, ist diese Kontrollstruktur meist nicht die richtige, weil diese Schleife sonst genau einmal durchlaufen wird oder unendlich lang läuft.&lt;br /&gt;
&lt;br /&gt;
=== {{Anker|Foreach}} Mengenschleife ===&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;FOREACH&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Element&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;OF&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Menge&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;DO&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schleifenrumpf&amp;#039;&amp;#039;&lt;br /&gt;
Eine Mengenschleife führt den Schleifenrumpf für jedes Element einer [[Menge (Datenstruktur)|Menge]] (z.&amp;amp;nbsp;B. [[Feld (Datentyp)|Array]] oder Liste) aus.&lt;br /&gt;
&lt;br /&gt;
Sie kann ersetzt werden durch eine Zählschleife mit dem Schleifenkörper&lt;br /&gt;
 FOR Iterator2 := 1 TO &amp;#039;&amp;#039;[[Mächtigkeit (Mathematik)|Mächtigkeit]]&amp;#039;&amp;#039;(Menge) DO&lt;br /&gt;
   BEGIN&lt;br /&gt;
     Element:= Iterator2-tes Element von Menge;&lt;br /&gt;
     Schleifenrumpf&lt;br /&gt;
   END&lt;br /&gt;
&lt;br /&gt;
Da die Reihenfolge der Abarbeitung bei der Mengenschleife beliebig ist, bleibt dem Compiler überlassen, wie er vorgeht. Aufgrund des sicher gegebenen Umstands, dass eine Iteration nicht von der „vorhergehenden“ abhängig sein kann, kann ein Compiler Mengenschleifen am einfachsten [[Parallele Programmierung#Auto-Parallelisierung|automatisch parallelisieren]].&lt;br /&gt;
&lt;br /&gt;
=== Iterationsabbruch ===&lt;br /&gt;
{{Anker|Continue}}&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;CONTINUE&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
bzw.&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;CONTINUE&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schleifenbezeichner&amp;#039;&amp;#039;&lt;br /&gt;
Die erste Variante bricht die aktuelle Iteration ab, es geht weiter mit der Prüfung der Laufbedingung für die nächste Iteration. Die zweite Variante beendet in verschachtelten Schleifen alle inneren und wirkt wie die erste Variante für diejenige äußere Schleife, welche durch &amp;#039;&amp;#039;Schleifenbezeichner&amp;#039;&amp;#039; angesprochen wird. Oft kommt hier entweder ein Name ähnlich einer Sprungmarke zum Einsatz; in Zählschleifen erfolgt die Identifizierung mitunter über den Namen des Iterators.&lt;br /&gt;
&lt;br /&gt;
=== Schleifenabbruch ===&lt;br /&gt;
{{Anker|Break}}&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;BREAK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
bzw.&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;BREAK&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Schleifenbezeichner&amp;#039;&amp;#039;&lt;br /&gt;
Die erste Variante bricht die aktuelle Schleife ab, es geht weiter mit der ersten Anweisung nach der Schleife.&lt;br /&gt;
Die zweite Variante beendet in verschachtelten Schleifen alle inneren komplett sowie diejenige äußere Schleife, welche durch &amp;#039;&amp;#039;Schleifenbezeichner&amp;#039;&amp;#039; angesprochen wird. Oft kommt hier entweder ein Name ähnlich einer Sprungmarke zum Einsatz; in Zählschleifen erfolgt die Identifizierung mitunter über den Namen des Iterators.&lt;br /&gt;
&lt;br /&gt;
== Implementierung mit Sprungbefehlen ==&lt;br /&gt;
&lt;br /&gt;
Früher wurden auch in Hochsprachen-Programmen häufig &amp;#039;&amp;#039;unbedingte Sprünge&amp;#039;&amp;#039; ([[Sprunganweisung|Goto-Befehle]]) verwendet. Sprachen, die Sprunganweisungen verwenden, ermöglichen das Einfügen einer Marke (englisch &amp;#039;&amp;#039;Label&amp;#039;&amp;#039;). Eine solche Marke kann dann als Ziel einer &amp;#039;&amp;#039;Goto-Anweisung&amp;#039;&amp;#039; dienen.&lt;br /&gt;
&lt;br /&gt;
Nach heutigen Programmierparadigmen, namentlich der [[Strukturierte Programmierung|strukturierten Programmierung]], wird von der Verwendung von Goto-Sprüngen abgeraten, da durch diese der berüchtigte „[[Spaghetticode]]“ entsteht. Prinzipiell lässt sich jedoch jede Schleifenform mit Sprungbefehlen abbilden.&lt;br /&gt;
&lt;br /&gt;
=== For-Schleife ===&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Alternativen, For-Schleifen mit Hilfe einfacherer Befehle zu implementieren.&lt;br /&gt;
Im Normalfall verhalten sich diese Alternativen gleich, aber in einigen speziellen Situationen gibt es Unterschiede.&lt;br /&gt;
Beispiele für spezielle Situationen sind:&lt;br /&gt;
&lt;br /&gt;
* Die &amp;#039;&amp;#039;Schrittweite&amp;#039;&amp;#039; ist 0 (nicht in allen Varianten der For-Schleife möglich).&lt;br /&gt;
* Der &amp;#039;&amp;#039;Startwert&amp;#039;&amp;#039; oder der &amp;#039;&amp;#039;Endwert&amp;#039;&amp;#039; sind die kleinst- oder größtmögliche darstellbare Zahl.&lt;br /&gt;
&lt;br /&gt;
Eine ausführlichere Darstellung der Varianten befindet sich im Artikel [[For-Schleife]].&lt;br /&gt;
&lt;br /&gt;
=== While-Do-Schleife ===&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;WHILE&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;DO&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Befehlssequenz&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
entspricht:&lt;br /&gt;
&lt;br /&gt;
 Marke1:&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;IF&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;GOTO&amp;#039;&amp;#039;&amp;#039; Marke2           &amp;#039;&amp;#039;(bedingter Vorwärtssprung zum Verlassen der Schleife)&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;Befehlssequenz&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;GOTO&amp;#039;&amp;#039;&amp;#039; Marke1                                     &amp;#039;&amp;#039;(Rückwärtssprung für die nächste Iteration)&amp;#039;&amp;#039;&lt;br /&gt;
 Marke2:&lt;br /&gt;
&lt;br /&gt;
Die Befehlssequenz wird keinmal durchlaufen, wenn der logische Ausdruck schon zu Beginn falsch ist.&lt;br /&gt;
&lt;br /&gt;
=== Do-While-Schleife ===&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;DO&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Befehlssequenz&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;WHILE&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
entspricht:&lt;br /&gt;
&lt;br /&gt;
 Marke1:&lt;br /&gt;
   &amp;#039;&amp;#039;Befehlssequenz&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;IF&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;GOTO&amp;#039;&amp;#039;&amp;#039; Marke1       &amp;#039;&amp;#039;(bedingter Rückwärtssprung für die nächste Iteration, wenn Bedingung erfüllt ist)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Hier wird die Schleife mindestens einmal durchlaufen. Die Do-While-Schleife ist damit nachprüfend.&lt;br /&gt;
&lt;br /&gt;
=== Repeat-Until-Schleife ===&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;REPEAT&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Befehlssequenz&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;UNTIL&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
entspricht:&lt;br /&gt;
&lt;br /&gt;
 Marke1:&lt;br /&gt;
   &amp;#039;&amp;#039;Befehlssequenz&amp;#039;&amp;#039;&lt;br /&gt;
   &amp;#039;&amp;#039;&amp;#039;IF&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;NOT&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;Logischer Ausdruck&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;GOTO&amp;#039;&amp;#039;&amp;#039; Marke1     &amp;#039;&amp;#039;(bedingter Rückwärtssprung für die nächste Iteration, wenn Bedingung &amp;#039;&amp;#039;&amp;#039;nicht&amp;#039;&amp;#039;&amp;#039; erfüllt ist)&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Sie ist also lediglich eine Do-While-Schleife mit Abbruchbedingung statt Laufbedingung.&lt;br /&gt;
&lt;br /&gt;
=== Befehle in Assemblersprache ===&lt;br /&gt;
&lt;br /&gt;
[[Assemblersprache|Assemblercode]] bietet normalerweise nicht die aus höheren Programmiersprachen bekannten for/while/repeat Konstrukte. Da aber auch hier Schleifen eingesetzt werden müssen (Verzögerung durch aktives Warten (s.&amp;amp;nbsp;u.), serielles adressiertes Verarbeiten von Daten), stehen einfache Sprungbefehle für unbedingte und bedingte Sprünge zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Letztere entscheiden anhand eines Statusflags der CPU (z.&amp;amp;nbsp;B. Zero-Flag), ob gesprungen werden muss. Trifft die Voraussetzung nicht zu, so wird der Programmcounter (PC) einfach um eins erhöht. Es wird dann also als Nächstes der Befehl nach dem bedingten Sprungbefehl ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Beispiel für Code für einen AVR-Mikrocontroller, der unter Verwendung einer Schleife um insgesamt 5000 Takte durch aktives Warten verzögert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
                ; delaying 4998 clocks in 2 loops&lt;br /&gt;
    ldi R0, 7   ; initialisiere äußeren Schleifenzähler mit 7&lt;br /&gt;
Marke1:&lt;br /&gt;
                ; innere Schleife&lt;br /&gt;
    ldi R1, 237 ; initialisiere inneren Schleifenzähler mit 237 (dezimal)&lt;br /&gt;
Marke2:&lt;br /&gt;
    dec R1      ; Vermindert Inhalt in R1 um 1&lt;br /&gt;
    brne Marke2 ; Sprung nur, wenn R1 nun nicht 0 ist. („BRanch if Not Equal to zero“)&lt;br /&gt;
    dec R0      ; äußeren Schleifenzähler um 1 verringern&lt;br /&gt;
    brne Marke1&lt;br /&gt;
                ; delaying additional 2 clocks&lt;br /&gt;
    nop&lt;br /&gt;
    nop&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Häufig gibt es angepasste Assemblerbefehle, die mehrere Aktionen kombinieren („Prüfe Iterator auf Ist-Gleich-…, wenn ungleich springe nach&amp;amp;nbsp;…“, „Zähle Iterator 1 herunter, wenn er noch immer größer 0 ist, springe nach&amp;amp;nbsp;…“). Oft setzen diese voraus, dass ein Zähl-Iterator sich z.&amp;amp;nbsp;B. in einem bestimmten Register befindet.&lt;br /&gt;
&lt;br /&gt;
==== LOOP-Befehl bei der x86-Architektur ====&lt;br /&gt;
Für die [[x86-Architektur]] gibt es einen speziellen &amp;lt;code&amp;gt;LOOP&amp;lt;/code&amp;gt;-Assemblerbefehl. Dieser ist aber nur auf [[Intel 8086|i8086]]- und [[Intel 80286|i80286]]-Prozessoren schneller als eine gleichwertige Kombination aus einem Assemblerbefehl wie bspw. &amp;lt;code&amp;gt;DEC&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;SUB&amp;lt;/code&amp;gt; und einer bedingten [[Sprunganweisung#Sprunganweisungen auf Maschinenebene|Sprunganweisung]] wie bspw. &amp;lt;code&amp;gt;JNZ&amp;lt;/code&amp;gt;. Er sollte daher in Programmcode für CPUs ab dem [[Intel 80386]] nicht mehr verwendet werden.&amp;lt;ref&amp;gt;http://archive.gamedev.net/archive/reference/articles/article369.html Abrash, Michael., Dr. Dobb&amp;#039;s Journal  March 1991 v16&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://jacobfilipp.com/DrDobbs/articles/DDJ/1991/9103/9103a/9103a.htm Abrash, Michael., Dr. Dobb&amp;#039;s Journal  March 1991 v16 - Mit Grafiken.&amp;lt;/ref&amp;gt; Neben dem Geschwindigkeitsvorteil auf CPUs vor dem i386 benötigt er weniger Speicherplatz und führt zu lesbarerem Code.&amp;lt;ref&amp;gt;Assembler Referenz S. 82 Autor Oliver Müller Franzis Verlag ISBN 3-7723-7505-7&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Thomas Rauber, Gudula Rünger: &amp;#039;&amp;#039;Parallele Programmierung.&amp;#039;&amp;#039; 3. Auflage. Springer Verlag, Berlin 2012, ISBN 978-3-642-13603-0.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&amp;lt;!-- * [http://www.statistik.lmu.de/~chris/rkurs/Rkurs3.pdf Bedingte Anweisungen, Schleifen, Funktionen.] (PDF) abgerufen am 1. Oktober 2015 // weder über Archive.org noch über Google auffindbar --&amp;gt;&lt;br /&gt;
* [https://public.urz.uni-heidelberg.de/Ausbildung/Kurse/Csharp/WS03/gkursuA.pdf9 Programmierung mit C# – Grundkurs.] (PDF) abgerufen am 1. Oktober 2015&lt;br /&gt;
* [https://lp.uni-goettingen.de/get/pdf/7406 Programmieren mit Python – erste Schritte.] (PDF) abgerufen am 29. Juni 2018&amp;lt;!-- war _vmtl._ mal http://www.uni-math.gwdg.de/bgr/unterricht/informatik/EinfPython.pdf , vom 1. Oktober 2015 --&amp;gt;&lt;br /&gt;
* {{Webarchiv | url=http://www-m2.ma.tum.de/foswiki/pub/M2/Allgemeines/IntroProgWS14/slides_2_2.pdf | wayback=20151002142405 | text=Einführung in die Programmierung.}} (PDF) abgerufen am 1. Oktober 2015, via archive.org &amp;lt;!-- war: http://www-m2.ma.tum.de/foswiki/pub/M2/Allgemeines/IntroProgWS14/slides_2_2.pdf --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anmerkungen ==&lt;br /&gt;
&amp;lt;references group=&amp;quot;Anm&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ref group=&amp;quot;Anm&amp;quot; name=&amp;quot;Laufbed.&amp;quot;&amp;gt;&lt;br /&gt;
Eine Lauf[[Aussagenlogik|bedingung]] muss erfüllt/wahr sein, damit eine Schleife fortgesetzt wird.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmiersprachelement]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Serols</name></author>
	</entry>
</feed>