LaTeX Extra > LaTeX Pakete > Pseudocode in LaTeX


Das algorithms Bundle beinhaltet zwei verschiedene Pakete zur Darstellung von Pseudocode. Das algorithmic Paket (Version v0.1, 24.08.2009) dient zum Setzen des Pseudocodes während das algorithm Paket (Version v0.1, 24.08.2009) für die Umsetzung des Pseudocodes in einem Gleitobjekt (float) benötigt wird. Um die volle Funktionalität des Bundles nutzen zu können ist es daher notwendig beide Pakete einzubinden.

Umgebungen

Die zwei neuen Umgebungen algorithmic und algorithm sind Bestandteil des Bundles. Innerhalb der erste Umgebung algorithmic wird der Pseudocode gesetzt. Die zweite Umgebung algorithm ist eine so genannte float wrapper Umgebung welche um die erste gesetzt werden kann. Das Zusammenspiel zwischen den beiden Umgebungen ist mit dem Duo tabular und table vergleichbar.

Einbinden des algorithmic Pakets

Das algorithmic Paket wird mit \usepackage{algorithmic} eingebunden und bindet seinerseits noch die Pakete ifthen und keyval ein. Das Paket hat nur eine Option noend. Wenn die Option noend gesetzt wird, wird das END Statement weggelassen um Platz zu sparen.

algorithmic Umgebung

Die algorithmic Umgebung hat eine Option. Dabei handelt es sich um die Möglichkeit die Schrittweite der Nummerierung der Zeilen angeben zu können. Wenn eine 1 gesetzt wird, wird jede Zeile nummeriert, wenn eine 2 gesetzt wird, wird jede zweite Zeile nummeriert und so weiter.

\begin{algorithmic}[Schrittweite]
...
\end{algorithmic}
Im Fall, dass keine Nummerierung erfolgen soll wird die Option einfach weggelassen:
\begin{algorithmic}
...
\end{algorithmic}

Schleifen

Schleifen unterscheiden sich unter anderem darin, ob sie eine Bedingung haben oder nicht und im Fall das sie eine besitzen wo diese geprüft wird.

\LOOP \STATE{Text} \ENDLOOP

\FOR{Bedingung} \STATE {Text} \ENDFOR

\FOR{Bedingung> \TO } \STATE {Text} \ENDFOR

\FORALL{Bedingung} \STATE{Text} \ENDFOR

\WHILE{Bedingung} \STATE{Text} \ENDWHILE

\REPEAT \STATE{Text} \UNTIL{Bedingung}

Fallunterscheidung

Hier kann zwischen einer einfachen Fallunterscheidung und einer mehrfachen hintereinander durchgeführten Fallunterscheidung unterschieden werden.

\IF{Bedingung} \STATE {Text} \ELSE \STATE{Text} \ENDIF

\IF{Bedingung} \STATE {Text} \ELSIF{Bedingung} \STATE{Text} \ENDIF

Textausgabe

Für die Ausgabe von Text beziehungsweise den Wert einer Variable gibt es die folgenden Befehle.

\COMMENT{Text} Kommentar

\STATE Text Aussage

\REQUIRE Text Eingabe

\ENSURE Text Ausgabe

\RETURN Text Rückgabewert

\PRINT Text Print

Logische Ausdrücke

\AND, \OR, \XOR, \NOT, \TO, \TRUE, \FALSE

Beispiel algorithmic Umgebung

Das nachfolgende Beispiel zeigt anhand des Euklidischen Algorithmus die Umsetzung der Darstellung von Quellcode mittels der algorithmic Umgebung.

\begin{algorithmic}
\IF{$a = 0$} 
\RETURN $b$ 
\ELSE 
\WHILE{$b \neq 0$}
\IF{$a > b$}
\STATE $a \leftarrow a - b$
\ELSE
\STATE $b \leftarrow b - a$
\ENDIF
\ENDWHILE
\RETURN $a$
\ENDIF
\end{algorithmic}

Anpassen der Ausgabe

Für den Fall, dass die Ausgabe der einzelnen Befehle angepasst werden muss, kann dies über \renewcommand{\algorithmic<Name des Befehls>}{Neue Ausgabe} erfolgen.

Name des BefehlsOrginalausgabe
requireRequire:
ensureEnsure:
endend
ifif
thenthen
elseelse
forfor
forallfor all
dodo
whilewhile
looploop
repeatrepeat
untiluntil
printprint
returnreturn
andand
oror
xorxor
notnot
toto
inputsinputs
outputsoutputs
globalsglobals
bodydo
truetrue
falsefalse
Beispiel

Angenommen if-then-else soll zu wenn-dann-sonst verändert werden.

\renewcommand{\algorithmicif}{\textbf{wenn}}
\renewcommand{\algorithmicthen}{\textbf{dann}}
\renewcommand{\algorithmicelse}{\textbf{sonst}}

Einbinden des algorithm Pakets

Das algorithm Paket wird mit \usepackage{algorithm} eingebunden und bindet seinerseits noch die Pakete float und ifthen ein. Das Paket bietet eine breite Auswahl an Optionen bezüglich der Darstellung des Gleitobjektes in dem der Pseudocode gesetzt wird und der Zählung dieser Objekte.

Die Darstellung des Codeblocks kann über die folgenden drei Optionen verändert werden.

Die Zählung der Codeblöcke beziehungsweise wann der Zähler wieder auf Null zurückgesetzt werden soll lässt sich über die folgenden Optionen festlegen.

Die Verwendung dieser Optionen setzt voraus, dass der jeweilige Zähler für die gewünschte Gliederungsebene auch vorhanden ist. So ist etwa die Option chapter in der article Klasse nicht möglich da es dort keinen \chapter Befehl gibt und es dem entsprechend dort auch keinen Zähler chapter gibt.

Anpassung der Ausgabe

Mit den oben oben gezeigten Optionen lässt sich die Ausgabe des Pseudocodes anpassen.

...
\usepackage[plain]{algorithm}
...
\begin{algorithm}
\caption{Euclid}
\begin{algorithmic}
\IF{$a = 0$} 
\RETURN $b$ 
\ELSE 
\WHILE{$b \neq 0$}
\IF{$a > b$}
\STATE $a \leftarrow a - b$
\ELSE
\STATE $b \leftarrow b - a$
\ENDIF
\ENDWHILE
\RETURN $a$
\ENDIF
\end{algorithmic}
\end{algorithm}
...
Die Ausgabe von Quellecode in der plain Variante
...
\usepackage[ruled]{algorithm}
...
\begin{algorithm}
\caption{Euclid}
\begin{algorithmic}
\IF{$a = 0$} 
\RETURN $b$ 
\ELSE 
\WHILE{$b \neq 0$}
\IF{$a > b$}
\STATE $a \leftarrow a - b$
\ELSE
\STATE $b \leftarrow b - a$
\ENDIF
\ENDWHILE
\RETURN $a$
\ENDIF
\end{algorithmic}
\end{algorithm}
...
Die Ausgabe von Quellecode in der ruled Variante welche auch die default Einstellung ist.
...
\usepackage[boxed]{algorithm}
...
\begin{algorithm}
\caption{Euclid}
\begin{algorithmic}
\IF{$a = 0$} 
\RETURN $b$ 
\ELSE 
\WHILE{$b \neq 0$}
\IF{$a > b$}
\STATE $a \leftarrow a - b$
\ELSE
\STATE $b \leftarrow b - a$
\ENDIF
\ENDWHILE
\RETURN $a$
\ENDIF
\end{algorithmic}
\end{algorithm}
...
Die Ausgabe von Quellecode in einer Box also in der boxed Variante

Beschriftung ändern

Soll die Beschriftung geändert werden geht dies mit dem Befehl \floatname{algorithm}{Neue Beschriftung}.

Übersicht einfügen

Mit dem Befehl \listofalgorithms wird an der gewünschten Stelle im Dokument eine Übersicht der im Dokument in Pseudocode gesetzten Programme eingefügt. Vorausgesetzt dass diese sich diese innerhalb einer algorithm Umgebung befinden. Per default ist der Title List of Algorithms.

Der Titel kann durch einen \rennewcommand Befehl geändert werden. Im nachfolgenden Beispiel wird der Titel zu Pseudocode Liste geändert:

\renewcommand{\listalgorithmname}{Pseudocode Liste}

Literatur

The algorithms bundle, Version v0.1, Rogério Brito, 24.08.2009, Abgerufen unter: https://ctan.org/pkg/algorithms am 20.11.2020