Kontrollstrukturen (auch Kontrollfluss- oder Ablaufstrukturen) bestimmen die Reihenfolge, in der Anweisungen eines Programms ausgeführt werden. Ohne sie liefe ein Programm einfach von oben nach unten durch – die Sequenz. Erst die Kombination aus Sequenz, Auswahl, Wiederholung und Unterprogrammaufruf macht Programme flexibel und löst echte Aufgaben.
Die vier Grundbausteine
- Sequenz: Anweisungen nacheinander ausführen – die Basis jedes Programms.
- Auswahl (Verzweigung): Je nach Bedingung einen von mehreren Wegen einschlagen, klassisch mit
if/elseoderswitch. Bedingungen liefern einen Boolean-Wert (wahr/falsch) und nutzen Vergleichs- und logische Operatoren. - Wiederholung (Schleife): Code mehrfach ausführen, solange eine Bedingung gilt – siehe Schleife.
- Unterprogrammaufruf: In Funktionen verlagerten Code aufrufen, der im Anschluss einen Rückgabewert liefern kann.
Beispiele verstehen
Ein einfacher Fall: Bei einem Online-Shop soll der Rabatt nur gelten, wenn der Warenkorbwert über 100 Euro liegt. In Pseudocode:
wenn warenkorbwert > 100:
rabatt = 10 Prozent
sonst:
rabatt = 0
Kontrollstrukturen lassen sich verschachteln: Eine Schleife kann über ein Array laufen und in jedem Durchlauf eine Bedingung prüfen. Die Syntax dafür unterscheidet sich je Sprache und Datentyp, das Konzept bleibt gleich. Alternativen zur Schleife sind Rekursion – also der Aufruf einer Funktion durch sich selbst – oder funktionale Konstrukte wie map und filter.
Warum „strukturierte Programmierung“?
Bis in die 1960er-Jahre war das unbedingte Sprungkommando goto üblich, das Programme schnell unlesbar machte („Spaghetti-Code“). 1968 veröffentlichte Edsger W. Dijkstra seinen berühmten Aufsatz „Go To Statement Considered Harmful“ – seitdem gilt: Kontrollstrukturen statt Sprünge. Zur Visualisierung dienen Struktogramme (Nassi-Shneiderman-Diagramme), die Sequenz, Auswahl und Schleifen als Schachtelung von Blöcken zeigen. Auch die Fehlerbehandlung gehört zum Kontrollfluss: Laufzeitfehler werden über Exceptions an eine übergeordnete Stelle gereicht, wo das Programm gezielt reagieren kann.
Kontrollstrukturen sind damit direkt mit dem Algorithmus verbunden: Ein Algorithmus beschreibt den Ablauf, Kontrollstrukturen setzen ihn in Code um – der dann von Compiler oder Interpreter ausgeführt wird (siehe Kompilieren). Variablen (Variable) liefern die Daten, die der Kontrollfluss zwischen den Anweisungen transportiert.