4 Kontrollflussdiagramme 4 Kontrollflussdiagramme In welcher Weise, Programmteile nacheinander ausgeführt werden kann anschaulich durch Kontrollflussdiagramme dargestellt werden. Zutaten: start stop Startknoten Endknoten x=read() write(y) x=x-y Eingabe Ausgabe Zuweisung Kante Zusammenlauf no x<y yes bedingte Verzweigung 4 Kontrollflussdiagramme Harald Räcke 59 4 Kontrollflussdiagramme Harald Räcke 60 4 Kontrollflussdiagramme Beispiel: start int x, y; x = read(); y = read(); while (x != if (x < y = else x = } write(x); GGT ñ Die Ausführung des Programms entspricht einem Pfad durch das Kontrollflussdiagramm vom Startknoten zum Endknoten. ñ Die Deklaration von Variablen muss man sich am Startknoten vorstellen. ñ Die auf dem Pfad liegenden Knoten (außer Start- und Endknoten) sind Operationen bzw. auszuwertende Bedingungen. ñ Um den Nachfolger an einem Verzweigungsknoten zu bestimmen, muss die Bedingung mit den aktuellen Werten der Variablen ausgewertet werden. ( operationelle Semantik) x=read() y=read() y) { y) y - x; no yes x != y x - y; write(x) stop no x=x-y x<y yes y=y-x 4 Kontrollflussdiagramme Harald Räcke 4 Kontrollflussdiagramme 61 Harald Räcke 62 4 Kontrollflussdiagramme 4 Kontrollflussdiagramme x==6, y==6 start x=read() ñ zu jedem MiniJava-Programm lässt sich ein Kontrollflussdiagramm konstruieren; ñ die Umkehrung gilt auch, liegt aber nicht sofort auf der Hand y=read() Animation ist nur in der no yes x != y Vorlesungsversion der Folien vorhanden. no write(x) x<y yes x=x-y stop Die Umkehrung wäre sehr einfach zu bewerkstelligen, wenn wir in einem MiniJava-Programm goto-Befehle benutzen dürften, d.h. wenn wir von jedem Punkt zu jedem anderen innerhalb des Programms springen könnten. Die obige Aussage bedeutet im Prinzip, dass man goto-Befehle immmer durch geeignete Schleifen ersetzen kann. y=y-x 4 Kontrollflussdiagramme 4 Kontrollflussdiagramme Harald Räcke 63 4 Kontrollflussdiagramme start read no yes ifA assA no ifB yes assB no ifC yes out stop Harald Räcke 64