Nassi-Shneiderman-Diagramm - HTL Wien 10
Nassi-Shneiderman-Diagramm - HTL Wien 10
Nassi-Shneiderman-Diagramm - HTL Wien 10
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> – Wikipedia<br />
<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong><br />
aus Wikipedia, der freien Enzyklopädie<br />
Ein <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> ist ein <strong>Diagramm</strong>typ zur Darstellung von<br />
Programmentwürfen im Rahmen der Methode der strukturierten<br />
Programmierung. Er wurde 1972/73 von Isaac <strong>Nassi</strong> und Ben <strong>Shneiderman</strong><br />
entwickelt und ist in der DIN 66261 genormt. Da <strong>Nassi</strong>-<strong>Shneiderman</strong>-<br />
<strong>Diagramm</strong>e Programmstrukturen darstellen, werden sie auch als<br />
Struktogramme bezeichnet.<br />
Die Methode zerlegt das Gesamtproblem, das man mit dem gewünschten<br />
Algorithmus lösen will, in immer kleinere Teilprobleme – bis schließlich nur<br />
noch elementare Grundstrukturen wie Sequenzen und Kontrollstrukturen zur<br />
Lösung des Problems übrig bleiben. Diese können dann durch ein <strong>Nassi</strong>-<br />
<strong>Shneiderman</strong>-<strong>Diagramm</strong> oder einen Programmablaufplan (PAP) visualisiert<br />
werden. Die Vorgehensweise entspricht der sogenannten Top-down-Programmierung, in der zunächst ein Gesamtkonzept<br />
entwickelt wird, das dann durch eine Verfeinerung der Strukturen des Gesamtkonzeptes aufgelöst wird.<br />
Böhm und Jacopini hatten 1966 nachgewiesen, dass sich jeder beliebige Algorithmus ohne unbedingte Sprunganweisung<br />
(GOTO) formulieren lässt.<br />
Bei der Abbildung objektorientierter Programmkonzepte nach UML finden <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong>e keine<br />
Anwendung, da man dort mit erweiterten Programmablaufplänen auszukommen glaubt.<br />
Inhaltsverzeichnis<br />
1 Sinnbilder nach DIN 66261<br />
1.1 Linearer Ablauf (Sequenz)<br />
1.2 Verzweigung (Alternative)<br />
1.2.1 Einfache Auswahl (bedingte Verarbeitung)(Selektion)<br />
1.2.2 Zweifache Auswahl (alternative Verarbeitung)<br />
1.2.3 Mehrfachauswahl<br />
1.2.4 Fallauswahl<br />
1.3 Wiederholung (Iteration)<br />
1.3.1 Zählergesteuerte Schleife<br />
1.3.2 Abweisende (vorprüfende – kopfgesteuerte) Schleife<br />
1.3.3 Nicht abweisende (nachprüfende – fußgesteuerte) Schleife<br />
1.3.4 Endlosschleife<br />
1.4 Aussprung<br />
1.5 Aufruf<br />
2 Füllregeln<br />
2.1 Allgemeingültigkeit<br />
2.2 Deklaration<br />
2.3 Exklusivität<br />
3 Praxisrelevanz<br />
4 Beispieldiagramme<br />
4.1 Einfaches Struktogramm<br />
4.2 Erweitertes Struktogramm<br />
5 Software<br />
6 Weblinks<br />
Sinnbilder nach DIN 66261<br />
Die meisten der nachfolgenden Strukturblöcke können ineinander geschachtelt werden. Das aus den unterschiedlichen<br />
Strukturblöcken zusammengesetzte Struktogramm ist im Ganzen rechteckig, also genauso breit wie sein breitester<br />
Strukturblock.<br />
Linearer Ablauf (Sequenz)<br />
Jede Anweisung wird in einen rechteckigen Strukturblock geschrieben.<br />
Die Strukturblöcke werden nacheinander von oben nach unten durchlaufen.<br />
http://de.wikipedia.org/wiki/<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong><br />
Page 1 of 5<br />
DIN 66261<br />
Bereich Programmierung<br />
Regelt Informationsverarbeitung;<br />
Sinnbilder für<br />
Struktogramme nach <strong>Nassi</strong>-<br />
<strong>Shneiderman</strong><br />
Kurzbeschreibung Struktogramme<br />
Aktuelle Ausgabe 1985<br />
ISO<br />
17.07.2008
<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> – Wikipedia<br />
Verzweigung (Alternative)<br />
Einfache Auswahl (bedingte Verarbeitung)(Selektion)<br />
Zweifache Auswahl (alternative Verarbeitung)<br />
Mehrfachauswahl<br />
Fallauswahl<br />
Wiederholung (Iteration)<br />
Zählergesteuerte Schleife<br />
Leere Strukturblöcke sind nur in Verzweigungen zulässig.<br />
Nur wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. Ein<br />
Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Trifft die Bedingung<br />
nicht zu (falsch), wird der Durchlauf ohne eine weitere Anweisung fortgeführt (Austritt unten).<br />
Wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. Trifft<br />
die Bedingung nicht zu (falsch), wird der Anweisungsblock 2 durchlaufen. Ein<br />
Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Austritt unten nach<br />
Abarbeitung des jeweiligen Anweisungsblocks.<br />
http://de.wikipedia.org/wiki/<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong><br />
Page 2 of 5<br />
Auch „verschachtelte“ Auswahl genannt, da eine weitere Bedingung folgt.<br />
Die Verschachtelung ist ebenso im Nein-Fall (noch) möglich.<br />
Besonders bei mehr als drei<br />
abzuprüfenden Bedingungen geeignet:<br />
Der Wert von „Variable“ kann bedingt<br />
auf Gleichheit wie auch auf Bereiche<br />
(größer/kleiner bei Zahlen) geprüft<br />
werden und der entsprechend<br />
zutreffende „Fall“ mit dem zugehörigen<br />
Anweisungsblock wird durchlaufen.<br />
Eine Fallauswahl kann manchmal in<br />
eine Mehrfachauswahl umgewandelt<br />
werden – etwa wenn die später<br />
eingesetzte Programmiersprache<br />
Fallauswahlen nicht kennt.<br />
Wiederholungsstruktur, bei der die Anzahl der Durchläufe festgelegt ist.<br />
Als Bedingung muss eine Zählvariable angegeben und mit einem<br />
Startwert initialisiert werden. Ebenso muss ein Endwert und die (Zähl-)<br />
Schrittweite angegeben werden. Nach jedem Durchlauf des<br />
Schleifenkörpers (Anweisungsblock 1) wird die Zählvariable um die<br />
Schrittweite inkrementiert (bzw. bei negativer Schrittweite<br />
dekrementiert) und mit dem Endwert verglichen. Ist der Endwert<br />
überschritten, wird die Schleife verlassen.<br />
17.07.2008
<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> – Wikipedia<br />
Abweisende (vorprüfende – kopfgesteuerte) Schleife<br />
Nicht abweisende (nachprüfende – fußgesteuerte) Schleife<br />
Endlosschleife<br />
(Andernorts auch als Symbol für eine For-Schleife)<br />
Aussprung<br />
Aufruf<br />
Füllregeln<br />
Allgemeingültigkeit<br />
Struktogramme sollten keine programmiersprachenspezifische Befehlssyntax enthalten. Sie müssen so<br />
programmiersprachenunabhängig formuliert werden, dass die dargestellte Logik einfach zu verstehen und als Codiervorschrift<br />
in jede beliebige Programmiersprache umgesetzt werden kann.<br />
Deklaration<br />
Weil sie ursprünglich für prozedurale Programmiersprachen entwickelt wurden, bildete man in Struktogrammen nur die<br />
Prozedur und keine Deklarationsbereiche von Variablen und Konstanten ab (einfaches Struktogramm). Dadurch ist jedoch<br />
nicht sofort deutlich, welcher Datentyp einer Variablen zugeordnet werden muss. Die Deklaration von Variablen und<br />
Konstanten ist im ersten Anweisungsblock vorzunehmen. Diese <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong>e bezeichnet man dann als<br />
erweiterte Struktogramme.<br />
Exklusivität<br />
Wiederholungsstruktur mit vorausgehender Bedingungsprüfung. Der Schleifenkörper<br />
(Anweisungsblock 1) wird nur durchlaufen, wenn (und solange) die Bedingung zutreffend (wahr)<br />
ist.<br />
Diese Symbolik wird auch für die Zählschleife (Anzahl der Durchläufe bekannt) benutzt.<br />
Wiederholungsstruktur mit nachfolgender Bedingungsprüfung für den Abbruch. Der<br />
Schleifenkörper (Anweisungsblock 1) wird mindestens einmal durchlaufen, auch wenn die<br />
Bedingung von Anfang an nicht zutreffend (falsch) war.<br />
Kann allenfalls durch einen Aussprung (break) verlassen werden.<br />
Page 3 of 5<br />
Der Aussprung (break) stellt die Beendigung eines Programmteils dar und sollte nicht als das verstanden<br />
werden, was <strong>Nassi</strong> und <strong>Shneiderman</strong> mit den Struktogrammen eigentlich vermeiden wollten: Die<br />
Sprunganweisung (siehe oben: unbedingter Sprung Goto).<br />
Symbol für den Aufruf eines Unterprogramms bzw. einer Prozedur oder Funktion. Nach deren<br />
Durchlauf wird zu der aufrufenden Stelle zurückgesprungen und der nächstfolgende Strukturblock<br />
durchlaufen.<br />
Jede Anweisung erhält einen eigenen Strukturblock (Sinnbilder nach DIN 66261). Selbst mehrere Anweisungen gleicher oder<br />
ähnlicher Art dürfen nicht in einem Strukturblock zusammengefasst werden.<br />
Jede Anweisung muss mindestens aus einer Zuweisung bestehen (beispielsweise<br />
Zielvariable ← Zielvariable * AndereVariable). Eine Zuweisung wird durch einen nach links gerichteten Pfeil dargestellt.<br />
http://de.wikipedia.org/wiki/<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong><br />
17.07.2008
<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> – Wikipedia<br />
Ältere Struktogramme benutzen alternativ aus alten Pascal-Zeiten als Zuweisungszeichen den Doppelpunkt gefolgt vom<br />
Gleichheitszeichen (Zielvariable := Zielvariable * AndereVariable). Das Ziel einer Anweisung steht immer links vom<br />
Zuweisungszeichen. Rechts davon steht die Quelle.<br />
Über jedes Struktogramm gehört ein Name, um die Identifikation durch Ereignis- oder (Unter-)Programmaufrufe<br />
gewährleisten zu können.<br />
Praxisrelevanz<br />
In der Softwareentwicklung werden <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong>e kaum noch eingesetzt. Dort werden vorrangig<br />
Aktivitätsdiagramme der UML verwendet (oder von diesen abgeleitete, für Anwender verständlichere vereinfachte Formen).<br />
Im Informatik-Unterricht der Sekundarstufe II werden Struktogramme verwendet, damit Schüler den Aufbau logischer<br />
Abläufe, die für die Programmierung nötig sind, trainieren können. Die Erstellung von Struktogrammen aufgrund von<br />
Beschreibungen betrieblicher Problemstellungen, die wegen wiederkehrender gleicher Vorgehensweise automatisiert werden<br />
können, ist immer noch Bestandteil vieler schulischer Abschlussprüfungen.<br />
Beispieldiagramme<br />
Einfaches Struktogramm<br />
Das folgende Beispiel zeigt den Ablauf des euklidischen Algorithmus zur Berechnung des größten gemeinsamen Teilers<br />
zweier Zahlen.<br />
als <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> ... ... und in Pascal:<br />
Erweitertes Struktogramm<br />
als <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> ...<br />
... und die Umsetzung in VBA:<br />
PROGRAM GGT(Input,Output);<br />
VAR a,b: Integer;<br />
BEGIN<br />
ReadLn(a,b);<br />
WHILE (a > 0) AND (b > 0) DO<br />
IF a > b THEN<br />
a := a-b;<br />
ELSE<br />
b := b-a;<br />
IF b=0 THEN<br />
WriteLn(a)<br />
ELSE<br />
WriteLn(b)<br />
END.<br />
http://de.wikipedia.org/wiki/<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong><br />
Page 4 of 5<br />
17.07.2008
<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong> – Wikipedia<br />
Option Explicit<br />
Private Sub btnZensur_Click()<br />
Dim intZensur As Integer, strZensur As String<br />
intZensur = InputBox("Geben Sie die Zensur als Zahl ein.")<br />
Select Case intZensur<br />
Case 1: strZensur = "sehr gut"<br />
Case 2: strZensur = "gut"<br />
Case 3: strZensur = "befriedigend"<br />
Case 4: strZensur = "ausreichend"<br />
Case 5: strZensur = "mangelhaft"<br />
Case 6: strZensur = "ungenügend"<br />
Case Else: strZensur = "ungültig"<br />
End Select<br />
MsgBox "Ihre eingegebene Zensur als Text:" & strZensur<br />
End Sub<br />
Software<br />
<strong>Nassi</strong>-<strong>Shneiderman</strong> Diagram-Editor mit OnlineDoc<br />
Struktogrammeditor (Struktogramme online erstellen und ablaufen lassen)<br />
Software für Struktogramme und Ablaufdiagramme<br />
Struktogramme.dot (Macros und Symbolleiste für MS-Word, Freeware)<br />
struktex − LaTeX-Paket zum Erzeugen von <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong>en<br />
nassflow − LaTeX-Paket zum Erzeugen von <strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong>en<br />
EasyCODE Development Suite zum Editieren im Struktogramm<br />
Py<strong>Nassi</strong> (Struktogramme für Python, die Freeware kann aus den Struktogrammen Python-Quelltext generieren)<br />
Structorizer – <strong>Nassi</strong>-<strong>Shneiderman</strong> <strong>Diagramm</strong>-Editor für Linux, Mac OS X & Microsoft Windows (GPL)<br />
Vips – Visual Programming with Structograms – Visueller Editor für Struktogramme für Windows und Linux<br />
(Freeware)<br />
Weblinks<br />
DIN 66261: Sinnbilder für Struktogramme nach <strong>Nassi</strong>-<strong>Shneiderman</strong><br />
Englische Übersicht über <strong>Nassi</strong>-<strong>Shneiderman</strong> Webseiten<br />
Von „http://de.wikipedia.org/wiki/<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong>“<br />
Kategorien: Softwarearchitektur | Programmierung | <strong>Diagramm</strong><br />
Diese Seite wurde zuletzt am 7. Juli 2008 um 18:51 Uhr geändert.<br />
Ihr Text steht unter der GNU-Lizenz für freie Dokumentation.<br />
Wikipedia® ist eine eingetragene Marke der Wikimedia Foundation Inc.<br />
http://de.wikipedia.org/wiki/<strong>Nassi</strong>-<strong>Shneiderman</strong>-<strong>Diagramm</strong><br />
Page 5 of 5<br />
17.07.2008