<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Pseudocode</id>
	<title>Pseudocode - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Pseudocode"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Pseudocode&amp;action=history"/>
	<updated>2026-05-15T17:03:12Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Pseudocode&amp;diff=11158&amp;oldid=prev</id>
		<title>imported&gt;Ulmenholz am 6. Januar 2025 um 08:47 Uhr</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Pseudocode&amp;diff=11158&amp;oldid=prev"/>
		<updated>2025-01-06T08:47:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Der &amp;#039;&amp;#039;&amp;#039;Pseudocode&amp;#039;&amp;#039;&amp;#039; ist ein Programmcode, der nicht zur maschinellen Interpretation, sondern lediglich zur Veranschaulichung eines [[Programmierparadigma|Paradigmas]] oder [[Algorithmus]] dient. Meistens ähnelt er [[Höhere Programmiersprache|höheren Programmiersprachen]], gemischt mit [[Natürliche Sprache|natürlicher Sprache]] und mathematischer Notation. Mit Pseudocode kann ein Programmablauf unabhängig von zugrunde liegender Technologie beschrieben werden. Er ist damit oft kompakter und leichter verständlich als realer Programmcode.&amp;lt;ref&amp;gt;{{Literatur |Autor=[[Kurt Mehlhorn]] und [[Peter Sanders]] |Titel=Algorithms and Data Structures |Verlag=Springer |Ort=Berlin Heidelberg |Datum=2008 |ISBN=978-3-540-77977-3 |Seiten=26}}&amp;lt;/ref&amp;gt; Andererseits ist er formaler und damit klarer und weniger missverständlich als eine Beschreibung in natürlicher Sprache.&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
Um einen [[Algorithmus]] zu verstehen, kann man ihn als Programm untersuchen. Das wird aber erschwert durch die Eigenheiten der Programmiersprache, vor allem ihrer [[Syntax]]. Zudem haben verschiedene Programmiersprachen unterschiedliche Syntaxen. Jede Formulierung als Programm in einer bestimmten Programmiersprache schließt alle Leser aus, die dieser Sprache nicht mächtig sind. Deshalb formuliert man den Algorithmus zwar ähnlich einem Programm, aber ohne auf eine bestimmte Programmiersprache einzugehen: in Pseudocode.&lt;br /&gt;
&lt;br /&gt;
Pseudocode wird dann eingesetzt, wenn die Funktionsweise eines Algorithmus erklärt werden soll und Einzelheiten der Umsetzung in eine Programmiersprache stören würden. Ein typisches Beispiel sind die [[Feld (Datentyp)|Felder]], die etwa in [[Pascal (Programmiersprache)|Pascal]] von Eins an indiziert werden, in anderen Sprachen wie [[Java (Programmiersprache)|Java]] dagegen von Null an. In Lehrbüchern werden deshalb Algorithmen gelegentlich in Pseudocode wiedergegeben.&lt;br /&gt;
&lt;br /&gt;
Man kann ein Programm durch Pseudocode [[Spezifikation|spezifizieren]]. Das sollte allerdings eher vermieden werden, denn die Formulierung als Pseudocode ist bereits eine Programmiertätigkeit, die von der Konzentration auf die Anforderungen ablenkt.&amp;lt;ref&amp;gt;{{Literatur |Hrsg=Johannes Siedersleben |Titel=Softwaretechnik |Verlag=Hanser |Ort=München |Datum=2003 |ISBN=3-446-21843-2 |Seiten=44ff.}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch bei der Entwicklung von Algorithmen und der Umformung von Programmen ([[Programmtransformation]], [[Refactoring]]) wird Pseudocode eingesetzt.&lt;br /&gt;
&lt;br /&gt;
== Aussehen und Stilrichtungen ==&lt;br /&gt;
Pseudocode hat den Anspruch, intuitiv klar zu sein. Geeignete [[Metapher]]n aus der Umgangssprache geben einen Verfahrensschritt prägnant wieder, ohne dass dazu eine Erklärung nötig ist, zum Beispiel „durchlaufe das Feld a mit Index i“ oder „vertausche die Inhalte der Variablen x und y“. Solche Stilmittel verbessern die Übersicht.&lt;br /&gt;
&lt;br /&gt;
Pseudocode kann sich in seinem Stil an eine bestimmte höhere Programmiersprache anlehnen, zum Beispiel an [[Pascal (Programmiersprache)|Pascal]] oder an [[C (Programmiersprache)|C]]. Ein an die Programmiersprache [[Java (Programmiersprache)|Java]] angelehnter Pseudo-Code nennt sich [[Jana (Informatik)|Jana]]. Im Pascal-Stil werden [[Schlüsselwort (Programmierung)|Schlüsselwörter]] wie &amp;lt;code&amp;gt;begin&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;end&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;then&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;do&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;repeat&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;until&amp;lt;/code&amp;gt; benutzt. Im C-Stil werden stattdessen geschweifte Klammern &amp;lt;code&amp;gt;{&amp;lt;/code&amp;gt;,&amp;lt;code&amp;gt;}&amp;lt;/code&amp;gt; gesetzt und das Schlüsselwort &amp;lt;code&amp;gt;then&amp;lt;/code&amp;gt; wird ausgelassen. Dieser Stil wird oft von Programmierern benutzt, die solche Sprachen verwenden. Beide Stile findet man in Lehrbüchern.&lt;br /&gt;
&lt;br /&gt;
Die Blockstruktur wird gelegentlich auch nur durch Einrücken wiedergegeben.&lt;br /&gt;
&lt;br /&gt;
Eine Liste häufig verwendeter Schlüsselwörter:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Module&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;program &amp;#039;&amp;#039;Programmname&amp;#039;&amp;#039; ... end &amp;#039;&amp;#039;Programmname&amp;#039;&amp;#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;klasse &amp;#039;&amp;#039;Klassenname&amp;#039;&amp;#039; { ... }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Fallunterscheidungen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;if ... then ... else ... end if/exit&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;wenn ... dann ... sonst ... wenn_ende&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;falls ... dann ... falls_nicht ... falls_ende&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Schleifen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;wiederhole ... solange/bis ... wiederhole_ende&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;while ... do ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;repeat ... until ...&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;for ... to ... step &amp;#039;&amp;#039;Schrittweite&amp;#039;&amp;#039; ... next&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kommentare&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;// kommentar&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;# kommentar&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/* kommentar */&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Definition von Funktionen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;function() ... begin ... end&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;funktion() ... start ... ende&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Zusicherungen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;assert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;jetzt gilt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== Pseudocode im Stil von Pascal ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
program Name und Kurzbeschreibung&lt;br /&gt;
   LiesDatenStruktur&lt;br /&gt;
   LiesDatenInhalt&lt;br /&gt;
    ...&lt;br /&gt;
   if DatenUnvollständig then&lt;br /&gt;
      FehlerMelden&lt;br /&gt;
      exit&lt;br /&gt;
   end if&lt;br /&gt;
   HauptstatistikBerechnen&lt;br /&gt;
   ZusammenstellungBerechnen&lt;br /&gt;
   Resultate in HTML-Datei schreiben&lt;br /&gt;
end program Name&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Siehe auch|Pascal (Programmiersprache)}}&lt;br /&gt;
&lt;br /&gt;
=== Pseudocode im Buch &amp;#039;&amp;#039;Algorithmen – Eine Einführung&amp;#039;&amp;#039; ===&lt;br /&gt;
Im Buch &amp;#039;&amp;#039;Algorithmen – Eine Einführung&amp;#039;&amp;#039;&amp;lt;ref name=&amp;quot;Algorithmen&amp;quot;&amp;gt;{{Literatur |Autor=Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, Clifford Stein |Titel=Algorithmen – Eine Einführung |Auflage=3. |Verlag=Oldenbourg Wissenschaftsverlag |Ort=München |Datum=2010 |ISBN=978-3-486-59002-9 |Seiten=21 ff.}}&amp;lt;/ref&amp;gt; (englischer Originaltitel &amp;#039;&amp;#039;Introduction to Algorithms&amp;#039;&amp;#039;, übersetzt von [[Paul Molitor (Informatiker)|Paul Molitor]]) werden Konventionen für einen Pseudocode definiert. Dabei werden keine Fehlerbehandlungen und andere Ausnahmen behandelt. Das folgende Beispiel (angelehnt an das erwähnte Buch&amp;lt;ref name=&amp;quot;Algorithmen&amp;quot; /&amp;gt;{{rp|18}}) zeigt den [[Insertionsort]]-Algorithmus in dieser Pseudocode-Variante.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Die Inkonsistenz zwischen dem englischen &amp;#039;while&amp;#039; und dem deutschen &amp;#039;und&amp;#039; stammt aus dem Buch. --&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot; line&amp;gt;&lt;br /&gt;
INSERTION-SORT(A)&lt;br /&gt;
   for j = 2 to A.länge&lt;br /&gt;
      schlüssel = A[j]&lt;br /&gt;
      // Setze A[j] in das sortierte Teilfeld A[1 .. j - 1] ein&lt;br /&gt;
      i = j - 1&lt;br /&gt;
      while i &amp;gt; 0 und A[i] &amp;gt; schlüssel&lt;br /&gt;
         A[i + 1] = A[i]&lt;br /&gt;
         i = i - 1&lt;br /&gt;
      A[i + 1] = schlüssel&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es gelten in dieser Pseudocode-Variante folgende Konventionen:&lt;br /&gt;
* Einrückungen kennzeichnen die Blockstruktur. So werden im Beispiel die Zeilen 2 bis 9 der Prozedur &amp;lt;code&amp;gt;INSERTION-SORT&amp;lt;/code&amp;gt; zugeordnet, die Zeilen 3 bis 9 der &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;-Schleife und die Zeilen 7 und 8 der &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-Schleife.&lt;br /&gt;
* Feldelemente werden mit 1 beginnend durchnummeriert.&lt;br /&gt;
&lt;br /&gt;
==== Schleifen ====&lt;br /&gt;
Es gibt die drei [[Schleife (Programmierung)|Schleifenkonstrukte]]:&lt;br /&gt;
* &amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;-Schleife mit folgender Syntax:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bnf&amp;quot;&amp;gt;&lt;br /&gt;
while &amp;lt;Bedingung&amp;gt;&lt;br /&gt;
   &amp;lt;eingerückte Anweisung&amp;gt;*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;-Schleife mit folgender Syntax:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bnf&amp;quot;&amp;gt;&lt;br /&gt;
for &amp;lt;Initialisierung&amp;gt; to|downto &amp;lt;Endebedingung&amp;gt; [by &amp;lt;delta&amp;gt;]&lt;br /&gt;
   &amp;lt;eingerückte Anweisung&amp;gt;*&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;code&amp;gt;to&amp;lt;/code&amp;gt; verwendet, wenn die Laufvariable in jedem Schleifendurchlauf um &amp;lt;code&amp;gt;delta&amp;lt;/code&amp;gt; bzw. eins erhöht wird, oder das Schlüsselwort &amp;lt;code&amp;gt;downto&amp;lt;/code&amp;gt;, wenn die Laufvariable bei jedem Durchlauf um &amp;lt;code&amp;gt;delta&amp;lt;/code&amp;gt; bzw. eins verringert wird.&lt;br /&gt;
* &amp;lt;code&amp;gt;repeat-until&amp;lt;/code&amp;gt;-Schleife mit folgender Syntax:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bnf&amp;quot;&amp;gt;&lt;br /&gt;
repeat&lt;br /&gt;
   &amp;lt;eingerückte Anweisung&amp;gt;*&lt;br /&gt;
until &amp;lt;Endebedingung&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Verzweigungen ====&lt;br /&gt;
Verzweigungen werden durch &amp;lt;code&amp;gt;if-else&amp;lt;/code&amp;gt; gekennzeichnet:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bnf&amp;quot;&amp;gt;&lt;br /&gt;
if &amp;lt;Bedingung&amp;gt;&lt;br /&gt;
   &amp;lt;eingerückte Anweisungen im If-Teil&amp;gt;*&lt;br /&gt;
[else&lt;br /&gt;
   &amp;lt;eingerückte Anweisung im Else-Teil&amp;gt;*]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sonstiges ====&lt;br /&gt;
* Kommentare werden durch &amp;lt;code&amp;gt;//&amp;lt;/code&amp;gt; gekennzeichnet.&lt;br /&gt;
* Mehrfachzuweisung wie &amp;lt;code&amp;gt;i = j = k&amp;lt;/code&amp;gt; werden von rechts nach links interpretiert: &amp;lt;code&amp;gt;j = k&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;i = j&amp;lt;/code&amp;gt;&lt;br /&gt;
* Variablen sind ohne explizite Kennzeichnung immer nur lokal verwendbar.&lt;br /&gt;
* Auf Elemente in einem Feld wird über einen Index in eckigen Klammern zugegriffen: &amp;lt;code&amp;gt;A[3]&amp;lt;/code&amp;gt; gibt das Element mit dem Index &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; zurück.&lt;br /&gt;
* Zusammenhängende Daten werden in Objekte gekapselt, auf deren Attribute mit dem Punktoperator zugegriffen werden kann, z.&amp;amp;nbsp;B. die Variablen &amp;lt;code&amp;gt;Vorname&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;Nachname&amp;lt;/code&amp;gt; werden in ein Objekt &amp;lt;code&amp;gt;Person&amp;lt;/code&amp;gt; gekapselt. Mit &amp;lt;code&amp;gt;Person.Vorname&amp;lt;/code&amp;gt; kann auf das Attribut &amp;lt;code&amp;gt;Vorname&amp;lt;/code&amp;gt; zugegriffen werden.&lt;br /&gt;
* Bei Prozeduraufrufen werden Basistypen als Werte übergeben (&amp;quot;call by value&amp;quot;), Objekte und Felder mit einer Referenz (&amp;quot;call by reference&amp;quot;).&lt;br /&gt;
* Das Schlüsselwort &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt; kennzeichnet das Ende einer Prozedur und kann einen optionalen Rückgabewert enthalten.&lt;br /&gt;
* Die Booleschen Operatoren „und“ und „oder“ sind träge Operatoren, das heißt für „x und y“ wird zunächst x ausgewertet. Wenn x falsch ist, wird y nicht mehr ausgewertet.&lt;br /&gt;
* Das Schlüsselwort &amp;lt;code&amp;gt;error&amp;lt;/code&amp;gt; wird verwendet, wenn ein Fehler aufgetreten ist. Die Fehlerbehandlung übernimmt die aufrufende Prozedur und muss nicht weiter spezifiziert werden.&lt;br /&gt;
&lt;br /&gt;
== Alternativen ==&lt;br /&gt;
Anstelle von Pseudo-Code können auch [[Ablaufdiagramm]]e wie das [[Nassi-Shneiderman-Diagramm]], das [[Jackson-Diagramm]] oder der normierte [[Programmablaufplan]] verwendet werden.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Beschreibungssprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Ulmenholz</name></author>
	</entry>
</feed>