Impressum
< Prozess Ablauf Plan (PAP) Inhalt PAPs in Assembler umsetzen >

Umsetzen von Kontrollstrukturen

Umsetzen von Struktogrammen in ein PAP

Die If-Anweisungen

Ein if und if-else Konstrukt wie in Abbildung 1 und Abbildung 2 dargestellt bedeutet, dass der If-Teil nur ausgeführt wird, wenn die Bedingung wahr ist. Ist die Bedingung nicht erfüllt, so wird der Else-Teils ausgeführt, falls er vorhanden ist. Danach ist die If-Anweisung zu ende und es wird mit der nächsten Anweisung fortgefahren. In einem PAP benötigt man für die Verzweigung eine Raute, welche abhängig von der Bedingung zum If-Teil (bei Erfüllung) bzw. zum Else-Teil (bei Nichterfüllung) verzweigt.
Nach Durchlauf der beiden Teile wird der getrennte Ausführungspfad wieder vereint.
if if-else
Abb. 1: if Abb. 2: if-else

Die Do-While-Schleife

Eine do-while-Schleife wird mindestens einmal durchlaufen. Am Ende der Schleife wird überprüft, ob ein weiterer Druchlauf erfolgt. In einem PAP werden somit erst die Anweisungen im Schleifenrumpf durchlaufen und am Ende mit einer Verzweigung überprüft ob nochmal zum Anfang der Schleife gesprungen wird oder ob die Schleife beendet ist.
do-while
Abb. 3: do-while Schleife

Die While-Schleife

Eine while-Schleife wird evtl. gar nicht druchlaufen. Dies liegt daran, dass hier zu Beginn der Schleife überprüft wird ob ein weiterer Schleifendurchlauf erfolgt. Ist die Bedingung beim ersten Mal nicht erfüllt, wird die Schleife nie durchlaufen. Die maximale Anzahl an Durchläufen ist unendlich (z.B. wenn die Bedingung true ist).
In einem PAP erreicht man das gleiche Verhalten, wenn man mit einer Verzweigung beginnt, welche bei nicht erfüllter Bedingung den Schleifenrumpf überspringt. Nach jedem Durchlauf des Rumpfes springt die Schleife wieder an den Anfang der Schleife, also vor den Test eines weiteren Druchlaufs.
while
Abb. 4: while Schleife

Die For-Schleife

Da eine for-Schleife nichts anderes ist als eine while-Schleife, welche vor der Schleife einen Initialisierungsblock hat und am Schleifenende einen zusätzlichen Anweisungsblock aufweist ist die Umsetzung einer solchen Schleife analog zu while-Schleife. Abbildung 5 zeigt ein Struktogramm einer for-Schleife, so wie eine äquivalente while-Schleife als Struktogramm. Der zugehörige PAP ist im Prinzip eine Umsetzung dieser
for
Abb. 5: for Schleife

Umsetzung von zusammengesetzten Bedingugen

In vielen Fällen ist die Bedingung anhand derer verzweigt wird komplexer. So müssen z.B. zwei Teilbedingugen erfüllt sein, d.h. ein Codeteil wird nur dann ausgeführt, wenn Bedingung 1 und Bedingung 2 erfüllt sind. Ist eine der beiden nicht erfüllt, so wird das Programm an anderer Stelle fortgesetzt. Abbildung 6 zeigt auf der rechten Seite einen PAP mit einer zusammengesetzen Bedingung. Um diese in Assembler umsetzten zu können ist es nötig diesen PAP so umzusetzten, dass eine Verzeweigung immer nur eine Bedingung beinhaltet. Bei einer Und-Verknüpfung geschieht dies, indem man zuerst den ersten Teil überprüft. Ist diese Teilbedingung erfüllt, testet man die zweite Teilbedingung. Sind beide Tests erfolgreich so wird der entsprechende Codeblock angesprungen. Schlägt einer der beiden Test fehl, so wird zum alternativen Codeblock gesprungen.
und Verknüpfung
Abb. 6: Und-Verknüpfung
Eine Oder-Verknüpfung zwischen zwei Bedingungen wird ähnlich umgesetzt. Dies zeigt Abbildung 7. Hier wird die erste Teilbedingung überprüft, ist diese wahr, so wird sofort der entsprechende Codeblock angesprungen. Schlägt der Test fehl, so wird die zweite Teilbedingung überprüft. Ist diese wahr so wird ebenfalls der erste Codeblock angesprungen. Nur wenn beide Bedingungen nicht erfüllt sind wird der Alternative Codeblock angesprungen.
oder Verknüpfung
Abb. 7: Oder-Verknüpfung
Viele Bedingungen sind Kombinationen aus Und- und Oder-Verknüpfungen, wie z.B. in Abbildung 8a. Um diese in einen PAP mit atomaren Verzweigungen umzuwandeln geht man schrittweise vor. Zuerst wird in dem Beispiel von Abbildung 8 die innere Oder-Verknüpfung umgesetzt. Dies geschieht nach dem oben beschriebenen Schema und führt zu Abbildung 8b. Hier sind die verbliebenen Und-Verknüpfungen hell- und dunkel-blau dargestellt.
Für jede dieser Und-Verknüpfungen wird nun das oben dargestellte Schema zur Zerlegung von Und-Verknüpfungen verwendet. Das Resultat ist in Abbildung 8c zu sehen.
Große zusammengesetzte Terme lassen sich mit diesen Schemata Stück für Stück in atomare Verzweigungen umsetzen. Die entstehenden PAP sind dann viel einfacher in Assemblerprogramme überführbar.
Verschachteltes Und/Oder
Abb. 8: Kombination von Und und Oder