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 |
Laut 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?
JANA: geschweifte Klammern
{
Anweisung
}
Pseudo-Pascal: Schlüsselwort end
for (...)
Anweisung
end for
Deutsches Pseudo-Pascal
WENN (...)
Anweisung
ENDE WENN
| JANA | Pseudo-Pascal | deutsches Pseudo-Pascal |
|---|---|---|
| int | integer | GANZZAHL |
| float | real | GLEITKOMMAZAHL |
| char | char | ZEICHEN |
| boolean | boolean | WAHRHEITSWERT |
| String | String | ZEICHENKETTE |
| Object | Object | OBJEKT |
JANA
int i
int i := 0
Object o
Pseudo-Pascal
i: int
i: int := 0
o: Object
Deutsches Pseudo-Pascal
i: GANZZAHL
i: GANZZAHL := 0
o: OBJEKT
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)
JANA
if (...) {
Anweisung
} else if (...) {
Anweisung
} else {
Anweisung
}
Pseudo-Pascal
if (...) then
Anweisung
else if (...)
Anweisung
else
Anweisung
end if
Deutsches Pseudo-Pascal
WENN (...) DANN
Anweisung
SONST WENN (...) DANN
Anweisung
SONST
Anweisung
ENDE WENN
JANA
switch (variable) {
case 1: {
Anweisung
}
case >=2: {
Anweisung
}
default: {
Anweisung
}
}
Pseudo-Pascal
case variable of
1: Anweisung
>=2: Anweisung
else Anweisung
end case
Deutsches Pseudo-Pascal
WERT VON variable ENTSPRICHT
1: Anweisung
>=2: Anweisung
SONST Anweisung
ENDE WERT VON
JANA
while (...) {
Anweisung
}
Pseudo-Pascal
while (...) do
Anweisung
end while
Deutsches Pseudo-Pascal
SOLANGE (...)
Anweisung
ENDE SOLANGE
JANA
do {
Anweisung
} while (...)
Pseudo-Pascal
repeat
Anweisung
until (...)
Deutsches Pseudo-Pascal
WIEDERHOLE
Anweisung
SOLANGE (...)
JANA
for (...) {
Anweisung
}
Pseudo-Pascal
for (...)
Anweisung
end for
Deutsches Pseudo-Pascal
ZÄHLE i VON 0 BIS 7 mit Schrittweite 2
Anweisung
ENDE ZÄHLE
Die 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)
JANA
foreach (String txt in txtList) {
Anweisung
}
Pseudo-Pascal
foreach element in list
Anweisung
next element
Deutsches Pseudo-Pascal
FÜR JEDES element VON liste
Anweisung
NÄCHSTES element
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()
JANA
int zahlenfeld[]
int zahlenfeld[1..100]
zahlenfeld[n, m]
zahlen2D[].length
Pseudo-Pascal
zahlenFeld = array [] of integer
zahlenFeld = array [1..100] of integer
zahlenFeld = array [1..n, 1..m] of integer
zahlen2D[].length
Deutsches Pseudo-Pascal
zahlenFeld = eindimensionales Ganzzahlen-Array
zahlenFeld = eindimensionales Ganzzahlen-Array mit 100 Elementen
zahlenFeld = zweidimensionales Ganzzahlen-Array
zahlen2D[].LÄNGE