13.5 Pseudocode
Pseudocode beschreibt einen Algorithmus unabhängig von einer konkreten Programmiersprache. Er verbindet verständliche Sprache mit klaren Kontrollstrukturen und macht dadurch sichtbar, in welcher Reihenfolge Daten eingelesen, verarbeitet, geprüft und ausgegeben werden.
Was Pseudocode ist
Ein Algorithmus ist eine endliche und eindeutig beschriebene Folge von Schritten, die aus gegebenen Eingaben ein gewünschtes Ergebnis erzeugt. Pseudocode stellt diese Schritte strukturiert dar, ohne die exakte Syntax von Python, Java, C# oder einer anderen Programmiersprache vorauszusetzen.
Pseudocode ist nicht direkt ausführbar und besitzt keine weltweit verbindliche Schreibweise. Innerhalb eines Dokuments sollte die gewählte Notation jedoch konsequent verwendet werden. Ein Leser muss Bedingungen, Schleifen, Ein- und Ausgaben sowie Anfang und Ende eines Blocks eindeutig erkennen können.
- Abstrakter als ein ausführbares Programm, aber strukturierter als eine rein umgangssprachliche Beschreibung.
- Geeignet, um Algorithmen zu planen, zu prüfen, im Team zu besprechen und später in eine Programmiersprache zu übertragen.
- Hilft dabei, die Programmlogik von Syntaxdetails, Bibliotheken und Entwicklungsumgebungen zu trennen.
- Kann Implementierungsprobleme verdecken, wenn Datentypen, Fehlerfälle, Schnittstellen oder Randbedingungen zu ungenau beschrieben werden.
Grundlegende Bausteine
| Baustein | Beispiel | Bedeutung |
|---|---|---|
| Start und Ende | START ... ENDE | Begrenzt den gesamten Algorithmus oder einen benannten Teilalgorithmus. |
| Zuweisung | summe ← 0 | Speichert einen Wert in einer Variablen. Der Pfeil vermeidet die Verwechslung mit einem Vergleich. |
| Eingabe | EINGABE zahl | Übernimmt einen Wert von einem Menschen, einer Datei, einem Sensor oder einem anderen System. |
| Ausgabe | AUSGABE summe | Gibt ein Ergebnis aus oder übergibt es an ein anderes System. |
| Bedingung | WENN ... DANN ... SONST | Führt abhängig von einer Aussage unterschiedliche Anweisungen aus. |
| Kopfgesteuerte Schleife | SOLANGE bedingung | Prüft vor jedem Durchlauf; der Schleifenrumpf kann daher auch keinmal ausgeführt werden. |
| Zählschleife | FÜR i ← 1 BIS 10 | Wiederholt Anweisungen für einen festgelegten Wertebereich. |
| Teilalgorithmus | ALGORITHMUS name(...) | Kapselt eine wiederverwendbare Aufgabe mit Eingaben und gegebenenfalls einem Rückgabewert. |
Lesbare Notation verwenden
- Anweisungen in der tatsächlichen Ausführungsreihenfolge notieren.
- Zusammengehörige Blöcke einrücken und mit einem eindeutigen Ende kennzeichnen.
- Sprechende Variablennamen wie summe, anzahl oder maximum verwenden.
- Ein- und Ausgaben sowie Vorbedingungen ausdrücklich benennen.
- Vergleiche und Zuweisungen optisch unterscheiden, beispielsweise = für den Vergleich und ← für die Zuweisung.
- Nur so detailliert werden, wie es zum Verständnis und zur eindeutigen Umsetzung nötig ist.
Beispiel 1: Summe der Zahlen von 1 bis 10
Die Variable summe beginnt mit 0. Die Zählvariable i beginnt mit 1. Solange i höchstens 10 ist, wird i zur bisherigen Summe addiert und danach um 1 erhöht. Nach dem letzten Durchlauf wird das Ergebnis ausgegeben.
Pseudocode
START
summe ← 0
i ← 1
SOLANGE i ≤ 10 DANN
summe ← summe + i
i ← i + 1
ENDE SOLANGE
AUSGABE summe
ENDE| Zeitpunkt | i | summe |
|---|---|---|
| Initialisierung | 1 | 0 |
| nach Durchlauf 1 | 2 | 1 |
| nach Durchlauf 2 | 3 | 3 |
| nach Durchlauf 3 | 4 | 6 |
| ... | ... | ... |
| nach Durchlauf 10 | 11 | 55 |
Warum die Schleife endet
Die Schleifenbedingung lautet i ≤ 10. Innerhalb jedes Durchlaufs wird i um 1 erhöht. Nach dem zehnten Durchlauf besitzt i den Wert 11; die Bedingung ist falsch und der Ablauf wird hinter der Schleife fortgesetzt. Ohne die Anweisung i ← i + 1 würde eine Endlosschleife entstehen.
Beispiel 2: Größtes Element eines Arrays finden
Das erste Arrayelement dient als bisheriges Maximum. Danach werden alle weiteren Elemente nacheinander verglichen. Ist ein Wert größer, ersetzt er das bisherige Maximum. Die ursprüngliche Darstellung setzt mindestens ein Element voraus; deshalb wird der leere Eingabefall hier ausdrücklich behandelt.
Algorithmus FindeMaximum
ALGORITHMUS FindeMaximum(A, n)
EINGABE Array A mit n Elementen
WENN n = 0 DANN
FEHLER "Array ist leer"
ENDE WENN
maximum ← A[0]
FÜR i ← 1 BIS n - 1
WENN A[i] > maximum DANN
maximum ← A[i]
ENDE WENN
ENDE FÜR
RÜCKGABE maximum
ENDE ALGORITHMUSAblauf der Maximumsuche
Ein leeres Array besitzt kein größtes Element und wird als Fehlerfall behandelt.
maximum erhält den Wert A[0]. Dadurch funktioniert der Algorithmus auch mit ausschließlich negativen Zahlen.
Die Schleife beginnt bei Index 1, weil A[0] bereits als Startwert verwendet wurde.
Nur ein größerer Wert ersetzt das bisher gespeicherte Maximum.
Nach dem letzten Vergleich enthält maximum das größte Element.
Vom Pseudocode zum Programm
Die genaue Syntax entsteht erst bei der Übertragung in eine Programmiersprache. Der Pseudocode bleibt dabei die fachliche Beschreibung des Ablaufs. Er ist besonders nützlich, wenn mehrere Lösungswege verglichen oder Anforderungen mit Personen besprochen werden, die nicht dieselbe Programmiersprache verwenden.
| Pseudocode | Bei der Implementierung zu klären |
|---|---|
| EINGABE zahl | Eingabequelle, erlaubtes Format und Reaktion auf ungültige Werte. |
| AUSGABE ergebnis | Konsole, grafische Oberfläche, Datei, Netzwerkantwort oder Rückgabewert. |
| Array A | Datentyp der Elemente, Indexbeginn, Speicherstruktur und möglicher leerer Wert. |
| FEHLER | Exception, Fehlercode, Meldung oder kontrollierter Programmabbruch. |
| Zahlenoperation | Wertebereich, Datentyp, Rundung und möglicher Überlauf. |
Pseudocode überprüfen
- Sind Eingaben, Ausgaben und das gewünschte Ergebnis benannt?
- Sind alle Variablen vor ihrer ersten Verwendung initialisiert?
- Sind Bedingungen eindeutig wahr oder falsch auswertbar?
- Verändert jede Schleife die Werte, von denen ihre Abbruchbedingung abhängt?
- Sind leere Eingaben, Grenzwerte und ungültige Werte berücksichtigt?
- Lässt sich der Ablauf mit einem kleinen Beispiel Schritt für Schritt nachvollziehen?
- Ist die Beschreibung unabhängig von unnötigen Syntaxdetails einer Programmiersprache?
Zusammenfassung
Pseudocode macht Algorithmen verständlich, bevor ausführbarer Quellcode entsteht. Eine gute Darstellung benennt Ein- und Ausgaben, nutzt klare Zuweisungen, Bedingungen und Schleifen und zeigt Blockgrenzen durch Einrückung und Endmarkierungen.
Die Summenbildung zeigt Initialisierung, Wiederholung und Ausgabe. Die Maximumsuche ergänzt Arrayzugriff, Vergleich, Aktualisierung und Rückgabe. Beide Beispiele lassen sich anschließend in unterschiedliche Programmiersprachen übertragen.
Quellen zur fachlichen Prüfung
PDF-Download nach Anmeldung
Zum Schutz der Unterrichtsunterlagen steht der PDF-Download ausschließlich angemeldeten Nutzern zur Verfügung.
