Kontrollfluss
Der Kontrollfluss oder Programmablauf bezeichnet in der Informatik die zeitliche Abfolge der einzelnen Befehle eines Computerprogramms. Der Kontrollfluss eines Programms ist gewöhnlich durch die Reihenfolge der Befehle innerhalb des Programms vorgegeben, jedoch erlauben Kontrollstrukturen von der sequenziellen Abarbeitung des Programms abzuweichen. Die Abarbeitungsreihenfolge der einzelnen Befehle, welche das Programm vorgibt, wird von Kontrollflussabhängigkeiten festgelegt: Ein einzelner Befehl wird entweder dann ausgeführt, wenn der unmittelbar vorhergehende Befehl abgearbeitet und der Programmzähler 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.
Grundlagen
Der geplante Ablauf eines Programmes wird durch einen sogenannten Programmablaufplan oder auch den Kontrollflussgraphen 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.
Beispiel
Betrachtet wird der folgende Ausschnitt aus einem in C implementierten Programm:
int i = 0;
... /* hier kann i irgendwo geändert werden */
if (i == 5)
puts("i==5");
else
puts("i!=5");
Der Kontrollflussgraph sieht nun wie folgt aus:
| i=0 | |||||||||||||||||||||
| Ja | i==5? | Nein | |||||||||||||||||||
| i==5\n | i!=5\n | ||||||||||||||||||||
Der tatsächliche Kontrollfluss des Programms hängt nun vom konkreten Wert der Variable i zum Zeitpunkt des Erreichens der if-Anweisung ab.
Befindet sich die if-Anweisung innerhalb einer Schleife, so könnte beim erneuten Schleifendurchlauf der alternative Zweig des Kontrollflussgraphen durchlaufen werden.
Anwendung
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 Schleifen vorhanden sind) sind alle im Kontrollflussgraph enthaltenen Befehle auch im durch den Testfall erzeugten Kontrollfluss enthalten.
Siehe auch
Literatur
- O.-J. Dahl, E. W. Dijkstra & C. A. R. Hoare: Structured Programming. Academic Press, London 1972, ISBN 0-12-200550-3.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.