📊 Struktogramme

Nassi-Shneiderman-Diagramme zur grafischen Darstellung von Algorithmen

1. Was sind Struktogramme?

📖 Definition

Ein Struktogramm (auch Nassi-Shneiderman-Diagramm) ist eine grafische Darstellung eines Algorithmus. Es zeigt den Programmablauf als verschachtelte Blöcke und eignet sich besonders für die strukturierte Programmierung.

✅ Vorteile von Struktogrammen:

  • Übersichtliche Darstellung von Kontrollstrukturen
  • Keine Sprünge möglich → kein "Spaghetti-Code"
  • Direkte Umsetzung in Code möglich
  • Standardisiert nach DIN 66261

2. Grundelemente

📦 2.1 Anweisung (Sequenz)

Eine einfache Anweisung wird als rechteckiger Block dargestellt:

Algorithmus: Begrüßung
Lies name ein
Gib "Hallo " + name aus

Java-Code:

Scanner sc = new Scanner(System.in);
String name = sc.nextLine();
System.out.println("Hallo " + name);

🔀 2.2 Verzweigung (If-Else)

Eine Verzweigung teilt den Ablauf in zwei Zweige basierend auf einer Bedingung:

Volljährigkeit prüfen
Lies alter ein
alter >= 18 ?
JA
Gib "Volljährig" aus
NEIN
Gib "Minderjährig" aus

Java-Code:

int alter = sc.nextInt();

if (alter >= 18) {
    System.out.println("Volljährig");
} else {
    System.out.println("Minderjährig");
}

🔄 2.3 Kopfgesteuerte Schleife (While)

Die Bedingung wird vor dem Schleifenrumpf geprüft. Der seitliche Balken zeigt den Wiederholungsbereich:

Zahlen 1-5 ausgeben
i = 1
WHILE
i <= 5
Gib i aus
i = i + 1

Java-Code:

int i = 1;

while (i <= 5) {
    System.out.println(i);
    i++;
}

📌 Merkmal: Bedingung oben = "Solange ... tue"

🔁 2.4 Fußgesteuerte Schleife (Do-While)

Die Bedingung wird nach dem Schleifenrumpf geprüft. Der Rumpf wird mindestens einmal ausgeführt:

Eingabe wiederholen
Lies zahl ein
Gib "Eingabe: " + zahl aus
zahl != 0
DO-WHILE
Gib "Ende" aus

Java-Code:

int zahl;

do {
    zahl = sc.nextInt();
    System.out.println("Eingabe: " + zahl);
} while (zahl != 0);

System.out.println("Ende");

📌 Merkmal: Bedingung unten = "Tue ... solange"

📋 2.5 Fallunterscheidung (Switch-Case)

Mehrere Alternativen basierend auf einem Wert:

Note bewerten
Lies note ein
note =
1
"Sehr gut"
2
"Gut"
3
"Befriedigend"
sonst
"Andere"

Java-Code:

switch (note) {
    case 1:
        System.out.println("Sehr gut");
        break;
    case 2:
        System.out.println("Gut");
        break;
    case 3:
        System.out.println("Befriedigend");
        break;
    default:
        System.out.println("Andere");
}

3. Komplexes Beispiel

🎯 Fakultät berechnen

Berechnung von n! = 1 × 2 × 3 × ... × n

Fakultät berechnen
Lies n ein
n < 0 ?
JA
Gib "Fehler" aus
NEIN
ergebnis = 1
i = 1
WHILE
i <= n
ergebnis = ergebnis × i
i = i + 1
Gib ergebnis aus

Java-Code:

int n = sc.nextInt();
int ergebnis = 1;

if (n < 0) {
    System.out.println("Fehler");
} else {
    int i = 1;
    while (i <= n) {
        ergebnis = ergebnis * i;
        i++;
    }
    System.out.println(ergebnis);
}

4. Übersicht der Strukturblöcke

Element Erkennung Java-Entsprechung
Anweisung Rechteckiger Block Einfache Anweisung
Verzweigung Dreieck mit zwei Zweigen if-else
Kopfgesteuerte Schleife Balken links, Bedingung oben while, for
Fußgesteuerte Schleife Balken rechts, Bedingung unten do-while
Fallunterscheidung Mehrere Spalten switch-case