Pseudocode-Beispiele
15 durchgearbeitete Beispiele in Cambridge-IGCSE- und A-Level-Pseudocode, vom ersten OUTPUT bis zu Bubble Sort. Jedes zeigt seine Ausgabe, und du kannst es im Editor unten ausführen.
So liest du diese Beispiele
Pseudocode beschreibt die Schritte eines Programms in strukturierter, englischnaher Sprache, ohne die strengen Regeln einer echten Programmiersprache. Jedes Beispiel unten verwendet den Cambridge-Stil aus den IGCSE- und A-Level-Prüfungen: DECLARE für Variablen, ← für Zuweisungen, OUTPUT für Ausgaben und Blöcke, die mit ENDIF, NEXT oder ENDWHILE geschlossen werden.
Jedes Beispiel nennt eine Aufgabe, zeigt den Pseudocode und die Ausgabe, die er erzeugt, und erklärt, wie er funktioniert. Klicke auf Im Editor ausführen, um ein Beispiel in den Editor oben auf der Seite zu laden. Dort kannst du es Zeile für Zeile durchgehen und zusehen, wie sich die Variablen ändern. Neu bei der Syntax? Der Pseudocode-Editor hat eine anklickbare Übersicht aller Konstrukte.
1. Hello, World
Eine Nachricht auf dem Bildschirm ausgeben.
OUTPUT "Hello, World!"Hello, World!OUTPUT gibt aus, was danach folgt, und Text steht in doppelten Anführungszeichen. Diese eine Zeile ist schon ein vollständiges Programm: Pseudocode braucht keine main-Funktion und keine Imports.
2. Zwei Zahlen addieren
Zwei ganze Zahlen speichern, addieren und die Summe ausgeben.
DECLARE a : INTEGER
DECLARE b : INTEGER
DECLARE total : INTEGER
a ← 12
b ← 30
total ← a + b
OUTPUT "The total is ", totalThe total is 42Jede Variable wird vor ihrer Verwendung mit einem Namen und einem Typ deklariert. Der Pfeil ← speichert einen Wert, lies total ← a + b also als „total wird a plus b“. Ein Komma in OUTPUT verbindet Text und Wert in einer Zeile.
3. Gerade oder ungerade
Entscheiden, ob eine Zahl gerade oder ungerade ist.
DECLARE n : INTEGER
n ← 17
IF n MOD 2 = 0 THEN
OUTPUT n, " is even"
ELSE
OUTPUT n, " is odd"
ENDIF17 is oddMOD liefert den Rest einer Division. Eine gerade Zahl lässt bei der Division durch 2 keinen Rest, also ist n MOD 2 = 0 die Prüfung. IF wählt einen von zwei Zweigen, und ENDIF schließt den Block. Im Pseudocode vergleicht ein einzelnes = zwei Werte; es weist nie etwas zu.
4. Eine Testpunktzahl benoten
Eine Punktzahl von 100 in eine Note umwandeln: A ab 80, B von 60 bis 79, C unter 60.
DECLARE score : INTEGER
DECLARE grade : CHAR
score ← 74
IF score >= 80 THEN
grade ← 'A'
ELSE
IF score >= 60 THEN
grade ← 'B'
ELSE
grade ← 'C'
ENDIF
ENDIF
OUTPUT "Score ", score, " gets grade ", gradeScore 74 gets grade BDie Prüfungen laufen von der höchsten Grenze abwärts, deshalb scheitert eine Punktzahl von 74 an der ersten Prüfung und besteht die zweite. Ein IF im ELSE eines anderen ist die Art, wie Cambridge-Pseudocode eine Else-if-Kette schreibt. Ein CHAR enthält ein einzelnes Zeichen in einfachen Anführungszeichen.
5. Die Zahlen von 1 bis 10 addieren
Alle ganzen Zahlen von 1 bis 10 zusammenzählen.
DECLARE total : INTEGER
DECLARE i : INTEGER
total ← 0
FOR i ← 1 TO 10
total ← total + i
NEXT i
OUTPUT "Sum of 1 to 10 is ", totalSum of 1 to 10 is 55Eine FOR-Schleife läuft eine feste Anzahl von Durchgängen: i nimmt die Werte 1, 2, 3 und so weiter bis 10 an, und NEXT i markiert das Ende des Schleifenrumpfs. Die laufende Summe beginnt bei 0 und wächst in jedem Durchgang. Das Ergebnis, 55, stimmt mit der Formel n(n + 1) / 2 überein.
6. Eine Einmaleins-Reihe ausgeben
Die ersten fünf Zeilen der Siebenerreihe ausgeben.
DECLARE i : INTEGER
FOR i ← 1 TO 5
OUTPUT "7 x ", i, " = ", 7 * i
NEXT i7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35Der Schleifenzähler i wird in der Rechnung verwendet, deshalb gibt jeder Durchgang eine andere Zeile aus. OUTPUT kann mehrere Textstücke und mehrere Werte mit Kommas verbinden.
7. Mit einer WHILE-Schleife herunterzählen
Von 5 bis 1 herunterzählen und dann eine Schlussnachricht ausgeben.
DECLARE count : INTEGER
count ← 5
WHILE count > 0 DO
OUTPUT count
count ← count - 1
ENDWHILE
OUTPUT "Liftoff!"5
4
3
2
1
Liftoff!Eine WHILE-Schleife prüft ihre Bedingung vor jedem Durchgang und hört auf, sobald die Bedingung falsch ist. Hier lautet die Bedingung count > 0, und der Rumpf verringert count jedes Mal um eins. Lässt du die Zeile weg, die den Wert verringert, endet die Schleife nie. Nimm WHILE, wenn du vorher nicht weißt, wie viele Durchgänge du brauchst.
8. Die größte Zahl in einem Array finden
Den größten Wert in einer Liste von sechs Zahlen finden.
DECLARE nums : ARRAY[1:6] OF INTEGER
DECLARE i : INTEGER
DECLARE largest : INTEGER
nums[1] ← 14
nums[2] ← 3
nums[3] ← 27
nums[4] ← 9
nums[5] ← 21
nums[6] ← 6
largest ← nums[1]
FOR i ← 2 TO 6
IF nums[i] > largest THEN
largest ← nums[i]
ENDIF
NEXT i
OUTPUT "The largest number is ", largestThe largest number is 27ARRAY[1:6] deklariert sechs Plätze mit den Nummern 1 bis 6, weil Arrays bei Cambridge meist bei 1 beginnen. Das Programm nimmt an, dass das erste Element das größte ist, vergleicht dann jedes weitere Element damit und behält das größere. Nach einem Durchgang durch das Array steht die Antwort in largest.
9. Einen Durchschnitt berechnen
Den Durchschnitt von vier Testnoten bestimmen.
DECLARE marks : ARRAY[1:4] OF INTEGER
DECLARE i : INTEGER
DECLARE total : INTEGER
marks[1] ← 70
marks[2] ← 85
marks[3] ← 64
marks[4] ← 91
total ← 0
FOR i ← 1 TO 4
total ← total + marks[i]
NEXT i
OUTPUT "Average mark: ", total / 4Average mark: 77.5Die Schleife addiert jedes Element des Arrays zu total, danach teilt das Programm durch die Anzahl der Noten. Der Operator / liefert ein Ergebnis mit Nachkommastellen, deshalb lautet die Ausgabe 77.5. Nimm stattdessen DIV, wenn du eine ganzzahlige Division willst.
10. Lineare Suche
Die Position des Namens Dara in einer Namensliste finden.
DECLARE names : ARRAY[1:5] OF STRING
DECLARE i : INTEGER
DECLARE found : BOOLEAN
names[1] ← "Ana"
names[2] ← "Ben"
names[3] ← "Chen"
names[4] ← "Dara"
names[5] ← "Eli"
found ← FALSE
i ← 1
WHILE i <= 5 AND found = FALSE DO
IF names[i] = "Dara" THEN
found ← TRUE
ELSE
i ← i + 1
ENDIF
ENDWHILE
IF found = TRUE THEN
OUTPUT "Dara is at position ", i
ELSE
OUTPUT "Not found"
ENDIFDara is at position 4Die lineare Suche prüft die Elemente eines nach dem anderen vom Anfang an. Die WHILE-Bedingung beendet die Schleife, sobald der Name gefunden ist oder jedes Element geprüft wurde, und das Flag found hält fest, welcher der beiden Fälle eingetreten ist. Das funktioniert auch mit unsortierten Daten, kann bei einer langen Liste aber einen Vergleich pro Element kosten.
11. Bubble Sort
Fünf Zahlen aufsteigend sortieren.
DECLARE nums : ARRAY[1:5] OF INTEGER
DECLARE i : INTEGER
DECLARE j : INTEGER
DECLARE temp : INTEGER
nums[1] ← 5
nums[2] ← 1
nums[3] ← 4
nums[4] ← 2
nums[5] ← 8
FOR i ← 1 TO 4
FOR j ← 1 TO 5 - i
IF nums[j] > nums[j + 1] THEN
temp ← nums[j]
nums[j] ← nums[j + 1]
nums[j + 1] ← temp
ENDIF
NEXT j
NEXT i
FOR i ← 1 TO 5
OUTPUT nums[i]
NEXT i1
2
4
5
8Bubble Sort vergleicht jedes Paar benachbarter Elemente und vertauscht sie, wenn sie in der falschen Reihenfolge stehen. Nach jedem Durchgang der äußeren Schleife ist der größte verbleibende Wert ans Ende gewandert, deshalb kann die innere Schleife jedes Mal ein Element früher aufhören. Für das Vertauschen braucht man eine dritte Variable, temp, die einen Wert festhält, während der andere kopiert wird.
12. Fakultät mit einer Funktion
Eine Funktion schreiben, die n Fakultät (n!) zurückgibt, und damit 5! ausrechnen.
FUNCTION Factorial(n : INTEGER) RETURNS INTEGER
DECLARE result : INTEGER
DECLARE i : INTEGER
result ← 1
FOR i ← 2 TO n
result ← result * i
NEXT i
RETURN result
ENDFUNCTION
OUTPUT "5! = ", Factorial(5)5! = 120Eine FUNCTION nimmt Parameter entgegen, erledigt ihre Arbeit und gibt mit RETURN einen Wert zurück; ihr Kopf nennt den Rückgabetyp. Variablen, die darin deklariert werden, existieren nur, solange sie läuft. 5! ist 5 × 4 × 3 × 2 × 1, also 120.
13. Die Vokale in einem Wort zählen
Zählen, wie viele Vokale das Wort PSEUDOCODE enthält.
DECLARE word : STRING
DECLARE letter : CHAR
DECLARE vowels : INTEGER
DECLARE i : INTEGER
word ← "PSEUDOCODE"
vowels ← 0
FOR i ← 1 TO LENGTH(word)
letter ← SUBSTRING(word, i, 1)
IF letter = 'A' OR letter = 'E' OR letter = 'I' OR letter = 'O' OR letter = 'U' THEN
vowels ← vowels + 1
ENDIF
NEXT i
OUTPUT word, " has ", vowels, " vowels"PSEUDOCODE has 5 vowelsLENGTH liefert die Anzahl der Zeichen in einem String, und SUBSTRING(word, i, 1) nimmt ein Zeichen ab Position i. Die Schleife besucht jedes Zeichen und erhöht den Zähler um eins, wenn es A, E, I, O oder U ist.
14. FizzBuzz
Die Zahlen von 1 bis 15 ausgeben, aber Fizz für Vielfache von 3, Buzz für Vielfache von 5 und FizzBuzz für Vielfache von beiden.
DECLARE i : INTEGER
FOR i ← 1 TO 15
IF i MOD 15 = 0 THEN
OUTPUT "FizzBuzz"
ELSE
IF i MOD 3 = 0 THEN
OUTPUT "Fizz"
ELSE
IF i MOD 5 = 0 THEN
OUTPUT "Buzz"
ELSE
OUTPUT i
ENDIF
ENDIF
ENDIF
NEXT i1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzzDie Reihenfolge der Prüfungen ist wichtig. 15 ist ein Vielfaches von 3 und von 5, deshalb muss die Prüfung auf 15 zuerst kommen; sonst würde das Programm Fizz ausgeben und FizzBuzz nie erreichen. Es ist eine klassische Aufwärmaufgabe in Vorstellungsgesprächen, weil sie genau diese Art von Überlegung prüft.
15. Passwortversuche mit REPEAT UNTIL
Bis zu drei Passwörter nacheinander ausprobieren und Zugang gewähren, wenn eines davon stimmt.
DECLARE attempts : ARRAY[1:3] OF STRING
DECLARE tries : INTEGER
DECLARE guess : STRING
attempts[1] ← "hunter1"
attempts[2] ← "letmein"
attempts[3] ← "open sesame"
tries ← 0
REPEAT
tries ← tries + 1
guess ← attempts[tries]
OUTPUT "Try ", tries, ": ", guess
UNTIL guess = "open sesame" OR tries = 3
IF guess = "open sesame" THEN
OUTPUT "Access granted"
ELSE
OUTPUT "Locked out"
ENDIFTry 1: hunter1
Try 2: letmein
Try 3: open sesame
Access grantedEine REPEAT ... UNTIL-Schleife prüft ihre Bedingung am Ende, deshalb läuft der Rumpf immer mindestens einmal. Sie hört auf, wenn das Passwort stimmt oder nach dem dritten Versuch. Die Versuche kommen aus einem Array, damit das Beispiel ohne Eingabe läuft; in einer Prüfungsantwort würdest du jeden Versuch meist mit INPUT einlesen.
FAQ zu Pseudocode-Beispielen
Was ist ein Beispiel für Pseudocode?
Ein kurzes Beispiel entscheidet, ob ein Test bestanden ist: IF score >= 50 THEN OUTPUT "Pass" ELSE OUTPUT "Fail" ENDIF. Das liest sich fast wie Englisch, folgt aber festen Regeln und lässt sich deshalb Zeile für Zeile in Python, Java oder jede andere Sprache übertragen. Die 15 Programme auf dieser Seite reichen von einer einzigen Zeile bis zu Suchen und Sortieren.
Wie schreibt man Pseudocode?
Überlege, was das Programm tun soll, und schreib die Schritte dann der Reihe nach mit wenigen Schlüsselwörtern auf: DECLARE für Variablen, ← für Zuweisungen, IF für Entscheidungen, FOR oder WHILE für Wiederholungen und OUTPUT für Ergebnisse. Rücke den Rumpf jedes Blocks ein, schließ ihn mit seinem End-Schlüsselwort und schreib pro Zeile nur eine Aktion.
Ist Pseudocode in jeder Prüfung gleich?
Nein. Cambridge (IGCSE und A-Level) verwendet DECLARE und den Pfeil ←, AQA verwendet ← ohne Deklarationen, die Exam Reference Language von OCR sieht aus wie Python, und Edexcel schreibt SET ... TO. Die Beispiele hier verwenden Cambridge; der Pseudocode-Editor wechselt zwischen allen vier Stilen.
Kann ich Pseudocode ausführen?
Ja, auf dieser Seite. Pseudocode ist keine echte Programmiersprache, deshalb gibt es keinen offiziellen Compiler. Der Editor hier führt Cambridge-Pseudocode aber in deinem Browser aus, zeigt die Ausgabe und geht ihn Zeile für Zeile durch. Klicke unter einem beliebigen Beispiel auf Im Editor ausführen.
Was ist der Unterschied zwischen Pseudocode und einem Flussdiagramm?
Beide beschreiben einen Algorithmus, bevor er programmiert wird. Ein Flussdiagramm zeichnet die Schritte als Kästen und Pfeile, was zu kurzen Abläufen mit wenigen Entscheidungen passt. Pseudocode schreibt sie als strukturierten Text, der auch für längere Programme taugt und sich direkter in echten Code übertragen lässt.
Muss ich Variablen im Pseudocode deklarieren?
Im Cambridge-Pseudocode ja: Die Bewertungsschemata erwarten DECLARE name : TYPE, bevor eine Variable verwendet wird. Andere Stile, etwa der von AQA, lassen Deklarationen weg. Eine Deklaration zeigt dem Leser außerdem, welche Art von Wert die Variable enthält.