- 1 Section
- 10 Lessons
- unbegrenzt
- Algorithmen & Datenstrukturen10
- 1.1Was ist ein Algorithmus?
- 1.2Struktogramm (Nassi-Shneidermann)
- 1.3Pseudocode schreiben
- 1.4Kontrollstrukturen: Sequenz, Auswahl, Schleife
- 1.5Rekursion verstehen
- 1.6Suchen: linear vs. binär
- 1.7Sortieren: Bubble, Selection, Insertion, Merge
- 1.8O-Notation: Zeitkomplexität
- 1.9Datenstrukturen: Array, Liste, Stack, Queue, Baum, Hash
- 1.10Algorithmik-Aufgaben
Was ist ein Algorithmus?
„Algorithmus" klingt nach abstrakter Mathematik – ist aber etwas, das du jeden Tag benutzt. Wenn du ein Rezept kochst, einen Schuh bindest oder im Telefonbuch einen Namen suchst, folgst du einem Algorithmus. Ein Algorithmus ist nichts anderes als eine Folge eindeutiger Schritte, die ein Problem lösen.
Diese Lektion bildet das Fundament für den gesamten Kurs Algorithmen & Datenstrukturen. Du lernst: was einen Algorithmus von einer bloßen Anleitung unterscheidet, welche Eigenschaften er haben muss, wie man ihn beschreibt, und warum dieses Konzept das Herz der gesamten Informatik ist.
1) Definition und der Begriffsursprung
Der formale Begriff: ein Algorithmus ist eine eindeutige, endliche Beschreibung eines Lösungsweges – eine Folge von Anweisungen, die aus einer Eingabe schrittweise eine Ausgabe erzeugt. Wichtig: die Schritte müssen so präzise sein, dass auch ein Computer (oder eine fremde Person) sie ohne weitere Erklärungen nachvollziehen kann.
Der Name geht auf den persischen Mathematiker al-Chwarizmi zurück, der im 9. Jahrhundert in Bagdad lebte. Sein Buch über das indische Stellenwert-System (siehe K38 Lektion 1) wurde im Mittelalter ins Lateinische übersetzt – als „Algoritmi de numero Indorum". Über die Jahrhunderte wurde aus dem Namen al-Chwarizmi das Wort Algorithmus. Ein nettes Detail: das Wort Algebra stammt ebenfalls von ihm – aus dem Titel eines anderen seiner Bücher.
2) Rezept vs. Algorithmus
Die einfachste Analogie ist die mit dem Kochrezept. Beide sind Anleitungen mit Schritten. Aber Algorithmen haben höhere Ansprüche an Präzision – ein guter Algorithmus muss von jedem ausführbar sein, der die Grundoperationen beherrscht, ohne Raum für Interpretation:
3) Die fünf Eigenschaften eines Algorithmus
Was muss eine Folge von Anweisungen erfüllen, um ein Algorithmus zu sein? In der Informatik gibt es fünf klassische Kriterien. Diese sind regelmäßiger Klausurstoff – wer sie aufzählen und erklären kann, hat den theoretischen Teil bereits sicher:
4) Eingabe → Verarbeitung → Ausgabe (EVA-Prinzip)
Jeder Algorithmus folgt einem einfachen Grundschema: er bekommt eine Eingabe, führt eine Verarbeitung durch und liefert eine Ausgabe. Das nennt man auch das EVA-Prinzip. Diese Sicht macht es leicht, einen Algorithmus zu charakterisieren: was geht rein, was kommt raus, und was passiert dazwischen?
5) Beispiele für klassische Algorithmen
Hier ein paar Beispiele für Algorithmen, denen du in Studium und Beruf immer wieder begegnest. Jeder hat eine klare Eingabe, eine Verarbeitung und eine Ausgabe:
6) Beispiel zum Anschauen: ein Sortier-Algorithmus in Aktion
Abstrakt definiert ist schön und gut – aber wie wirkt ein Algorithmus, wenn er läuft? Hier siehst du einen einfachen Sortier-Algorithmus (Bubble Sort) bei der Arbeit. Er vergleicht immer zwei benachbarte Elemente und tauscht sie, wenn sie in der falschen Reihenfolge sind. Klick „Start":
7) Wie beschreibt man einen Algorithmus?
Es gibt verschiedene Darstellungsformen für Algorithmen, die in der Praxis und in der IHK-Prüfung wichtig sind. Jede hat ihre Stärken – welche du wählst, hängt vom Zweck ab:
- Umgangssprache: für ganz einfache Algorithmen und Erklärungen. Ungenau, aber für Menschen leicht zu lesen. Beispiel: „Suche das kleinste Element, tausche es nach vorn, wiederhole."
- Pseudocode: eine sprach-unabhängige, code-nahe Notation. Liest sich wie Code, aber ohne strenge Syntax. Häufig in der IHK-Prüfung. Mehr in Lektion 3.
- Struktogramm (Nassi-Shneiderman): grafische Darstellung mit verschachtelten Rechtecken. Sehr beliebt im Berufsschul-Kontext. Lektion 2.
- Flussdiagramm: grafisch mit verschiedenen Symbolen (Rechtecke für Aktionen, Rauten für Bedingungen, Pfeilen für Ablauf). Älteste Darstellungsform, in Klausuren seltener.
- Programmiersprache: die finale Form – als ausführbarer Code in z.B. Java oder Python. Mehr in K40a (Java) und K41a (Python).
Im Verlauf dieses Kurses lernst du die wichtigsten dieser Darstellungen kennen. Wer einen Algorithmus in verschiedenen Notationen ausdrücken kann, hat ihn meist auch verstanden.
8) Vom Problem zum Algorithmus – die Phasen
Wer einen Algorithmus entwirft, geht typischerweise durch mehrere Phasen. Diese sind nicht starr – aber es hilft enorm, bewusst nicht direkt vom Problem zum Code zu springen. Gerade bei nicht-trivialen Aufgaben spart das Zeit und Nerven:
9) Algorithmus vs. Programm
Eine wichtige begriffliche Trennung: ein Algorithmus ist die Beschreibung eines Lösungsweges – unabhängig von Programmiersprache, Hardware oder konkreten Datentypen. Ein Programm ist eine konkrete Umsetzung dieses Algorithmus in einer Programmiersprache, die ein Computer ausführen kann.
Beispiel: der Algorithmus Quicksort ist eine Methode zum Sortieren. Das Programm ist die konkrete Java- oder Python-Implementierung dieser Methode. Ein Algorithmus lässt sich in beliebig vielen Programmen umsetzen – in unterschiedlichen Sprachen, mit unterschiedlichen Datentypen, mit verschiedenen Optimierungen. Das Konzept dahinter bleibt aber dasselbe.
Zusammenfassung
Ein Algorithmus ist eine eindeutige, endliche Beschreibung eines Lösungsweges – eine Folge präziser Anweisungen, die aus einer Eingabe eine Ausgabe erzeugt. Der Begriff geht auf al-Chwarizmi zurück. Im Gegensatz zum Kochrezept verträgt ein Algorithmus keine Mehrdeutigkeit, weil er auch von „dummen" Maschinen ausgeführt werden soll. Die fünf klassischen Eigenschaften: Endlichkeit (endliche Beschreibung), Terminiertheit (hält an), Determiniertheit (gleiche Eingabe → gleiche Ausgabe), Determinismus (eindeutiger Ablauf), Eindeutigkeit (jeder Schritt klar). Grundstruktur ist das EVA-Prinzip: Eingabe → Verarbeitung → Ausgabe. Klassische Algorithmen: Suchen, Sortieren, ggT, kürzester Weg, Hashing, Kompression – die meisten lernen wir im Verlauf des Kurses kennen. Darstellungsformen: Umgangssprache, Pseudocode, Struktogramm, Flussdiagramm, Programmiersprache. Phasen beim Algorithmus-Design: Problem → Idee → Entwurf → Implementierung → Test – nicht überspringen! Wichtige Unterscheidung: Algorithmus = abstrakte Methode, Programm = konkrete Umsetzung in einer Sprache. Die nächsten Lektionen behandeln die wichtigsten Darstellungs- und Analyse-Werkzeuge: Struktogramme und Pseudocode.
