- 1 Section
- 10 Lessons
- unbegrenzt
- Algorithmen & Datenstrukturen10
- 1.1Was ist ein Algorithmus?
- 1.2Struktogramm (Nassi-Shneidermann)
- 1.3Pseudocode schreiben
- 1.4Kontrollstrukturen: Sequenz, Auswahl, Schleife
- 1.5Rekursion verstehen
- 1.6Suchen: linear vs. binär
- 1.7Sortieren: Bubble, Selection, Insertion, Merge
- 1.8O-Notation: Zeitkomplexität
- 1.9Datenstrukturen: Array, Liste, Stack, Queue, Baum, Hash
- 1.10Algorithmik-Aufgaben
Pseudocode schreiben
In Lektion 2 haben wir Struktogramme als grafische Darstellung von Algorithmen kennengelernt. Wenn es schneller oder kompakter sein muss, greift man stattdessen zu Pseudocode – einer text-basierten Notation, die so aussieht wie Programmcode, aber keine bestimmte Programmiersprache ist. Pseudocode ist die Lingua franca der Algorithmen-Beschreibung – in Lehrbüchern, wissenschaftlichen Papieren und in IHK-Klausuren.
Das Schöne an Pseudocode: es gibt keine starre Syntax. Du verwendest deutsche oder englische Schlüsselwörter, kannst Notation an dein Publikum anpassen, lässt unwichtige Details weg. Wichtig sind nur zwei Dinge: die Struktur muss klar erkennbar sein und der Algorithmus muss eindeutig nachvollziehbar sein. Diese Lektion zeigt dir, wie man guten Pseudocode schreibt und welche Konventionen sich eingebürgert haben.
1) Was ist Pseudocode genau?
Pseudocode ist eine semi-formale Beschreibung eines Algorithmus, die zwischen normaler Sprache und echtem Programmcode liegt. Er nutzt programmiersprachen-typische Konstrukte wie Variablen, Zuweisungen, Bedingungen und Schleifen – aber ohne sich an die strenge Syntax einer konkreten Sprache zu halten.
Wichtig: Pseudocode ist nicht ausführbar. Ein Computer kann ihn nicht direkt verarbeiten. Er ist nur für Menschen gedacht – als Brücke zwischen Idee und Implementierung. Du schreibst Pseudocode, um zu denken; den ausführbaren Code schreibst du danach in Java, Python oder einer anderen Sprache.
2) Die Standard-Schlüsselwörter
Es gibt keine offizielle Pseudocode-Spezifikation. Aber in der deutschsprachigen Informatik-Ausbildung haben sich bestimmte Schlüsselwörter eingebürgert. Wer sie konsistent verwendet, schreibt Pseudocode, der von jeder Prüfungsperson verstanden wird:
3) Beispiel: derselbe Algorithmus in drei Notationen
Wie unterscheidet sich Pseudocode von echtem Code? Hier dasselbe Beispiel – die Summe der ersten n Zahlen – in Pseudocode und zwei verschiedenen Programmiersprachen. Beobachte, was gleich ist (Struktur, Logik) und was unterschiedlich (Details der Syntax):
FUNKTION summe(n):
ergebnis = 0
FÜR i VON 1 BIS n
ergebnis = ergebnis + i
ENDE FÜR
GIB ZURÜCK ergebnis
ENDE FUNKTION
public static int summe(int n) {
int ergebnis = 0;
for (int i = 1; i <= n; i++) {
ergebnis = ergebnis + i;
}
return ergebnis;
}
def summe(n):
ergebnis = 0
for i in range(1, n + 1):
ergebnis = ergebnis + i
return ergebnis
4) Standard-Patterns im Pseudocode
Bestimmte Algorithmen-Muster wiederholen sich. Hier eine Sammlung der häufigsten Pseudocode-Patterns. Wer diese kennt, kann praktisch jeden Algorithmus damit zusammensetzen:
GIB AUS i
ENDE FÜR
x = x * 2
ENDE SOLANGE
FÜR JEDES x IN liste
summe = summe + x
ENDE FÜR
FÜR JEDES x IN liste
WENN x = ziel DANN
gefunden = wahr
ENDE WENN
ENDE FÜR
FÜR i VON 2 BIS n
WENN liste[i] > max DANN
max = liste[i]
ENDE WENN
ENDE FÜR
GIB AUS "gut"
SONST WENN note <= 4 DANN
GIB AUS "okay"
SONST
GIB AUS "durchgefallen"
ENDE WENN
5) Einrückung – der wichtigste Stil-Punkt
Pseudocode ist nicht durch geschweifte Klammern oder Schlüsselwörter wie BEGIN/END strukturiert (das wäre wieder eine bestimmte Sprache). Die Struktur entsteht durch Einrückung. Jeder Block (innerhalb einer Schleife, einer Verzweigung, einer Funktion) wird um eine Stufe eingerückt. Das ist nicht optional – ohne Einrückung ist Pseudocode unlesbar.
Üblich sind zwei oder vier Leerzeichen pro Stufe (Tabs vermeiden, weil Tabs unterschiedlich breit dargestellt werden). Bei mehrfacher Verschachtelung addieren sich die Einrückungen:
// Eingerückt: Schleifenrumpf
WENN liste[i] > 0 DANN
// Doppelt eingerückt: in WENN, in FÜR
FÜR j VON 1 BIS i
// Dreifach eingerückt: in der inneren Schleife
GIB AUS j
ENDE FÜR
ENDE WENN
ENDE FÜR
In Python ist die Einrückung sogar Teil der Syntax – dort ist sie semantisch wichtig. In Java, C, JavaScript ist sie „nur" Lesehilfe, aber genauso wichtig. In Pseudocode ist sie das einzige strukturierende Element. Vernachlässige sie nicht.
6) Gut vs. schlecht – konkrete Beispiele
Was unterscheidet gut von schlecht geschriebenem Pseudocode? Diese drei Beispiele zeigen typische Fehler – und wie es besser geht:
// Wo ist das? In welcher Sprache?
System.out.println(x);
cin >> y;
scanf("%d", &z);
GIB AUS x
LIES y
LIES z
// Wie iterieren?
Lies eine Liste
Verarbeite alle Elemente
Gib das Ergebnis aus
summe = 0
FÜR JEDES x IN liste
summe = summe + x
ENDE FÜR
GIB AUS summe
WENN i mod 2 = 0 DANN
GIB AUS i
ENDE WENN
ENDE FÜR
// Wer gehört zu wem?
WENN i mod 2 = 0 DANN
GIB AUS i
ENDE WENN
ENDE FÜR
// Klar: WENN gehört in FÜR
7) Pseudocode für komplexere Algorithmen
Bei komplexeren Algorithmen zahlt sich Pseudocode besonders aus – Struktogramme würden hier riesig und unleserlich. Hier ein Klassiker: binäre Suche (mehr Details kommen in Lektion 6):
// Liefert Position des Zielwerts oder -1 wenn nicht gefunden
FUNKTION binaereSuche(liste, ziel):
links = 1
rechts = laenge(liste)
SOLANGE links <= rechts TUE
mitte = (links + rechts) / 2 // ganzzahlig
WENN liste[mitte] = ziel DANN
GIB ZURÜCK mitte
SONST WENN liste[mitte] < ziel DANN
links = mitte + 1
SONST
rechts = mitte - 1
ENDE WENN
ENDE SOLANGE
GIB ZURÜCK -1 // nicht gefunden
ENDE FUNKTION
Beobachte: das Verständnis dieses Algorithmus kommt durch die Schlüsselwörter und Einrückung gut rüber. Du musst keine Java- oder Python-Syntax kennen, um zu verstehen, was hier passiert. Genau das ist die Stärke von Pseudocode.
8) Typische Schwachstellen in Klausuren
In IHK-Klausuren wird Pseudocode oft verlangt – „Schreiben Sie den Algorithmus in Pseudocode" ist eine Standard-Frage. Typische Schwachstellen, die Punkte kosten:
- Halb Pseudocode, halb echter Code: in einer Zeile Pseudocode-Schlüsselwörter, in der nächsten Java-spezifische Syntax. Bleib in einer Sprache.
- Block-Ende fehlt: ohne ENDE FÜR oder ENDE WENN ist nicht klar, wo der Block aufhört – besonders bei Verschachtelung. Lieber zu viele ENDEs als zu wenige.
- Variablen nicht initialisiert: wenn du
summe = summe + xschreibst, musssummevorher initialisiert sein. Sonst ist der Wert undefiniert. - Schleifen-Bedingung sinnentstellt: bei SOLANGE muss die Bedingung wahr sein, damit die Schleife läuft. Manche schreiben aus Versehen die Abbruch-Bedingung – das ist genau das Gegenteil.
- Falsche Indizierung: in Pseudocode meist 1-basiert (liste[1], liste[2], ...). In Java/Python/C ist es 0-basiert. Beim Übersetzen passieren hier Off-by-one-Fehler.
- Inkonsistente Sprache: mal WENN, mal IF. Mal deutsche Schlüsselwörter, mal englische. Bleib konsequent.
9) Pseudocode als Brücke zum echten Code
Eines der besten Argumente für Pseudocode: er ist die ideale Zwischenstufe vom Konzept zum lauffähigen Programm. Workflow für eine Klausuraufgabe oder ein echtes Projekt:
- Problem analysieren: was ist Eingabe, was ist Ausgabe? Welche Beispiele gibt es?
- Algorithmus-Idee: wie kommt man von Eingabe zu Ausgabe? Erst in Worten oder Skizze.
- Pseudocode schreiben: die Idee in präzise, aber sprach-neutrale Schritte gießen. Hier ist Denkarbeit, kein Tippen.
- Pseudocode prüfen: mit Beispielen durchspielen. Funktioniert es? Korrekte Behandlung von Edge-Cases (leere Liste, n=0, ...)?
- In Code übersetzen: Zeile für Zeile in Java, Python oder einer anderen Sprache. Wenn der Pseudocode klar ist, ist das fast mechanisch.
Profi-Entwickler*innen springen oft direkt von Schritt 2 zu Schritt 5 – aber bei nicht-trivialen Algorithmen ist Pseudocode immer der schnellere Weg zu sauberer Lösung. Auch in Code-Reviews und technischen Diskussionen ist Pseudocode oft die beste Kommunikationsform.
Zusammenfassung
Pseudocode ist eine sprach-neutrale, halbformale Beschreibung von Algorithmen – steht zwischen Umgangssprache und echtem Programmcode. Er ist nicht ausführbar und folgt keiner starren Syntax, aber bestimmte Konventionen haben sich eingebürgert. Standard-Schlüsselwörter (deutsch): EINGABE/LIES, AUSGABE/GIB AUS, WENN/DANN/SONST, SOLANGE/TUE, WIEDERHOLE/BIS, FÜR/VON/BIS, FUNKTION/GIB ZURÜCK. Englische Varianten (IF/ELSE, WHILE, FOR, RETURN) sind gleichwertig – wichtig ist Konsistenz. Wichtigster Stil-Punkt: Einrückung. Sie strukturiert den Code, ohne sie ist Pseudocode unlesbar. Vorteile gegenüber Struktogrammen: kompakter, schneller zu schreiben, näher am echten Code, besser für komplexe Algorithmen. Nachteile: weniger visuell, Lesen erfordert Code-Erfahrung. Häufige Muster: Zählschleife, while-Schleife, Akkumulation, Suchen mit Flag, Max/Min finden, verzweigte Entscheidung. Stolperfallen in Klausuren: Mix aus Pseudocode und echtem Code, fehlende Block-Enden, nicht initialisierte Variablen, sinnentstellte Schleifen-Bedingung, falsche Indizierung. Idealer Workflow: Problem → Idee → Pseudocode → Test → echter Code. Wer Pseudocode beherrscht, kann jeden Algorithmus aus diesem Kurs sauber dokumentieren – im nächsten Schritt sehen wir die Kontrollstrukturen, die in Pseudocode und allen Sprachen auftauchen.
