Pseudocode
Programmcode, der nicht zur maschinellen Interpretation dient.
Dieser Code dient vielmehr der Veranschaulichung eines Algoritmus.
Er hilft, einen Algorithmus zu verstehen, ohne die Zielgruppe auf eine spezielle Programmiersprache festzulegen.
Es gibt, neben anderen, vor allem folgende 3 Notationen:
| Notation | Beschreibung |
|---|---|
| JANA - Java based abstract notation for algorithms | An Java angelehnt |
| Pseudo-Pascal | An Pascal angeleht. Sehr “sprechend” |
| Deutsches Pseudo-Pascal | wie Pseudo-Pascal, nur mit deutschen Worten |
Pseudocode Eigenschaften
- Eliminiert diese Eigenheiten
- Formulierung ist ähnlich einem Programm
- Aber ohne konkrete Syntax einer bestimmten Programmiersprache
Laut https://oer-informatik.de/pseudocode ist wichtig bei der Erstellung von Pseudocode:
Verständlichkeit des Pseudocodes ist wichtiger als starre Konventionen!
Unnötige Details vermeiden: das Offensichtliche kann als bekannt vorausgesetzt werden!
Im Kontext bleiben: Wer ist Adressat und in welcher Problemdomäne befinde ich mich? Wem beantworte ich mit dem Pseudocode welche Frage?
Blockdefinition
JANA: geschweifte Klammern
{
Anweisung
}
Pseudo-Pascal: Schlüsselwort end
for (...) Anweisung end forDeutsches Pseudo-Pascal
WENN (...) Anweisung ENDE WENN
Standard-Datentypen (mit Beispielen)
| JANA | Pseudo-Pascal | deutsches Pseudo-Pascal |
|---|---|---|
| int | integer | GANZZAHL |
| float | real | GLEITKOMMAZAHL |
| char | char | ZEICHEN |
| boolean | boolean | WAHRHEITSWERT |
| String | String | ZEICHENKETTE |
| Object | Object | OBJEKT |
Beispielhafte Deklarationen
JANA
int i int i := 0 Object oPseudo-Pascal
i: int i: int := 0 o: ObjectDeutsches Pseudo-Pascal
i: GANZZAHL i: GANZZAHL := 0 o: OBJEKT
Operatoren
Wichtig: Zuweisungsoperator
:= // Zuweisung (besser als = im Pseudocode)
+,-,/,* // Mathematische Operatoren & // Sollte kommentiert werden (Bit- oder Textoperation) <, >, ==, != // Vergleichsoperatoren : // Typdeklaration (nicht Division!) AND, OR, NOT // Logische Operatoren (ggf. deutsch verwenden)
Selektion / bedingte Anweisung (if / else if / else)
JANA
if (...) {
Anweisung
} else if (...) {
Anweisung
} else {
Anweisung
}
Pseudo-Pascal
if (...) then Anweisung else if (...) Anweisung else Anweisung end ifDeutsches Pseudo-Pascal
WENN (...) DANN Anweisung SONST WENN (...) DANN Anweisung SONST Anweisung ENDE WENN
Mehrfachauswahl (switch / case)
JANA
switch (variable) {
case 1: {
Anweisung
}
case >=2: {
Anweisung
}
default: {
Anweisung
}
}
Pseudo-Pascal
case variable of 1: Anweisung >=2: Anweisung else Anweisung end caseDeutsches Pseudo-Pascal
WERT VON variable ENTSPRICHT 1: Anweisung >=2: Anweisung SONST Anweisung ENDE WERT VON
Kopfgesteuerte Schleife (while)
JANA
while (...) {
Anweisung
}
Pseudo-Pascal
while (...) do Anweisung end whileDeutsches Pseudo-Pascal
SOLANGE (...) Anweisung ENDE SOLANGE
Fußgesteuerte Schleife (do-while / repeat-until)
JANA
do {
Anweisung
} while (...)
Pseudo-Pascal
repeat Anweisung until (...)Deutsches Pseudo-Pascal
WIEDERHOLE Anweisung SOLANGE (...)
Zählergesteuerte Schleife (for)
JANA
for (...) {
Anweisung
}
Pseudo-Pascal
for (...) Anweisung end forDeutsches Pseudo-Pascal
ZÄHLE i VON 0 BIS 7 mit Schrittweite 2 Anweisung ENDE ZÄHLEDie zur iterierende Menge kann relativ frei eingegeben werden, solange sie eindeutig definiert wird. Denkbar ist z.B.:
for (int i = 1..10) for (int i; i<=10; i++) for (int i = 1, 2, 3, .., 10)
Iteration über Listen (foreach)
JANA
foreach (String txt in txtList) {
Anweisung
}
Pseudo-Pascal
foreach element in list Anweisung next elementDeutsches Pseudo-Pascal
FÜR JEDES element VON liste Anweisung NÄCHSTES element
Methodendeklaration (Funktion / Methode)
JANA
String halloWelt(String text) {
return "Hallo " & text
}
Pseudo-Pascal
FUNCTION halloWelt(text: String) : String Anweisung END halloWelt()Deutsches Pseudo-Pascal
FUNKTION halloWelt(text: String) : String RÜCKGABE "Hallo " & text ENDE halloWelt()
Arrays und Collections
JANA
int zahlenfeld[] int zahlenfeld[1..100] zahlenfeld[n, m] zahlen2D[].lengthPseudo-Pascal
zahlenFeld = array [] of integer zahlenFeld = array [1..100] of integer zahlenFeld = array [1..n, 1..m] of integer zahlen2D[].lengthDeutsches Pseudo-Pascal
zahlenFeld = eindimensionales Ganzzahlen-Array zahlenFeld = eindimensionales Ganzzahlen-Array mit 100 Elementen zahlenFeld = zweidimensionales Ganzzahlen-Array zahlen2D[].LÄNGE