Lektion 02 - Struktogramme
Programmlogik als klare Bloecke darstellen
Ein Struktogramm zeigt den Ablauf eines Programms in verschachtelten Bloecken.
Dadurch siehst du sofort, welche Schritte nacheinander passieren, wo entschieden
wird und wo etwas wiederholt wird.
1. Was ist ein Struktogramm?
Ein Struktogramm wird auch Nassi-Shneiderman-Diagramm genannt. Es zeigt keinen
Ablauf mit Pfeilen wie ein PAP, sondern eine Blockstruktur von oben nach unten.
Genau deshalb passt es gut zu echtem Code.
PROGRAMM
+--------------------------------+
| Eingabe lesen |
| Wenn Eingabe gueltig? |
| Ja: Wert verarbeiten |
| Nein: Fehlermeldung ausgeben |
| Ergebnis ausgeben |
+--------------------------------+
Merke: Struktogramme zeigen Struktur, nicht Pfeilwege.
2. Unterschied zu PAP
Ein Programmablaufplan arbeitet mit Symbolen und Pfeilen. Ein Struktogramm arbeitet
mit Bloecken. Beide beschreiben Logik, aber Struktogramme zwingen dich staerker zu
sauberer, strukturierter Programmierung.
PAPStruktogramm
Pfeile zeigen RichtungBloecke zeigen Verschachtelung
Gut fuer grobe AblaeufeGut fuer Code-nahe Logik
Entscheidung als RauteEntscheidung als geteilter Block
3. Die wichtigsten Bausteine
BausteinBedeutung
AnweisungEin einzelner Schritt, zum Beispiel Wert berechnen
SequenzMehrere Schritte nacheinander von oben nach unten
AuswahlEntscheidung mit Ja/Nein oder wahr/falsch
WiederholungSchleife, die etwas mehrfach ausfuehrt
4. Sequenz: Schritte nacheinander
Eine Sequenz ist der einfachste Fall. Jeder Schritt wird genau einmal ausgefuehrt.
Im Struktogramm stehen diese Schritte untereinander.
Struktogramm-Idee
Start
Name setzen
Begruessung bauen
Begruessung ausgeben
Ende
Dart
String name = 'Welt';
String text = 'Hallo $name!';
print(text);
5. Auswahl: if/else als Block
Eine Auswahl teilt den Ablauf in zwei Moeglichkeiten. Im Code ist das meistens
if/else. Im Struktogramm steht die Bedingung oben, darunter die Zweige.
Struktogramm-Idee
Wenn args leer?
+----------------------+----------------------+
| Ja | Nein |
| "Hallo!" ausgeben | Name bauen |
| | "Hallo Name!" ausg. |
+----------------------+----------------------+
Dart
if (args.isEmpty) {
print('Hallo!');
} else {
String name = args.join(' ');
print('Hallo $name!');
}
6. Wiederholung: Schleifen darstellen
Eine Wiederholung zeigt, dass ein Block mehrfach ausgefuehrt wird. Das brauchst du
spaeter besonders fuer Eingabepruefung, Wuerfeln und Primzahlen.
Struktogramm-Idee
Solange Eingabe ungueltig ist:
Frage nach Eingabe
Pruefe Eingabe
Gueltige Eingabe verwenden
Dart
while (eingabeUngueltig) {
// Eingabe lesen
// Eingabe pruefen
}
Jede Schleife braucht eine Bedingung, die irgendwann falsch werden kann.
7. Beispiel: Hello-Aufgabe als Struktogramm
Die Hello-Aufgabe hat eine Sequenz und eine Auswahl. Genau deshalb ist sie ein gutes
erstes Beispiel fuer ein Struktogramm.
hello.dart
+------------------------------------------------+
| Start |
| Pruefe Argumente |
| +----------------------+---------------------+ |
| | args ist leer | args ist nicht leer | |
| | "Hallo!" ausgeben | name = args.join | |
| | | "Hallo name!" ausg. | |
| +----------------------+---------------------+ |
| Ende |
+------------------------------------------------+
8. Mini-Aufgaben
- Zeichne ein Struktogramm fuer die Hello-Aufgabe.
- Markiere darin Sequenz, Auswahl und Ausgabe.
- Schreibe ein Struktogramm fuer: Wenn Punkte mindestens 6 sind, dann bestanden, sonst nicht bestanden.
- Schreibe ein Struktogramm fuer eine Eingabe, die solange wiederholt wird, bis sie nicht leer ist.
Weiter zu Algo Vergleichen