====== Struktogramme ====== ---- ===== Einleitung ===== Struktogramme oder Nassi-Schneiderman-Diagramme wurden im Jahre 1973 zur Darstellung und Beschreibung von Programmabläufen entwickelt. Dabei wird ein sequenzielles Programmcode durch genormte Strukturblöcke visuell dargestellt. Ein besonderer Vorteil von Struktogrammen ist, dass die Strukturblöcke direkt in eine gewünschte Programmiersprache umgewandelt werden können. Tool zur Erstellung von Struktogrammen auf unterschiedlichen Plattformen: * [[https://structorizer.fisch.lu/index.php?include=downloads]] ===== Strukturblöcke ===== === Linearer Ablauf (Sequenz) === * Jede Anweisung wird in einen rechteckigen Strukturblock geschrieben * Ein leerer Strukturblock ist bei einer Sequenz nicht zulässig. Sie können jedoch bei Verzweigungen auftreten. {{ :struk_linearer_ablauf2.png?nolink&400 |}} === Verzweigung (bedingte Verarbeitung) === * Der Anweisungsblock 1 wird nur dann durchgeführt, wenn die Bedingung zutreffend ist (wahr, True, logisch 1). Ist die Bedingung jedoch nicht zutreffend (falsch, False, logisch 0), so wird der Durchlauf ohne eine weitere Anweisung fortgeführt. {{ :struk_verzweigung22.png?nolink&400 |}} === Verzweigung (alternative Verarbeitung) === * Der Anweisungsblock 1 wird nur dann ausgeführt, wenn die Bedingung zutreffend ist (wahr, True, logisch 1). Ist jedoch die Bedingung nicht zutreffend, so wird der Anweisungsblock 2 ausgeführt. {{ :struk_verzweigung33.png?nolink&400 |}} === Mehrfachauswahl (Verschaltete Verzweigung) === * Bei einer Mehrfachauswahl werden Anweisungsblöcke nur dann ausgeführt, wenn mehrere Bedingungen zutreffend sind. {{ :struk_mehrfachauswahl22.png?nolink&600 |}} * Anweisung 1 wird ausgeführt, wenn Bedingung 1 und Bedingung 2 zutreffen. * Anweisung 2 wird ausgeführt, wenn Bedingung 1 zutrifft, Bedingung 2 nicht zutrifft und Bedingung 3 zutrifft. * Anweisung 3 wird ausgeführt, wenn Bedingung 1 zutrifft, Bedingung 2 und Bedingung 3 nicht zutreffen. * Anweisung 4 wird ausgeführt, wenn Bedingung 1 nicht zutrifft. === Zählergesteuerte Schleife (Iteration, Wiederholung) === * Bei einer Zählergesteuerten Schleife ist die Anzahl der Durchläufe festgelegt. * Die Zähl-/ Lauf-Variable muss mit einem Startwert initialisiert, der Endwert und die Zählschritte ebenso angegeben werden. * Bei jeder Iteration wird die Zähl-/ Lauf-Variable um die Zählschritte erhöht. * Die Schleife kann ohne Berücksichtigung der Durchläufe mit einer break-Anweisung verlassen werden. {{ :struk_for_schleife.png?nolink&400 |}} Anweisung 1 wird insgesamt fünf Mal nacheinander ausgeführt, da die Laufvariable von zwei bis zehn in zweierschritten hochgezählt wird (2, 4, 6, 8, 10). === Abweisende Schleife (while-Schleife, kopfgesteuert) === * Die Schleife wird so lange wiederholt, bis die Bedingung nicht mehr zutreffend ist * Vor einer Schleifendurchlauf wird die Bedingung überprüft * Kann mit ohne Berücksichtigung der Bedingung mit einer break-Anweisung verlassen werden {{ :struk_while_schleife.png?nolink&400 |}} === Endlosschleife === * Die Schleife wird endlos wiederholt und kann nur mit einer break-Anweisung verlassen werden. {{ :struk_endlosschleife.png?nolink&400 |}}