Programmierung bedeutet, Lösungsschritte für eine Problemstellung so zu formulieren, dass ein Computer sie ausführen kann, um bestimmte Aufgaben zu automatisieren.
Das Schwierige — auch bei KI — ist oft nicht das Codieren, sondern das präzise Formulieren des Problems.
Ist ein Problem zu groß, wird es aufgeteilt. Das gilt für Probleme genauso wie für Klassen, Methoden und Funktionen.
Jeder Algorithmus lässt sich aus genau drei Kontrollstrukturen aufbauen:
| Struktur | Bezeichnung | Beschreibung |
|---|---|---|
| Sequenz | Anweisungsfolge | Anweisungen werden der Reihe nach ausgeführt |
| Selektion | Auswahlstruktur | Abhängig von einer Bedingung wird ein Zweig gewählt |
| Iteration | Wiederholungsstruktur | Ein Block wird wiederholt ausgeführt |
Böhm und Jacopini haben bewiesen: Jede berechenbare Funktion lässt sich mit diesen drei Strukturen darstellen. goto ist nicht notwendig.
Edsger Dijkstra argumentierte in seinem berühmten Brief (1968), dass unkontrollierte goto-Sprungbefehle zu unübersichtlichem, unwartbarem Code führen — Spaghetti Code. Die Lösung: strukturierte Kontrollfluss-Elemente (Selektion, Iteration). Ziel ist ein linearer Lesefluss, der leicht nachvollziehbar ist und mathematisch beweisbar korrekt sein kann.
Algorithmen werden vor dem Codieren in einer standardisierten Notation beschrieben. Alle drei sind äquivalent — sie beschreiben denselben Algorithmus, nur in unterschiedlicher Form.
Grafisches Flussdiagramm. Anweisungen, Entscheidungen und Schleifen werden mit standardisierten Symbolen dargestellt und mit Pfeilen verbunden (DIN 66001). Gut lesbar für einfache Abläufe, wird bei tief verschachtelten Strukturen unübersichtlich.

Weiterführend: PAP (Wikipedia)
Grafisch wie der PAP, aber ohne Pfeile. Jede Struktur (Sequenz, Selektion, Iteration) ist ein geschachtelter Block. Das erzwingt strukturierten Code — Spaghetti-Sprünge wie goto lassen sich gar nicht darstellen. Norm: DIN 66261.

Weiterführend: Nassi-Shneidermann-Diagramm (Wikipedia)
Textuelle Beschreibung in einer an Programmiersprachen angelehnten Sprache — kein grafisches Werkzeug, keine strenge Syntax. Pseudocode ist sprachunabhängig und lässt sich schnell schreiben.
Beispiel: Kaffee-Algorithmus als Pseudocode
PROGRAMM KaffeeMachen
WENN Bohnen vorhanden UND Wasser vorhanden UND Behälter nicht voll DANN
Maschine einschalten
Tasse unter Auslauf stellen
Knopf drücken
WARTEN BIS Kaffee fertig
Tasse nehmen
SONST
Fehlermeldung ausgeben
ENDE WENN
ENDE PROGRAMM
Problem: Einmal Kaffee mit der Schulmaschine zubereiten.
Checks (Vorbedingungen):
Ablauf (nur wenn alle Checks positiv):
Kaffeemaschine einschalten
Tasse nehmen
Tasse unter den Auslauf stellen
Knopf drücken
Warten bis Kaffee fertig durchgelaufen
Tasse nehmen und genießen