Einführung in die Algorithmik
In dieser Einstiegslektion lernst du die grundlegenden Konzepte der Algorithmik anhand praktischer Beispiele kennen. Du verstehst, was einen Algorithmus ausmacht und wie er sich von einfachen Anleitungen unterscheidet. Anhand eines alltäglichen Kuchenrezepts erkennst du die wichtigsten Eigenschaften und Prinzipien algorithmischen Denkens.
Einführung
Stell dir vor, du musst einem Roboter beibringen, wie man einen Kuchen backt. Du kannst ihm nicht einfach sagen: “Mach einen Kuchen.” Du musst jeden einzelnen Schritt klar und eindeutig beschreiben - vom Abwiegen der Zutaten bis zum Einschalten des Ofens.
Nur wenn jeder Schritt präzise definiert ist, kann der Roboter das gewünschte Ergebnis liefern.

Genau das ist die Grundidee der Algorithmik: Probleme so zu formulieren, dass sie von einem Computer verstanden und zuverlässig gelöst werden können.
In dieser Lerneinheit lernst du, was einen Algorithmus ausmacht, welche Eigenschaften er haben muss und wie du ihn planst und darstellst, bevor er in Code umgesetzt wird.
Lernziele
Nach dieser Lerneinheit kannst du
- den Begriff Algorithmus präzise definieren und die fünf Kriterien (Eingabe, Ausgabe, Eindeutigkeit, Ausführbarkeit, Endlichkeit) sicher anwenden.
- Qualitätsmerkmale von Algorithmen (Korrektheit, Effizienz, Skalierbarkeit) beurteilen und deterministische von randomisierten Verfahren unterscheiden.
- Abstraktion und Modularisierung auf ein Problem übertragen und geeignete Funktionen/Methoden strukturiert ableiten.
- Algorithmen in Pseudocode, Flussdiagrammen und Struktogrammen korrekt darstellen und die Darstellungsformen zielgerichtet auswählen.
Was ist ein Algorithmus?
Ein Algorithmus ist eine präzise und endliche Schritt-für-Schritt-Anleitung zur Lösung eines Problems. Stell es dir wie ein Kochrezept für den Computer vor: Eine klar definierte Abfolge von Anweisungen, die von einer Maschine ausgeführt werden kann, um von einem Anfangszustand (Problem) zu einem Endzustand (Lösung) zu gelangen.
Die Analogie: Ein Kuchenrezept
Ein Kuchenrezept ist ein perfektes Beispiel, um das Konzept zu verstehen. Es beschreibt exakt, was zu tun ist, um ein vorhersehbares Ergebnis – den Kuchen – zu erhalten.
- Eingabe (Input): Die Zutaten (z.B. 250g Mehl, 150g Zucker, 3 Eier). In der Programmierung sind das die Parameter oder Variablen, die eine Funktion erhält.
int mehlMenge = 250; int zuckerMenge = 150; - Verarbeitung (Process): Die einzelnen Schritte des Rezepts (Ofen vorheizen, Zutaten mischen, Teig kneten). Dies entspricht den Anweisungen, Schleifen, Bedingungen und Funktionsaufrufen in deinem Code.
heizeOfenVor(180); Teig teig = mischeZutaten(mehlMenge, zuckerMenge, ...); - Ausgabe (Output): Der fertige Kuchen. In der Programmierung ist das der Rückgabewert einer Funktion oder der veränderte Zustand des Systems.
Eigenschaften von Algorithmen
Man unterscheidet zwischen den grundlegenden Eigenschaften, die eine Anleitung überhaupt erst zu einem Algorithmus machen, und den Qualitätsmerkmalen, die einen guten von einem schlechten Algorithmus unterscheiden.

Grundlegende Eigenschaften (Die Definition)
Damit eine Anleitung als Algorithmus gilt, muss sie diese fünf Kriterien zwingend erfüllen:
- Eingabe (Input): Ein Algorithmus besitzt null oder mehr eindeutig definierte Eingaben.
- Ausgabe (Output): Ein Algorithmus erzeugt mindestens eine eindeutig definierte Ausgabe.
- Eindeutigkeit (Definiteness): Jeder Schritt muss klar und unmissverständlich formuliert sein. Die Anweisung “eine Prise Salz” ist für einen Computer nicht eindeutig, “füge 1g Salz hinzu” hingegen schon.
- Ausführbarkeit (Effectiveness): Jeder einzelne Schritt muss tatsächlich durchführbar sein. Die Anweisung “Zähle alle Sandkörner der Sahara” wäre nicht ausführbar.
- Endlichkeit (Finiteness): Ein Algorithmus muss nach einer endlichen Anzahl von Schritten zu einem Ende kommen. Eine Endlosschleife (
while(true)ohne Abbruchbedingung) verletzt dieses Prinzip.
Qualitätsmerkmale (Die Bewertung)
Wenn die Grundvoraussetzungen erfüllt sind, bewerten wir Algorithmen nach weiteren Kriterien, um ihre Praxistauglichkeit zu beurteilen:
- Korrektheit (Correctness): Der Algorithmus muss das Problem für alle zulässigen Eingaben korrekt lösen. Ein Sortieralgorithmus, der nur manchmal die richtige Reihenfolge liefert, ist fehlerhaft.
- Effizienz (Efficiency): Ein guter Algorithmus löst ein Problem mit möglichst geringem Ressourcenverbrauch (Rechenzeit und Speicher). Die Analyse der Effizienz ist ein zentrales Thema der Komplexitätstheorie.
- Skalierbarkeit (Scalability): Wie gut verhält sich der Algorithmus, wenn die Eingabemenge stark wächst? Ein Algorithmus, der für 100 Datensätze schnell ist, aber bei 1 Million Datensätzen unbrauchbar langsam wird, skaliert nicht gut.
Eine weitere wichtige Eigenschaft: Determinismus
Ein Algorithmus kann deterministisch oder nicht-deterministisch sein. Dies ist eine Klassifizierung, kein Qualitätsmerkmal.
- Determinismus: Ein deterministischer Algorithmus liefert für dieselbe Eingabe bei jeder Ausführung exakt dasselbe Ergebnis und durchläuft denselben Weg. Dies ist der “Normalfall” in vielen Anwendungsbereichen.
- Nicht-Determinismus / Randomisierung: Ein randomisierter Algorithmus enthält Zufallselemente. Er kann für dieselbe Eingabe unterschiedliche Ergebnisse liefern oder verschiedene Lösungswege nehmen.
Das wichtigste Werkzeug: Abstraktion
In der Anwendungsentwicklung lösen wir selten alles in einem einzigen, riesigen Algorithmus. Wir nutzen Abstraktion: Wir zerlegen ein komplexes Problem in kleinere, handhabbare Teilprobleme und schreiben für jedes eine separate Lösung.
Statt einen riesigen Algorithmus “Baue ein Auto” zu schreiben, definieren wir kleinere Algorithmen (oder in der Programmierung: Funktionen, Methoden und Klassen):
montiereMotor()befestigeRad(radPosition)lackiereKarosserie(farbe)
Der Hauptalgorithmus ruft diese Bausteine dann in der richtigen Reihenfolge auf. Wir müssen als Aufrufer nicht wissen, wie ein Rad im Detail befestigt wird, nur dass die Funktion befestigeRad() es korrekt tut.
Dieses Prinzip ist die Grundlage für wiederverwendbaren Code, APIs und Frameworks und damit ein Kernkonzept deiner täglichen Arbeit.
Wie man Algorithmen darstellt
Ein Algorithmus ist zunächst nur ein logisches Konzept. Bevor man ihn in Code umsetzt, muss man ihn planen, verstehen und oft auch mit anderen diskutieren. Dafür gibt es verschiedene Darstellungsformen. Sie helfen uns, die Logik zu visualisieren und zu überprüfen, bevor eine einzige Zeile Code geschrieben wird.

Wir schauen uns drei zentrale Darstellungsformen an: Pseudocode, Flussdiagramme und Struktogramme.
Pseudocode
Pseudocode ist eine informelle, an eine menschliche Sprache angelehnte Beschreibung eines Algorithmus. Er verzichtet bewusst auf die strenge Syntax einer echten Programmiersprache und konzentriert sich stattdessen vollständig auf die logische Abfolge der Schritte.
Wann nutzt man ihn? Pseudocode ist ideal für den schnellen Entwurf von Algorithmen, zur Dokumentation oder wenn man die Logik mit Kollegen besprechen möchte, ohne sich in Details wie Semikolons oder Klammern zu verlieren. Er lässt sich später sehr leicht in jede beliebige Programmiersprache (wie Java, Python oder C#) übersetzen.
Beispiel: Gerade oder ungerade?
Dieser Pseudocode prüft, ob eine eingegebene Zahl gerade ist.
ALGORITHMUS: prüfe_ob_gerade
EINGABE: ganze_zahl
WENN ganze_zahl Modulo 2 gleich 0 ist DANN
AUSGABE "Die Zahl ist gerade."
SONST
AUSGABE "Die Zahl ist ungerade."
ENDE WENN
ENDE
Flussdiagramme (Flowcharts)
Ein Flussdiagramm (engl. Flowchart) ist eine grafische Darstellung, die den Ablauf und die Entscheidungen eines Algorithmus mit standardisierten Symbolen und Pfeilen zeigt.
Wann nutzt man sie? Flussdiagramme sind hervorragend geeignet, um komplexe Kontrollflüsse mit vielen Verzweigungen und Schleifen verständlich zu machen. Sie sind besonders nützlich in der Planungsphase oder um Nicht-Programmierern die Funktionsweise einer Logik zu erklären.
- Ovale/abgerundete Rechtecke: Start- und Endpunkte
- Rauten: Entscheidungen (Ja/Nein-Fragen)
- Rechtecke: Operationen oder Anweisungen
Beispiel: Gerade oder ungerade?

Struktogramme
Hinweis: Das Struktogramm (Nassi-Shneiderman-Diagramm) ist laut aktuellem IHK-Prüfungskatalog nicht mehr prüfungsrelevant.
Ein Struktogramm (auch Nassi-Shneiderman-Diagramm genannt) ist eine kompakte, blockbasierte Darstellung. Es zwingt den Entwickler von vornherein zu einem gut strukturierten Entwurf, da es keine Möglichkeit gibt, “Spaghetti-Code” (z.B. mit goto-Sprüngen) darzustellen.
Wann nutzt man sie? Struktogramme eignen sich sehr gut, um die Schachtelung von logischen Blöcken (wie Schleifen in Schleifen oder if-else in einer case-Anweisung) übersichtlich darzustellen. Sie sind in der Ausbildung und bei der Planung von Algorithmen nach den Prinzipien der strukturierten Programmierung beliebt.

Die Entscheidungsstruktur wird dabei durch eine horizontale Trennlinie (Ja/Nein) innerhalb eines Blocks visualisiert.
Welche Form für welchen Zweck?
Jede Darstellungsform hat ihre Stärken. Die Wahl hängt vom Kontext ab: Wer ist die Zielgruppe, und was soll vermittelt werden?
| Darstellungsform | Stärke | Ideal für… |
|---|---|---|
| Pseudocode | Schnell, flexibel, nah am Code | Schnelle Entwürfe, Dokumentation, einfache Logik |
| Flussdiagramm | Sehr visuell, leicht verständlich | Darstellung komplexer Abläufe, Kommunikation mit Nicht-Entwicklern |
| Struktogramm | Fördert saubere Struktur, kompakt | Lehre, Planung nach strukturierten Prinzipien, Schachtelungen |
In der Praxis werden oft mehrere Formen kombiniert: Pseudocode für die schnelle Skizze, ein Flussdiagramm für die Präsentation beim Kunden.
Praxisnahe Übung
Finde die größte Zahl
Stell dir vor, du hast eine Liste mit mehreren Zahlen und deine Aufgabe ist es, die größte Zahl in dieser Liste zu finden und auszugeben.
Deine Aufgabe: Entwirf einen Algorithmus, der dieses Problem löst, und stelle ihn in den folgenden drei Formen dar:
- Pseudocode
- Flowchart (Flussdiagramm)
- Struktogramm (Nassi-Shneiderman-Diagramm)
Du kannst davon ausgehen, dass die Liste mindestens eine Zahl enthält.
Klicke hier, um die Musterlösung anzuzeigen
Musterlösung Struktogramm: Größte Zahl finden
1. Pseudocode
EINGABE: Eine Liste von Zahlen namens "zahlenListe"
1. Setze die erste Zahl aus der "zahlenListe" als vorläufige "groessteZahl".
2. FÜR JEDE weitere Zahl in der "zahlenListe":
3. WENN die aktuelle Zahl > "groessteZahl" DANN
4. Setze "groessteZahl" = aktuelle Zahl
5. ENDE WENN
6. ENDE FÜR
AUSGABE: "groessteZahl"
2. Flowchart

3. Struktorgramm

Zusammenfassung

Zusammenfassung:
Algorithmus und seine Eigenschaften
Ein Algorithmus ist eine endliche, präzise und schrittweise Anleitung, um ein Problem zu lösen. Er wandelt einen Anfangszustand (Problem) über klar definierte Schritte in einen Endzustand (Lösung) um.
- Eingabe (Input): Parameter oder Variablen, die der Algorithmus erhält.
- Verarbeitung (Process): Logische Schritte wie Schleifen, Bedingungen und Funktionsaufrufe.
- Ausgabe (Output): Das Ergebnis, z. B. ein Rückgabewert oder veränderter Systemzustand.
Damit eine Anleitung als Algorithmus gilt, muss sie folgende fünf Kriterien erfüllen:
- Eingabe: Null oder mehr klar definierte Eingaben.
- Ausgabe: Mindestens eine klar definierte Ausgabe.
- Eindeutigkeit: Jeder Schritt muss eindeutig formuliert sein.
- Ausführbarkeit: Jeder Schritt muss tatsächlich durchführbar sein.
- Endlichkeit: Der Algorithmus endet nach endlich vielen Schritten.
Bewertungskriterien für gute Algorithmen:
- Korrektheit: Liefert für alle Eingaben korrekte Ergebnisse.
- Effizienz: Nutzt Zeit und Speicher optimal.
- Skalierbarkeit: Funktioniert auch bei großen Datenmengen.
Ein Algorithmus kann deterministisch (gleiches Ergebnis bei gleicher Eingabe) oder nicht-deterministisch (z. B. mit Zufallsanteilen) sein.
Abstraktion und Modularisierung
Komplexe Probleme werden in Teilprobleme zerlegt. Jeder Teil wird durch eine Funktion oder Methode gelöst. Beispielhafte Teilalgorithmen:
montiereMotor()befestigeRad(radPosition)lackiereKarosserie(farbe)
Dieses Prinzip ermöglicht wiederverwendbaren Code und ist Grundlage von APIs und Frameworks. Der Hauptalgorithmus ruft Unterfunktionen in logischer Reihenfolge auf, ohne deren innere Funktionsweise zu kennen.
Darstellungsformen von Algorithmen
Zur Planung und Kommunikation von Logik werden drei zentrale Darstellungsformen verwendet:
1. Pseudocode: Informelle Beschreibung eines Algorithmus, die sich an menschliche Sprache anlehnt. Ideal für Entwurf und Diskussion.
ALGORITHMUS: prüfe_ob_gerade
EINGABE: ganze_zahl
WENN ganze_zahl Modulo 2 gleich 0 ist DANN
AUSGABE "Die Zahl ist gerade."
SONST
AUSGABE "Die Zahl ist ungerade."
ENDE2. Flussdiagramm: Grafische Darstellung mit Symbolen für Start, Entscheidung und Operation. Eignet sich zur Visualisierung komplexer Kontrollflüsse.
3. Struktogramm: Blockbasierte Darstellung (Nassi-Shneiderman-Diagramm). Fördert strukturierte, verschachtelungsfreie Logik. Wird häufig in der Ausbildung eingesetzt.
| Darstellungsform | Stärke | Ideal für |
|---|---|---|
| Pseudocode | Schnell, flexibel, nah am Code | Entwurf, Dokumentation |
| Flussdiagramm | Visuell, verständlich | Komplexe Abläufe, Kommunikation |
| Struktogramm | Strukturiert, kompakt | Lehre, Planung verschachtelter Logik |
Anwendung und Relevanz
In der Anwendungsentwicklung bildet der Algorithmus das logische Fundament jeder Lösung.
- Er ermöglicht planbare, reproduzierbare Prozesse.
- Durch Abstraktion und Darstellung wird er verständlich, überprüfbar und implementierbar.
- Die Wahl der richtigen Darstellungsform unterstützt Kommunikation, Wartung und Teamarbeit.
Jede dieser Formen hilft dir, Fehler frühzeitig zu erkennen und den Algorithmus effizient zu planen, bevor er in Code umgesetzt wird.
Ausblick:
Als Nächstes strukturierst du jedes Problem domänenunabhängig: Ziele, Stakeholder, Ist-Prozesse, Randbedingungen, Risiken und Datenflüsse. Daraus leitest du eine überprüfbare Spezifikation mit funktionalen Anforderungen, messbaren nicht-funktionalen Anforderungen, Schnittstellen, Datenmodellen und klaren Akzeptanzkriterien ab. So stellst du sicher, dass Design, Implementierung und Tests zielgerichtet arbeiten und Änderungen kontrolliert eingeplant werden können.