Kontrollstrukturen
Mit Kontrollstrukturen wird der Ablauf eines Algorithmus gesteuert. Die Darstellung von Kontrollstrukturen kann in Form von
- Pseudo Code,
- Programmablaufplänen oder
- Nassi-Shneiderman-Diagrammen erfolgen.
In den nachfolgenden Beispielen zu den verschieden Darstellungsformen von Kontrollstrukturen wird folgender Sachverhalt dargestellt:
Beispiel:
Für das Seminar "Systemmodellierung" wird Rabatt gewährt, wenn der Kunde bereits mehr als 3 Seminare in diesem Geschäftsjahr bestellt hat, allerdings nur, wenn seine Rechnungen in diesem Geschäftsjahr nie länger als 2 Wochen unbezahlt waren. Der Rabatt beträgt 10% für das normale Seminar und 20% für das Seminar mit dem anschließenden Workshop.
Pseudo Code
Pseudo Code wird in Anlehnung an problemorientierte Programmiersprachen dargestellt. Für die Kontrollstruktur wird die Syntax der Programmiersprachen verwendet (z. B. if - then - else - endif, while - do - end while) , sonstige Anweisungen werden im allgemeinen verbal formuliert.
Ein Algorithmus in Form eines Pseudo Codes kann relativ einfach in die Notation einer Programmiersprache übertragen werden.
Beispiel für Pseudo Code
Programmablaufplan
Die grafische Darstellung von Programmablaufplänen (PAP) ist in DIN 66001 geregelt. Da mit den in der Norm festgelegten Elementen eine strukturierte Programmierung jedoch nicht erzwungen werden kann, werden Kontrollstrukturen heute fast ausschließlich mit Nassi-Shneiderman-Diagrammen beschrieben.
Beispiel für einen Programmablaufplan
Nassi-Shneiderman-Diagramme
Seit Anfang der 70er Jahre die strukturierte Programmierung entwickelt wurde, ist es state of the art, den Kontrollfluß nur mit den Basiskonstrukten
- Sequenz,
- Auswahl,
- Wiederholung und
- Aufruf
zu beschreiben. Die Grundlagen gehen dabei zurück auf äere Arbeiten zum Thema Korrektheitsbeweis für Programme u.a. von Dijkstra.
Allgemeiner wird ein Programm dann als strukturiert" bezeichnet, wenn sein Flußdiagramm mit einer vorgegebenen Menge von Kontrollflußelementen, die nur einen Eingang und einen Ausgang haben, als eine geschachtelte Kombination dieser Elemente dargestellt werden kann.
Die grafische Darstellung erfolgt mit Strukturblöcken, deren Symbole auf Nassi und Shneiderman zurückgehen.
Symbol | Bedeutung |
---|---|
Einfacher Strukturblock | Er repräsentiert eine Reihe von sequentiell abzuarbeitenden Verarbeitungsbefehlen. |
Auswahlstrukturblöcke | Eine Verzweigung gemäß vorgegebener Kriterien. Jeder Zweig stellt wieder einen Strukturblock dar. Die Zweige führen am Ende des Strukturblocks wieder zusammen, d.h. die Unterkante ist als gemeinsamer Ausgang zu verstehen. |
Einfachverzweigung | Bei der Einfachverzweigung wird aufgrund der Auswertung der Bedingung die true- oder die false-Aktion durchgeführt. |
Mehrfachverzweigung | Bei der Mehrfachverzweigung wird der Inhalt einer Variablen mit vorgegebenen Werten verglichen. Es wird die dem Wert zugeordnete Aktion durchlaufen. |
Wiederholungsstrukturblöcke | Der Wiederholungsstrukturblock zeigt die Wiederholung eines Prozesses - des Schleifenrumpfes - in Abhängigkeit von einer Bedingung. |
precheck loop | Bei dieser Art der Schleife erfogt die Prüfung der Schleifenbedingung vor
Durchlauf des Schleifenrumpfes. Die Schleife wird solange durchlaufen, wie die Bedingung
erfüllt ist. Der Rumpf kann auch gar nicht durchlaufen werden. |
postcheck loops | Die Prüfung auf die Abbruchbedingung erfolgt innerhalb (oder am Ende)
der Schleife. Hier wird der Schleifenrumpf oder der erste Teil mindestens einmal durchlaufen. Ist die Abbruchbedingung nicht erfüllt, dann wird der Rest des Schleifenrumpfes durchlaufen und anschließend mit dem ersten teil des Schleifenrumpfes wieder begonnen. Wenn die Abbruchbedingung erfüllt ist, wird sofort zum Schleifenende verzweigt. |
Elementare Nassi-Shneiderman-Konstrukte
Beispiel für ein Nassi-Shneiderman-Diagramm