LaTeX Extra > LaTeX Pakete > Pseudocode in LaTeX


Das algorithmicx Paket (Version v1.2 von 27.04.2005) ist ein Paket zum Setzen von Pseudocode innerhalb von LaTeX. Es handelt sich hierbei um eine Verbesserung beziehungsweise eine Erweiterung des bereits vorhanden algorithmic Paketes. Im Gegensatz zum algorithmic Paket verfügt es über vordefinierte Stile und zusätzliche Funktionen. Auch das algorithmicx Paket ermöglicht es zusammen mit dem algorithm Paket die gesetzten Code Blöcke in eine Gleitobjekt Umgebung zu setzen und ein entsprechendes Verzeichnis erstellen zu lassen.

Einbinden von algorithmicx

Das Paket wird mit \usepackage{algorithmicx} eingebunden und bindet seinerseits noch das ifthen Paket mit ein. Wobei bei der Verwendung der Stile nicht notwendig ist das algorithmicx Paket einzubinden.

Stile

Bei den Stilen handelt es sich ebenfalls um Pakete, die entsprechend mit \usepackage{Stilname} die automatisch das \usepackage{algorithmicx} mit einbinden.

Paket Optionen

Das algorithmicx selbst hat keine Optionen.

Das Paket algpseudocode verfügt über zwei Optionen mit je zwei Einstellungen. Zum einen end beziehungsweise noend und zum anderen compatible und noncompatible. Wobei letztere Option, die Kompatibilität bereist über das algcompatible erreicht wird. Die Ende Option entspricht jener des algorithmic Paketes, wird die noend Option geset wird das END Statement weggelassen.

Das Paket algcompatible verfügt ebenfalls über eine Ende Option mit der gleichen Wirkung.

Die zwei anderen Pakete algpascal und algc verfügen über keine Optionen.

Unterschiede zu algorithmic

Neben den Stilen sind die andere Schreibweisen der Befehle, die neuen zusätzlichen Befehle und die Möglichkeit der Anpassung durch den Nutzer, die Hauptunterschiede zu dem bereits vorhandenen algorithmic Paket.

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 Text \EndLoop

\For{Bedingung} Text \EndFor

\ForAll{Bedingung} Text \EndFor

\While{Bedingung} Text \EndWhile

\Repeat Text \Until{Bedingung}

Fallunterscheidung

Hier gibt es drei Möglichkeiten. Eine Wenn-Dann Variante und zwei Wenn-Dann-Sonst Varianten.

\If{Bedingung} Text \EndIf

\If{Bedingung} Text \Else Text \EndIf

\If{Bedingung} Text \ElsIf{Bedingung} Text \EndIf

Textausgaben

\State Text Aussage

\Comment{Text} Kommentar

Vor- und Nachbedingungnen

\Require Text Vorbedingung

\Ensure Text Nachbedingung

Prozeduren und Funktionen

Zu den neuen Elementen die in diesem Paket enthalten sind gehören unter anderen auch Prozeduren und Funktionen. Beide Elemente haben dabei den gleichen Aufbau.

\Procedure{Name}{Parameter}
Inhalt 
\EndProcedure
\Function{Name}{Parameter}
Inhalt
\EndFunction

algblock

Darüber hinaus ermöglicht es das Paket dem Nutzer auch einen eigenen Block zu definieren. Im Fall, dass der Block kein Parameter besitzt kann die Definition über \algblock[block]{start}{ende} erfolgen. Im Fall, dass der Block Parameter enthält:

\algblockdefx[block]{start}{end}
    [startparamcount][default value]{start text}
    [endparamcount][default value]{end text}

Beispiele

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithmic}[0]
\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{document}
Euklidischer Algorithmus
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{algpascal}
\begin{document}
\begin{algorithmic}
\Begin
\State $sum:=0$;
\For{i=1}{n}
\State $sum:=sum+i$;
\State writeln($sum$);
\End.
\end{algorithmic}
Pascal Beispiel

Literatur

The algorithmicx package, Version v1.2, Szász János, 27.05.2005, Abgerufen unter: https://ctan.org/pkg/algorithmicx am 21.11.2020