Nassi-Shneiderman

Nassi-Shneiderman
Logo des Deutschen Instituts für Normung DIN 66261
Bereich Programmierung
Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi-Shneiderman
Kurzbeschreibung Struktogramme
Letzte Ausgabe 11.1985
ISO

Ein Nassi-Shneiderman-Diagramm ist ein Diagrammtyp zur Darstellung von Programmentwürfen im Rahmen der Methode der strukturierten Programmierung. Er wurde 1972/73 von Isaac Nassi und Ben Shneiderman entwickelt und ist in der DIN 66261 genormt. Da Nassi-Shneiderman-Diagramme Programmstrukturen darstellen, werden sie auch als Struktogramme bezeichnet.

Die Methode 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 Kontrollstrukturen zur Lösung des Problems übrig bleiben. Diese können dann durch ein Nassi-Shneiderman-Diagramm oder einen Programmablaufplan (PAP) visualisiert werden. Die Vorgehensweise entspricht der sogenannten Top-down-Programmierung, in der zunächst ein Gesamtkonzept entwickelt wird, das dann durch eine Verfeinerung der Strukturen des Gesamtkonzeptes aufgelöst wird.

Böhm und Jacopini hatten 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 Programmiersprachen finden; für Programmablaufpläne kann dies wesentlich schwieriger sein.

Inhaltsverzeichnis

Sinnbilder nach DIN 66261

Die meisten der nachfolgenden Strukturblöcke können ineinander geschachtelt werden. Das aus den unterschiedlichen Strukturblöcken zusammengesetzte Struktogramm ist im Ganzen rechteckig, also genauso breit wie sein breitester Strukturblock.

Linearer Ablauf (Sequenz)

Anweisung

Jede 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.

Verzweigung (Alternative)

Einfache Auswahl [Einfache Verzweigung]

Einfache Auswahl

Alternativ: bedingte Verarbeitung, Selektion, einfache Selektion
Nur wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. 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).

Zweifache Auswahl [Alternative Verzweigung]

Zweifache Auswahl

Alternativ: alternative Verarbeitung, alternative Verzweigung
Wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. Trifft die Bedingung nicht zu (falsch), wird der Anweisungsblock 2 durchlaufen. Ein Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Austritt unten nach Abarbeitung des jeweiligen Anweisungsblocks.

Verschachtelte Auswahl

Mehrfachauswahl

Es folgt eine weitere Bedingung. Die Verschachtelung ist ebenso im Nein-Fall (noch) möglich.

Fallauswahl

Fallauswahl

Besonders bei mehr als drei abzuprüfenden Bedingungen geeignet: Der Wert von „Variable“ kann bedingt auf Gleichheit wie auch auf Bereiche (größer/kleiner bei Zahlen) geprüft werden und der entsprechend zutreffende „Fall“ mit dem zugehörigen Anweisungsblock wird durchlaufen. Eine Fallauswahl kann stets in eine verschachtelte Auswahl umgewandelt werden – etwa wenn die später eingesetzte Programmiersprache Fallauswahlen nicht kennt.

Wiederholung (Iteration)

Zählergesteuerte Schleife

Zählergesteuerte Schleife

Wiederholungsstruktur, bei der die Anzahl der Durchläufe festgelegt ist. 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 1) wird die Zählvariable um die Schrittweite inkrementiert (bzw. bei negativer Schrittweite dekrementiert) und mit dem Endwert verglichen. Ist der Endwert überschritten, wird die Schleife verlassen.

Abweisende (vorprüfende – kopfgesteuerte) Schleife

Abweisende (kopfgesteuerte) Schleife

Wiederholungsstruktur mit vorausgehender Bedingungsprüfung. Der Schleifenkörper (Anweisungsblock 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.

Nicht abweisende (nachprüfende – fußgesteuerte) Schleife

Abweisende (fußgesteuerte) Schleife

Wiederholungsstruktur mit nachfolgender Bedingungsprüfung für den Abbruch. Der Schleifenkörper (Anweisungsblock 1) wird mindestens einmal durchlaufen, auch wenn die Bedingung von Anfang an nicht zutreffend (falsch) war.

Endlosschleife

Endloschleife
Kann allenfalls durch einen Aussprung (break) verlassen werden.

(Andernorts auch als Symbol für eine For-Schleife)

Aussprung

Aussprung
Der Aussprung (break) stellt die Beendigung eines Programmteils dar und sollte nicht als das verstanden werden, was Nassi und Shneiderman mit den Struktogrammen eigentlich vermeiden wollten: Die Sprunganweisung (siehe oben: unbedingter Sprung Goto).

Aufruf

Aufruf

Symbol für den Aufruf eines Unterprogramms bzw. einer Prozedur oder Funktion. Nach deren Durchlauf wird zu der aufrufenden Stelle zurückgesprungen und der nächstfolgende Strukturblock durchlaufen.

Füllregeln

Allgemeingültigkeit

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 umgesetzt werden kann.

Deklaration

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.

Exklusivität

Jede Anweisung erhält einen eigenen Strukturblock (Sinnbilder nach DIN 66261). Selbst mehrere Anweisungen gleicher oder ähnlicher Art dürfen nicht in einem Strukturblock zusammengefasst werden.

Jede Anweisung muss mindestens aus einer Zuweisung bestehen (beispielsweise Zielvariable ← Zielvariable * AndereVariable). Eine Zuweisung wird durch einen nach links gerichteten Pfeil dargestellt. Ältere Struktogramme benutzen alternativ aus alten Pascal-Zeiten als Zuweisungszeichen den Doppelpunkt gefolgt vom Gleichheitszeichen (Zielvariable := Zielvariable * AndereVariable). Das Ziel einer Anweisung steht immer links vom Zuweisungszeichen. Rechts davon steht die Quelle.

Über jedes Struktogramm gehört ein Name, um die Identifikation durch Ereignis- oder (Unter-)Programmaufrufe gewährleisten zu können.

Praxisrelevanz

In der Softwareentwicklung werden Nassi-Shneiderman-Diagramme selten eingesetzt. Dort werden vorrangig erweiterte Programmablaufpläne (Aktivitätsdiagramme der UML) verwendet.

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.

Beispieldiagramme

Einfaches Struktogramm

Das folgende Beispiel zeigt den Ablauf des euklidischen Algorithmus zur Berechnung des größten gemeinsamen Teilers zweier Zahlen.

als Nassi-Shneiderman-Diagramm ... ... und in Pascal:
Beispiel eines Nassi-Shneiderman Diagramms
PROGRAM GGT(Input,Output);
   VAR a,b: Integer;
BEGIN
   ReadLn(a,b);
   WHILE (a > 0) AND (b > 0) DO
      IF a > b THEN
         a := a-b;
      ELSE
         b := b-a;
   IF b=0 THEN
      WriteLn(a)
   ELSE
      WriteLn(b)
END.

Erweitertes Struktogramm

als Nassi-Shneiderman-Diagramm ...

Beispiel eines erweiterten Nassi-Shneiderman Diagramms

... und die Umsetzung in VBA:

 Option Explicit
 Private Sub btnZensur_Click()
   Dim intZensur As Integer, strZensur As String
   intZensur = InputBox("Geben Sie die Zensur als Zahl ein.")
   Select Case intZensur
      Case 1: strZensur = "sehr gut"
      Case 2: strZensur = "gut"
      Case 3: strZensur = "befriedigend"
      Case 4: strZensur = "ausreichend"
      Case 5: strZensur = "mangelhaft"
      Case 6: strZensur = "ungenügend"
      Case Else: strZensur = "ungültig"
   End Select
   MsgBox "Ihre eingegebene Zensur als Text:" & strZensur
 End Sub

Software

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Nassi-Shneiderman-Diagramm — Nassi Shneiderman Diagramm,   Struktogramm …   Universal-Lexikon

  • Nassi-Shneiderman-Struktogramm — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

  • Nassi-Shneiderman-Diagramm — DIN 66261 Bereich Programmierung Titel Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman …   Deutsch Wikipedia

  • Nassi–Shneiderman diagram — Example of a Nassi–Shneiderman diagram A Nassi–Shneiderman diagram (NSD) in computer programming is a graphical design representation for structured programming [1]. This type of diagram was developed in 1972 by Isaac Nassi and the at the time… …   Wikipedia

  • Nassi-Shneiderman diagram — A Nassi Shneiderman diagram (or NSD) is a graphical design representation for structured programming. Developed in 1972 by Isaac Nassi and Ben Shneiderman, these diagrams are also called structograms , as they show a program s structures.… …   Wikipedia

  • Diagrama Nassi-Shneiderman — Saltar a navegación, búsqueda En programación de computadores un diagrama Nassi Shneiderman (o NSD por sus siglas en inglés) es una representación gráfica que muestra el diseño de un programa estructurado. Ejemplo de un diagrama Nassi Shneiderman …   Wikipedia Español

  • Nassi-Shneiderman-Diagramm — ⇡ Struktogramm …   Lexikon der Economics

  • Shneiderman — Saltar a navegación, búsqueda Ben Shneiderman (n. 21 de agosto de 1947) es un informático estadounidense. Su investigación principal está relacionada con la Interacción Persona ordenador. Suyas son por ejemplo las 8 reglas de oro del diseño.… …   Wikipedia Español

  • Nassi — may refer to: Isaac Nassi, computer scientist and businessman Thomas Nassi (1892 1964), Albanian American musician and pioneering music educator Maurizio Nassi (b. 1977), Italian footballer Joseph Nasi, 16th century Jewish diplomat and… …   Wikipedia

  • Nassi-Schneiderman-Diagramm — DIN 66261 Bereich Programmierung Regelt Informationsverarbeitung; Sinnbilder für Struktogramme nach Nassi Shneiderman Kurzbe …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”