<?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=Kontrollfluss</id>
	<title>Kontrollfluss - 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=Kontrollfluss"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Kontrollfluss&amp;action=history"/>
	<updated>2026-06-04T01:55:53Z</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=Kontrollfluss&amp;diff=132981&amp;oldid=prev</id>
		<title>imported&gt;TaxonBot: Bot: Überarbeitung veralteter Syntax / HTML-Validierung</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Kontrollfluss&amp;diff=132981&amp;oldid=prev"/>
		<updated>2021-04-10T11:38:48Z</updated>

		<summary type="html">&lt;p&gt;Bot: Überarbeitung veralteter Syntax / &lt;a href=&quot;/index.php?title=H:LINT&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;H:LINT (Seite nicht vorhanden)&quot;&gt;HTML-Validierung&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Der &amp;#039;&amp;#039;&amp;#039;Kontrollfluss&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Programmablauf&amp;#039;&amp;#039;&amp;#039; bezeichnet in der [[Informatik]] die zeitliche Abfolge der einzelnen [[Anweisung (Programmierung)|Befehle]] eines [[Computerprogramm]]s. Der Kontrollfluss eines Programms ist gewöhnlich durch die Reihenfolge der Befehle innerhalb des Programms vorgegeben, jedoch erlauben [[Kontrollstruktur]]en von der sequenziellen Abarbeitung des Programms abzuweichen. Die Abarbeitungsreihenfolge der einzelnen Befehle, welche das Programm vorgibt, wird von &amp;#039;&amp;#039;&amp;#039;Kontrollflussabhängigkeiten&amp;#039;&amp;#039;&amp;#039; festgelegt: Ein einzelner Befehl wird entweder dann ausgeführt, wenn der unmittelbar vorhergehende Befehl abgearbeitet und der [[Programmzähler]] [[inkrementieren|inkrementiert]] wurde oder wenn ein Sprungbefehl auf die entsprechende Stelle im Speicher zeigt und dem Programmzähler durch den Sprungbefehl ein neuer Wert zugewiesen wird. Beide Kontrollflussabhängigkeiten müssen bei der parallelen Ausführung von Befehlen des Programms berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
== Grundlagen ==&lt;br /&gt;
&lt;br /&gt;
Der geplante Ablauf eines Programmes wird durch einen sogenannten [[Programmablaufplan]] oder auch den [[Kontrollflussgraph]]en dargestellt. Darin sind alle möglichen Verzweigungen innerhalb des Kontrollflusses verzeichnet. Der tatsächliche Kontrollfluss ist nun die Befehlsfolge während einer Ausführung des Programms.&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
&lt;br /&gt;
Betrachtet wird der folgende Ausschnitt aus einem in [[C (Programmiersprache)|C]] implementierten Programm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int i = 0;&lt;br /&gt;
... /* hier kann i irgendwo geändert werden */&lt;br /&gt;
if (i == 5)&lt;br /&gt;
   puts(&amp;quot;i==5&amp;quot;);&lt;br /&gt;
else&lt;br /&gt;
   puts(&amp;quot;i!=5&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Kontrollflussgraph sieht nun wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
{{Stammbaum/Start |style=margin:1em;}}&lt;br /&gt;
{{Stammbaum | | | | |  i  | | | | |i=i=0}}&lt;br /&gt;
{{Stammbaum | | | | | |:| | | | | }}&lt;br /&gt;
{{Stammbaum |  j  |-|  i  |-|  n  |j=Ja |i=i==5? |n=Nein}}&lt;br /&gt;
{{Stammbaum | |!| | | | | | | |!| }}&lt;br /&gt;
{{Stammbaum |  i  | | | | | |  j  |i=i==5\n |j=i!=5\n}}&lt;br /&gt;
{{Stammbaum/Ende}}&lt;br /&gt;
&lt;br /&gt;
Der tatsächliche Kontrollfluss des Programms hängt nun vom konkreten Wert der Variable &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;i&amp;lt;/span&amp;gt; zum Zeitpunkt des Erreichens der &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;-Anweisung ab.&lt;br /&gt;
&lt;br /&gt;
Befindet sich die &amp;lt;span style=&amp;quot;font-family:monospace;&amp;quot;&amp;gt;if&amp;lt;/span&amp;gt;-Anweisung innerhalb einer [[Schleife (Programmierung)|Schleife]], so könnte beim erneuten Schleifendurchlauf der alternative Zweig des Kontrollflussgraphen durchlaufen werden.&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
Die Analyse des Kontrollflusses ist ein Teil der [[Programmanalyse]]. Die Anwendung des Programms auf einen [[Testfall]] führt zu einem bestimmten Kontrollfluss und kann mit dem erwarteten Kontrollfluss verglichen werden. Dadurch lassen sich potentielle Fehler durch falsche Kontrollstrukturen aufspüren. Ebenso kann eine teilweise Bewertung des Testfalles vorgenommen werden. Im optimalen Fall (sofern [[Schleife (Programmierung)|Schleifen]] vorhanden sind) sind alle im Kontrollflussgraph enthaltenen Befehle auch im durch den Testfall erzeugten Kontrollfluss enthalten.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Kontrollfluss (UML)]]&lt;br /&gt;
* [[Abhängigkeitsanalyse]]&lt;br /&gt;
* [[Continuation]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
&lt;br /&gt;
* [[Ole-Johan Dahl|O.-J. Dahl]], [[Edsger W. Dijkstra|E. W. Dijkstra]] &amp;amp; [[Tony Hoare|C. A. R. Hoare]]: &amp;#039;&amp;#039;Structured Programming.&amp;#039;&amp;#039; Academic Press, London 1972, ISBN 0-12-200550-3.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;br /&gt;
&lt;br /&gt;
[[en:Control flow]]&lt;/div&gt;</summary>
		<author><name>imported&gt;TaxonBot</name></author>
	</entry>
</feed>