<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Nassi-Shneiderman-Diagramm</id>
	<title>Nassi-Shneiderman-Diagramm - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Nassi-Shneiderman-Diagramm"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Nassi-Shneiderman-Diagramm&amp;action=history"/>
	<updated>2026-06-23T12:12:26Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Nassi-Shneiderman-Diagramm&amp;diff=63781&amp;oldid=prev</id>
		<title>imported&gt;CodeFFM: Der Link auf https://www.engelfrank.de/images/PDF/Informatik_11/Struktogramme.pdf Struktogramme.pdf funktioniert nicht. Die Seite hat auch kein Inhalt mehr. Das heißt ich konnte dort auch keinen neuen Link finden. Daher habe ich den Link entfernt.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Nassi-Shneiderman-Diagramm&amp;diff=63781&amp;oldid=prev"/>
		<updated>2026-04-24T15:34:00Z</updated>

		<summary type="html">&lt;p&gt;Der Link auf https://www.engelfrank.de/images/PDF/Informatik_11/Struktogramme.pdf Struktogramme.pdf funktioniert nicht. Die Seite hat auch kein Inhalt mehr. Das heißt ich konnte dort auch keinen neuen Link finden. Daher habe ich den Link entfernt.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Norm&lt;br /&gt;
|Typ= DIN&lt;br /&gt;
|Nummer= 66261&lt;br /&gt;
|Bereich= Programmierung&lt;br /&gt;
|Titel= Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi-Shneiderman&lt;br /&gt;
|Beschreibung= Struktogramme&lt;br /&gt;
|Stand= 1985-11&lt;br /&gt;
|ICS= 01.080.50, 35.020&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Ein &amp;#039;&amp;#039;&amp;#039;Nassi-Shneiderman-Diagramm&amp;#039;&amp;#039;&amp;#039; ist ein Diagrammtyp zur Darstellung von Programmentwürfen im Rahmen der Methode der [[Strukturierte Programmierung|strukturierten]] [[Programmierung]]. Es wurde 1972/1973 von [[Isaac Nassi]] und [[Ben Shneiderman]] entwickelt und ist in der [[DIN-Norm]] 66261 festgelegt.&lt;br /&gt;
&lt;br /&gt;
Da Nassi-Shneiderman-Diagramme Programmstrukturen und [[Kontrollstruktur]]en darstellen, werden sie auch als &amp;#039;&amp;#039;&amp;#039;Struktogramme&amp;#039;&amp;#039;&amp;#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Die [[Strukturierte Programmierung]] zerlegt das Gesamtproblem, das man mit dem gewünschten [[Algorithmus]] lösen will, in immer kleinere Teilprobleme – bis schließlich nur noch elementare Grundstrukturen wie Sequenzen und [[Kontrollstruktur]]en zur Lösung des Problems übrig bleiben. Diese können dann durch ein Nassi-Shneiderman-Diagramm visualisiert werden. Die Vorgehensweise entspricht der sogenannten [[Top-Down- und Bottom-Up-Design|Top-down]]-Programmierung, in der zunächst ein Gesamtkonzept entwickelt wird, das dann durch eine Verfeinerung der Strukturen des Gesamtkonzeptes aufgelöst wird.&lt;br /&gt;
&lt;br /&gt;
[[Corrado Böhm|Böhm]] und Jacopini haben 1966 nachgewiesen, dass sich jeder beliebige Algorithmus ohne unbedingte [[Sprunganweisung]] (GOTO) formulieren lässt. Für Nassi-Shneiderman-Diagramme lassen sich trivial die Kontrollstrukturen moderner [[Programmiersprache]]n finden; für [[Programmablaufplan|Programmablaufpläne]] kann dies wesentlich schwieriger sein.&lt;br /&gt;
&lt;br /&gt;
== Sinnbilder nach Nassi-Shneiderman ==&lt;br /&gt;
Die meisten der nachfolgenden Strukturblöcke&amp;lt;ref&amp;gt;{{cite web|title=Flowchart Techniques for Structured Programming|author=Nassi, I.; Shneiderman, B.|url=http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/1973.pdf |language=en|publisher=SIGPLAN Notices XII|date=1973-08|accessdate=2016-06-03}}&amp;lt;/ref&amp;gt; können ineinander geschachtelt werden. Das aus den unterschiedlichen Strukturblöcken zusammengesetzte Struktogramm ist im Ganzen rechteckig, also genauso breit wie sein breitester Strukturblock.&lt;br /&gt;
&lt;br /&gt;
=== Process Symbol ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:lineareAnw.png|ohne|Anweisung]]&lt;br /&gt;
|&lt;br /&gt;
Jede [[Anweisung (Programmierung)|Anweisung]] wird in einen rechteckigen Strukturblock geschrieben. Die Strukturblöcke werden nacheinander von oben nach unten durchlaufen. Leere Strukturblöcke sind nur in Verzweigungen zulässig.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Folge, Befehlsfolge, Anweisungsfolge, Anweisungsblock, Linearer Ablauf, Sequenz.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Decision Symbol ===&lt;br /&gt;
{{Hauptartikel|Bedingte Anweisung und Verzweigung}}&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Verzweigung, Alternative, Selektion.&lt;br /&gt;
&lt;br /&gt;
==== Ein möglicher Block ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:einfAusw.png|ohne|Einfache Auswahl]]&lt;br /&gt;
|&lt;br /&gt;
Nur wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock&amp;amp;nbsp;1 durchlaufen (&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;). Ein Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Trifft die Bedingung nicht zu (falsch), wird der Durchlauf ohne eine weitere Anweisung fortgeführt (Austritt unten).&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Bedingte Verarbeitung, Einfache Auswahl/Selektion, Einfache Verzweigung.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Zwei mögliche Blöcke ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:zweifAusw.png|ohne|Zweifache Auswahl]]&lt;br /&gt;
|&lt;br /&gt;
Wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock&amp;amp;nbsp;1 durchlaufen; trifft die Bedingung nicht zu (falsch), wird der Anweisungsblock&amp;amp;nbsp;2 durchlaufen (&amp;lt;code&amp;gt;if then else&amp;lt;/code&amp;gt;). Ein Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Austritt unten nach Abarbeitung des jeweiligen Anweisungsblocks.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Einfache Alternative, Zweifache Auswahl, Alternative Verzweigung/Verarbeitung.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Beispiel für Verschachtelung ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:MehrfAusw.png|ohne|Mehrfachauswahl]]&lt;br /&gt;
|&lt;br /&gt;
Es folgt eine weitere Bedingung. Die Verschachtelung ist ebenso im Nein-Fall noch möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Case-Statement ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:NassiShneiderman-case.svg|320px]]&lt;br /&gt;
|&lt;br /&gt;
Der Wert von „Variable“ kann bedingt auf Gleichheit (Switch Case in Java) aber auch auf Bereiche (größer/kleiner bei Zahlen) geprüft werden. Der entsprechend zutreffende „Fall“ mit dem zugehörigen Anweisungsblock wird durchlaufen (&amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;select&amp;lt;/code&amp;gt;). Eine Fallauswahl kann stets in eine verschachtelte Auswahl umgewandelt werden – etwa wenn die später eingesetzte Programmiersprache Fallauswahlen nicht kennt.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Mehrfache Alternative, Fallauswahl, Mehrfachauswahl, Case, Select.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Schleifen ===&lt;br /&gt;
{{Hauptartikel|Schleife (Programmierung)}}&lt;br /&gt;
&lt;br /&gt;
==== Iteration Symbol ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:Zaehlschleife.png|ohne|Zählergesteuerte Schleife]]&lt;br /&gt;
|&lt;br /&gt;
Wiederholungsstruktur, bei der die Anzahl der Durchläufe festgelegt ist (&amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;). Als Bedingung muss eine Zählvariable angegeben und mit einem Startwert initialisiert werden. Ebenso muss ein Endwert und die (Zähl-)Schrittweite angegeben werden. Nach jedem Durchlauf des Schleifenkörpers (Anweisungsblock&amp;amp;nbsp;1) wird die Zählvariable um die Schrittweite inkrementiert (bzw. bei negativer Schrittweite dekrementiert) und mit dem Endwert verglichen. Ist der Endwert überschritten bzw. unterschritten, wird die Schleife verlassen.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Zählergesteuerte Schleife.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Begin-End Symbol ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:NassiShneiderman-BeginEnd.png]]&lt;br /&gt;
|&lt;br /&gt;
Hier handelt es sich um Schleifen, wie man sie in [[PL/I]] und [[ALGOL]] findet. Sie zeichnen sich durch zwei Bedingungen aus.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Wiederholung mit Bedingungsprüfung, prüfende Schleife.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sonderfall: End=true ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:kopfgesteuerteSchleife.png|ohne|Abweisende (kopfgesteuerte) Schleife]]&lt;br /&gt;
|&lt;br /&gt;
Wiederholungsstruktur mit vorausgehender Bedingungsprüfung (&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Schleifenanweisung: (&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Abbruchanweisung: automatisch, wenn vorausgehende Bedingungsprüfung der geprüften Expression = falsch&lt;br /&gt;
&lt;br /&gt;
Der Schleifenkörper (Anweisungsblock&amp;amp;nbsp;1) wird nur durchlaufen, wenn (und solange) die Bedingung zutreffend (wahr) ist. Diese Symbolik wird auch für die Zählschleife (Anzahl der Durchläufe bekannt) benutzt.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Wiederholung mit vorausgehender Bedingungsprüfung, Abweisende/vorprüfende/kopfgesteuerte Schleife.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sonderfall: Begin=true ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:fussgesteuerteSchleife.png|ohne|Abweisende (fußgesteuerte) Schleife]]&lt;br /&gt;
|&lt;br /&gt;
Wiederholungsstruktur mit nachfolgender Bedingungsprüfung für den Abbruch (&amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Schleifenanweisung: &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abbruchanweisung: automatisch, wenn nachfolgende Bedingungsprüfung der Expression = falsch&lt;br /&gt;
&lt;br /&gt;
Der Schleifenkörper (Anweisungsblock&amp;amp;nbsp;1) wird mindestens einmal durchlaufen, auch wenn die Bedingung von Anfang an nicht zutreffend (falsch) war.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Wiederholung mit nachfolgender Bedingungsprüfung, Nicht abweisende/nachprüfende/fußgesteuerte Schleife.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Sonderfall: Begin=End=true ====&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:Endlosschleife.png|ohne|Endlosschleife]]&lt;br /&gt;
|&lt;br /&gt;
Wiederholungsstruktur, die allenfalls durch eine Abbruchanweisung (&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;) verlassen werden kann.&lt;br /&gt;
&lt;br /&gt;
Schleifenanweisung: &amp;lt;code&amp;gt;while(true)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abbruchanweisung: &amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Wiederholung ohne Bedingungsprüfung, Endlosschleife.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Break ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:Aussprung.png|ohne|Aussprung]]&lt;br /&gt;
|&lt;br /&gt;
Der Aussprung (&amp;lt;code&amp;gt;break&amp;lt;/code&amp;gt;; auch &amp;lt;code&amp;gt;Exit&amp;lt;/code&amp;gt; genannt) stellt die Beendigung eines Programmteils dar. Er sollte nicht mit der unbedingten [[Sprunganweisung]] (&amp;lt;code&amp;gt;goto&amp;lt;/code&amp;gt;) verwechselt werden, die Nassi und Shneiderman mit den Struktogrammen vermeiden wollten.&lt;br /&gt;
&lt;br /&gt;
Alternative Begriffe: Abbruchanweisung, Aussprung.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Blockaufruf ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:Aufruf.png|ohne|Aufruf]]&lt;br /&gt;
|&lt;br /&gt;
Symbol für den Aufruf eines [[Unterprogramm]]s bzw. einer [[Prozedur (Programmierung)|Prozedur]], [[Funktion (Programmierung)|Funktion]] oder [[Methode (Programmierung)|Methode]]. Nach deren Durchlauf wird zu der aufrufenden Stelle zurückgesprungen und der nächstfolgende Strukturblock durchlaufen. Dieses Symbol ist nicht genormt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Parallel-Processing Symbol ===&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|[[Datei:NassiShneiderman-Parallel.svg]]&lt;br /&gt;
|&lt;br /&gt;
Symbol für den [[Nebenläufigkeit|nebenläufigen]] Ablauf von mehreren Blöcken.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Füllregeln ==&lt;br /&gt;
=== Allgemeingültigkeit ===&lt;br /&gt;
Struktogramme sollten keine programmiersprachenspezifische Befehlssyntax enthalten. Sie müssen so programmiersprachenunabhängig formuliert werden, dass die dargestellte Logik einfach zu verstehen und als Codiervorschrift in jede beliebige Programmiersprache umzusetzen ist.&lt;br /&gt;
&lt;br /&gt;
=== Deklaration ===&lt;br /&gt;
Weil sie ursprünglich für prozedurale Programmiersprachen entwickelt wurden, bildete man in Struktogrammen nur die Prozedur und keine Deklarationsbereiche von Variablen und Konstanten ab (einfaches Struktogramm). Dadurch ist jedoch nicht sofort deutlich, welcher Datentyp einer Variablen zugeordnet werden muss. Die Deklaration von Variablen und Konstanten ist im ersten Anweisungsblock vorzunehmen. Diese Nassi-Shneiderman-Diagramme bezeichnet man dann als erweiterte Struktogramme.&lt;br /&gt;
&lt;br /&gt;
=== Exklusivität ===&lt;br /&gt;
Jede Anweisung erhält einen eigenen Strukturblock (Sinnbilder nach [[DIN-Norm|DIN]] 66261). Selbst mehrere Anweisungen gleicher oder ähnlicher Art dürfen nicht in einem Strukturblock zusammengefasst werden.&lt;br /&gt;
&lt;br /&gt;
Jede Anweisung muss mindestens aus einer Zuweisung bestehen (beispielsweise &amp;#039;&amp;#039;Zielvariable&amp;#039;&amp;#039;&amp;amp;nbsp;←&amp;amp;nbsp;&amp;#039;&amp;#039;Zielvariable&amp;#039;&amp;#039;&amp;amp;nbsp;*&amp;amp;nbsp;&amp;#039;&amp;#039;AndereVariable&amp;#039;&amp;#039;). Eine Zuweisung wird durch einen nach links gerichteten Pfeil dargestellt. Ältere Struktogramme benutzen alternativ aus alten [[Pascal (Programmiersprache)|Pascal]]-Zeiten als Zuweisungszeichen den Doppelpunkt gefolgt vom Gleichheitszeichen (&amp;#039;&amp;#039;Zielvariable&amp;#039;&amp;#039;&amp;amp;nbsp;:=&amp;amp;nbsp;&amp;#039;&amp;#039;Zielvariable&amp;#039;&amp;#039;&amp;amp;nbsp;*&amp;amp;nbsp;&amp;#039;&amp;#039;AndereVariable&amp;#039;&amp;#039;). Das Ziel einer Anweisung steht immer links vom Zuweisungszeichen. Rechts davon steht die Quelle.&lt;br /&gt;
&lt;br /&gt;
Über jedes Struktogramm gehört ein Name, um die Identifikation durch Ereignis- oder (Unter-)Programmaufrufe gewährleisten zu können.&lt;br /&gt;
&lt;br /&gt;
== Praxisrelevanz ==&lt;br /&gt;
In der [[Softwareentwicklung]] werden Nassi-Shneiderman-Diagramme heute selten eingesetzt. Dort werden vorrangig erweiterte [[Programmablaufplan|Programmablaufpläne]] ([[Aktivitätsdiagramm]]e der [[UML]]) verwendet.&lt;br /&gt;
&lt;br /&gt;
Im Informatik-Unterricht der [[Sekundarstufe II]] werden Struktogramme verwendet, damit Schüler den Aufbau logischer Abläufe, die für die Programmierung nötig sind, trainieren können. Die Erstellung von Struktogrammen aufgrund von Beschreibungen betrieblicher Problemstellungen, die wegen wiederkehrender gleicher Vorgehensweise automatisiert werden können, ist immer noch Bestandteil vieler schulischer Abschlussprüfungen.&lt;br /&gt;
&lt;br /&gt;
In der Entwicklungsumgebung [[EasyCODE]] wird direkt anhand von Nassi-Shneiderman-Diagrammen der Programmfluss festgelegt.&lt;br /&gt;
&lt;br /&gt;
Nassi-Shneiderman-Diagramme können auch in [[Technische Dokumentation|technischer Dokumentation]] eingesetzt werden.&amp;lt;ref&amp;gt;Weiss, Edmond H.: &amp;#039;&amp;#039;Visualizing a Procedure with Nassi-Schneiderman Charts.&amp;#039;&amp;#039; &amp;#039;&amp;#039;Journal of Technical Writing and Communication&amp;#039;&amp;#039;, Vol. 20, Nr. 3 (1990): 237–254.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Programmiersprache [[Scratch (Programmiersprache)|Scratch]] stellt Programme visuell als Struktogramme dar.&lt;br /&gt;
&lt;br /&gt;
== Beispieldiagramme ==&lt;br /&gt;
=== Einfaches Struktogramm ===&lt;br /&gt;
Das folgende Beispiel zeigt den Ablauf des [[Euklidischer Algorithmus|euklidischen Algorithmus]] zur Berechnung des [[Größter gemeinsamer Teiler|größten gemeinsamen Teilers]] zweier Zahlen.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!als Nassi-Shneiderman-Diagramm …&lt;br /&gt;
!… und in [[Python (Programmiersprache)|Python]]:&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;bottom&amp;quot; | [[Datei:NassiShneiderman.png|ohne|Beispiel eines Nassi-Shneiderman Diagramms]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def GGT(a, b):&lt;br /&gt;
    while a &amp;gt; 0 and b &amp;gt; 0:&lt;br /&gt;
        if a &amp;gt; b:&lt;br /&gt;
            a -= b&lt;br /&gt;
        else:&lt;br /&gt;
            b -= a&lt;br /&gt;
&lt;br /&gt;
    if b == 0:&lt;br /&gt;
        return a&lt;br /&gt;
    else:&lt;br /&gt;
        return b&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Erweitertes Struktogramm ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;als Nassi-Shneiderman-Diagramm …&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Datei:struktErweitert.png|ohne|Beispiel eines erweiterten Nassi-Shneiderman Diagramms]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;…&amp;amp;nbsp;und die Umsetzung in [[Visual Basic for Applications|VBA]]:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
  Option Explicit&lt;br /&gt;
  Private Sub btnZensur_Click()&lt;br /&gt;
    Dim intZensur As Integer, strZensur As String&lt;br /&gt;
    intZensur = InputBox(&amp;quot;Geben Sie die Zensur als Zahl ein.&amp;quot;)&lt;br /&gt;
    Select Case intZensur&lt;br /&gt;
       Case 1: strZensur = &amp;quot;sehr gut&amp;quot;&lt;br /&gt;
       Case 2: strZensur = &amp;quot;gut&amp;quot;&lt;br /&gt;
       Case 3: strZensur = &amp;quot;befriedigend&amp;quot;&lt;br /&gt;
       Case 4: strZensur = &amp;quot;ausreichend&amp;quot;&lt;br /&gt;
       Case 5: strZensur = &amp;quot;mangelhaft&amp;quot;&lt;br /&gt;
       Case 6: strZensur = &amp;quot;ungenügend&amp;quot;&lt;br /&gt;
       Case Else: strZensur = &amp;quot;ungültig&amp;quot;&lt;br /&gt;
    End Select&lt;br /&gt;
    MsgBox &amp;quot;Ihre eingegebene Zensur in Worten: &amp;quot; &amp;amp; strZensur&lt;br /&gt;
  End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Freie Struktogramm-Editoren ==&lt;br /&gt;
* Struktog.: Struktogrammeditor - Lehrstuhl für Didaktik der Informatik der TU Dresden (DDI)&amp;lt;ref&amp;gt;https://ddi.education/struktog/ Struktog.&amp;lt;/ref&amp;gt;&lt;br /&gt;
* sbide: Javascript-basierter Struktogrammeditor mit C-Code-Generierung und Simulator zur Visualisierung des Programmablaufs&amp;lt;ref&amp;gt;[http://www.sbide.de/ sbide.de]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Structorizer: Open-source Struktogramm-Editor für Windows/Linux/Mac&amp;lt;ref&amp;gt;[https://structorizer.fisch.lu/ structorizer.fisch.lu]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Struktograf&amp;lt;ref&amp;gt;[https://www.struktograf.de/ struktograf.de]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Struktogrammer&amp;lt;ref&amp;gt;[https://struktogrammer.ch/Web_files/page1_JavaVersion.html struktogrammer.ch]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Struktogrammeditor (whiledo)&amp;lt;ref&amp;gt;[https://www.whiledo.de/index.php?p=struktogrammeditor whiledo.de]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Hamster-Struktogrammeditor (HaSE): Ergänzung zum Hamster-Simulator des [[Java-Hamster-Modell|Java-Hamster-Modells]].&amp;lt;ref&amp;gt;[http://www.java-hamster-modell.de/hase.html java-hamster-modell.de]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Programmablaufplan]] (PAP, Flowchart)&lt;br /&gt;
* [[Jackson-Diagramm]]&lt;br /&gt;
* [[Pseudocode]]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{DNB-Portal|4125636-0|TEXT=Literatur zum}}&lt;br /&gt;
* {{cite web|url=http://wwwlrh.fh-bielefeld.de/IN_Prak/inprak6.htm|title=DIN 66261: Sinnbilder für Struktogramme nach Nassi-Shneiderman|publisher=[[FH Bielefeld]]|accessdate=2016-06-02|archiveurl=https://web.archive.org/web/20070928094836/http://wwwlrh.fh-bielefeld.de/IN_Prak/inprak6.htm|archivedate=2007-09-28}}&lt;br /&gt;
* [https://informatik-bg.de/programmieren/struktogramme Struktogramme erstellen] - Seite mit Lernvideos zum Struktogrammer&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4125636-0|REMARK=Ansetzungsform GND: „Struktogramm“.}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Diagramm]]&lt;/div&gt;</summary>
		<author><name>imported&gt;CodeFFM</name></author>
	</entry>
</feed>