Was ist ein Algorithmus?

Was ist der Unterschied zwischen Algorithmus und Programm? An diese Frage kommt man nicht vorbei, wenn man rausfinden möchte was ein Algrothmus ist und wodurch er sich abgrenzt. Dabei scheint die Grenze fließend … aber sie ist existent!

Algorithmus vs. Programm

Algorithmus vs. Programm

Neulich sagte eine Kollegin zu mir „Dein Algorithmus ist echt cool“, lassen wir das Kompliment (danke Sam!) und die #Nerdigkeit des Satzes beiseite, so ist er grundlegend falsch. Denn sie meinte damit meinen geschriebenen Code. Aber wo genau liegt jetzt der Unterschied zwischen Programmcode (Programm) und Algorithmus?

Die Grenze zwischen dem geschriebenen Programm und Algorithmus ist fließend, denn es gibt unterschiedlichste Definitionen. Ich möchte es so erklären, wie ich es in der Ausbildung und im Studium gelernt habe. Diese Definition fand ich bisher die logischste und vor allem mit klarer Abgrenzung. Außerdem hat mein Professor immer Recht ;).

Programm vs. Algorithmus

Im Grunde kann man die Frage nach dem Unterschied von Programm und Algorithmus recht kurz beantworten. Der Algorithmus ist die Beschreibung eines Vorgangs oder Programms. Das Programm ist der umgesetzte Algorithmus in Quelltext (Sourcecode).

Der Algorithmus grenzt sich in seiner Programmiersprachenunabhängigkeit ab, dabei wird das Programm allgemein beschrieben. Das Programm hingegen ist in einer Programmiersprache umgesetzt. Ein kleines Beispiel: Stellt man sich ein Brettspiel vor, so ist die schriftliche Anleitung der Algorithmus. Das wirkliche spielen und anwenden der zuvor im Algorithmus beschriebenen Regeln, stellt das Programm dar.

Darstellung eines Algorithmus

Als nächstes stellt sich die Frage wie man einen Algorithmus darstellt? Dazu gibt es folgend mehrere Mittel. Die Beispiele beschreiben immer den gleichen Ablauf, dieser wird im nächsten Absatz konkret im Programm dargestellt.

PAP (Programmablaufplan):

Programmablaufplan (PAP)

Programmablaufplan (PAP)

Der Programmablaufplan ist ein Klassiker um Algorithmen darzustellen. Dabei hat man alle Elemente einer Programmiersprache verfügbar (If, Schleifen, Methodenaufrufe usw.). Somit kann man ein Programm in der ganzen Logik darstellen, ohne dass man sich auf eine Programmiersprache festlegen muss.

Wie genau du einen Programmablaufplan erstellst, erfährst du hier!

Einfache Beschreibung:

Wie im Beispiel erwähnt, genügt manchmal auch eine textuelle Beschreibung  in der man Ablauf und Regeln definiert.

„Es soll eine Zahl eingegeben werden die größer Null ist, ansonsten beendet sich das Programm. Anschließend soll die Zahl 3 separat mit jeder Zahl von 0 bis inklusive Eingabe multipliziert und pro Multiplikation ausgegeben werden.“

[ContentAd]

Pseudocode:

Pseudocode

Pseudocode

Der Pseudocode ähnelt dem PAP in seiner Absicht den Algorithmus logisch zu gestallten. Dabei wird das Programm quasi programmiert, jedoch in einer recht freien Art und Weise. Dabei können die üblichen Schlüsselworte if, else, for usw. (aber auch wenn, dann, von, bis) verwendet werden. Der Pseudocode soll aber so gehalten sein, dass man ihn einfach lesen kann und keiner konkreten Programmiersprachen-Syntax folgt.

Struktogramm:

Struktogramm

Struktogramm

Das Struktogramm ist dem PAP ähnlich nur in Kastenform. Jedoch stehe ich mit dem Struktogramm auf Kriegsfuß. Denn plant man den Algorithmus nicht richtig und es kommt eine weitere Anweisung hinzu, so muss die eigentliche Grenze gestrichen und erweitert werden. So wird das Struktogramm (wenn man es mit der Hand zeichnet) schnell unsauber.

Programm

Im folgendem habe ich das Programm umgesetzt. Das heißt ich habe die formale Beschreibung des Algorithmus umgesetzt und in ein Programm verwirklicht. Zwei Ausführungen: in Java und PHP.

[code language=“java“]
/**
* JAVA
* Multipliziert 0 bis input mit 3 und
* gibt die Ergebnisse aus
* @param input: Zahleneingabe
*/
public static void multiplikation(int input){
if (input > 0){
for (int i = 0; i <= input; i++) {
System.out.println(3*i);
}
}
}
[/code]
[code language=“php“]
/**
* PHP
* Multipliziert 0 bis input mit 3 und
* gibt die Ergebnisse aus
* @param $input: Zahleneingabe
*/
function multiplikation($input){
if ($input > 0){
for ($i = 0; $i < $input; $i++) {
echo $i * 3;
}
}
}
[/code]

Berühmte Algorithmen

Algorithmen gibt es viele und das nicht erst seit dem es Computer gibt. Anbei ein paar Beispiele:

  • Euklidischer Algorithmus: der älteste bekannte (nicht triviale) Algorithmus ist der euklidische Algorithmus (ca. 300 v. Chr.) zum bestimmen des größten gemeinsamen Teiler.
  • Algorithmus von Trémaux’: dieser bietet ein Vorgehen an, welches sicher durch jedes Labyrinth bzw. Irrgarten führt.
  • Google Algorithmus: Auch die Google Algorithmen, die alle nach Tieren benannt sind (Panda, Hummingbird usw.) gehören dazu. Diese beschreiben die Art wie Google beurteilt welche Seiten wie relevant sind und unter welchen Suchbegriffen diese ranken.
  • Eine Liste von Algorithmen findest du bei Wikipedia: Liste von Algorithmen

MrKnowing

Programmierer und Wissensnerd! Kontaktiere mich auf Google+ oder einfach per Mail danny@mrknowing.com

You may also like...

1 Response

  1. 13. März 2014

    […] Eine Grundlage um Software zu entwerfen und komplizierte logische Abfolgen darzustellen, bietet der PAP. In einfachen sequenziellen Schritten kann so eine komplexe Programmlogik beschrieben werden. Zumeist dient der Programmablaufplan dazu einen programmneutralen Algorithmus zu beschreiben. Wie sich der Algorithmus vom tatsächlichen Programm unterscheidet erfährst du hier! […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.