Pseudo-Code

Einführung

Pseudocode ist ein Quelltext, der nicht zur maschinellen Interpretation oder Ausführung , sondern lediglich zur Veranschaulichung eines Algorithmus dient. Alternativ können Algorithmen auch durch Modellierungen (wie z.B. Aktivitätsdiagramm oder Struktogramme) dargestellt werden. Der Pseudocode ist an die natürliche Sprache angelehnt. Mit Pseudocode kann ein Programmablauf unabhängig von zugrunde liegender Programmiersprache (wie z.B. Java) beschrieben werden. Diese Schreibweise ist oft kompakter und leichter verständlich, da sie keine syntaktischen Kenntnisse einer konkreten Programmiersprache voraussetzt.

Beispiel

Folgendes Beispiel zeigt die Verwendung von Pseudocode, am Beispiel eines Sortierverfahrens (Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, Clifford Stein: Algorithmen - Eine Einführung. 3. Auflage. Oldenburg Wissenschaftsverlag GmbH, München 2010, ISBN 978-3-486-59002-9, S. 21 ff.).

INSERTION-SORT(A)

2

for j=2 to A.länge 3

schlüssel=A[j] 4

//füge A[j] in den sortierten Beginn des Arrays A[1..j-1] ein 5

i=j-1 6

while i>0 und A[i]>schlüssel 7

A[i+1]=A[i] 8

i=i-1 9

A[i+1]=schlüssel

Allgemeine Syntax

Es gelten in dieser Pseudocode-Variante folgende Konventionen:

Block

Einrückungen kennzeichnen die Blockstruktur. So werden im Beispiel die Zeilen 2 bis 9 der Prozedur INSERTION-SORT zugeordnet, die Zeilen 3 bis 9 der for-Schleife und die Zeilen 7 und 8 der while-Schleife.

Schleifen

Es werden drei Schleifen unterschieden:

    • while-Schleife mit folgender Syntax: while <Bedingung> <eingerückte Anweisung>*

    • for-Schleife mit folgender Syntax: for <Initialisierung> to|downto <Endebedingung> [by <delta>] <eingerückte Anweisung>*

    • repeat-until-Schleife mit folgender Syntax: repeat <eingerückte Anweisung>* * until <Endebedingung>

Die Laufvariable einer for-Schleife behält ihren Wert auch nach dem Durchlauf der Schleife. Sie enthält dann den Wert des letzten Schleifendurchlaufs. Bei for-Schleifen wird das Schlüsselwort to verwendet, wenn die Laufvariable in jedem Schleifendurchlauf um delta bzw. eins erhöht wird, oder das Schlüsselwort downto, wenn die Laufvariable bei jedem Durchlauf um delta bzw. eins verringert wird.

Verzweigungen

Verzweigungen werden durch if-else gekennzeichnet: if <Bedingung> <eingerückte Anweisungen im If-Teil>* [else <eingerückte Anweisung im Else-Teil>*]

Sonstiges

  • Kommentare werden durch // gekennzeichnet.

  • Mehrfachzuweisung wie i = j = k werden von rechts nach links interpretiert: j = k und i = j

  • Variablen sind ohne explizite Kennzeichnung immer nur lokal verwendbar.

  • Auf Elemente in einer Datenstruktur wird über einen Index in eckigen Klammern zugegriffen: A[3] gibt das Element mit dem Index 3 zurück.

  • Zusammenhängende Daten werden in Objekte gekapselt, auf deren Attribute mit dem Punktoperator zugegriffen werden kann, z. B. die Variablen Vorname und Nachname werden in ein Objekt Person gekapselt. Mit Person.Vorname kann auf das Attribut Vorname zugegriffen werden.

  • Bei Prozeduraufrufen werden Basistypen als Werte übergeben ("call by value"), Objekte und Felder mit einer Referenz ("call by reference").

  • Das Schlüsselwort return kennzeichnet das Ende einer Prozedur und kann einen optionalen Rückgabewert enthalten.

  • Die booleschen Operatoren „und“ und „oder“ sind träger Operatoren, das heißt für „x und y“ wird zunächst x ausgewertet. Wenn x wahr ist, wird y nicht ausgewertet.

  • Das Schlüsselwort error wird verwendet, wenn ein Fehler aufgetreten ist. Die Fehlerbehandlung übernimmt die aufrufende Prozedur und muss nicht weiter spezifiziert werden.

Jana

Jana (Java-Based Abstract Notation for Algorithms) ist eine an die Programmiersprache Java angelehnte Pseudocode-Sprache zur Formulierung von Algorithmen. Sie wird an der Johannes Kepler Universität Linz in der Algorithmen-Einführungsveranstaltung seit 2003 verwendet. Das PDF im Anhang beschreibt den Einsatz von Jana.