Was leistet der Algorithmus?
- Analysieren:Zweck, Eingaben, Ausgaben und die Rolle jeder Variablen herausarbeiten — ohne den Code auszuführen.
- Zähler:zählt Durchläufe oder Treffer:
z ← z + 1 - Akkumulator:sammelt ein Ergebnis auf:
s ← s + xoderp ← p · x - Merker:speichert den bisher besten Wert, z. B. das Maximum, oder einen Zustand (wahr/falsch).
- Durchläufe:aus Startwert, Abbruchbedingung und Schrittweite der Schleifenvariable bestimmen.
- Vorgehen:mit kleinen Beispielwerten durchspielen, dann verallgemeinern: „Der Algorithmus berechnet …“.
Terminiert er — und ist er korrekt?
- Terminierung:jede Schleife endet: die Bedingungsvariable nähert sich in jedem Durchlauf dem Abbruch.
- Falle:die Variable springt über den Abbruchwert hinweg (
≠statt>) oder ändert sich gar nicht. - Korrektheit:für jede zulässige Eingabe kommt das gewünschte Ergebnis heraus.
- Randfälle:mit 0, 1, negativen Zahlen, gleichen Werten und leeren Eingaben testen.
- Gegenbeispiel:ein einziges genügt, um zu zeigen, dass ein Algorithmus falsch ist.
Lies das Struktogramm, tippe rechts deine Antwort an und starte dann mit ▶ den Ablauf. Die aktive Anweisung leuchtet auf, der Speicher zeigt die Werte.
Fall 1 von 5
Deine Vorhersage
Speicher
| Variable | Wert |
|---|
Schleifendurchläufe: –
Halte fest: Wer die Werte der Schleifenvariable Durchlauf für Durchlauf verfolgt, sieht Ergebnis, Anzahl der Durchläufe — und ob die Schleife überhaupt endet.
Korrekt ist ein Algorithmus, wenn er für jede zulässige Eingabe terminiert und das gewünschte Ergebnis liefert.
Allgemeine Hinweise
Ein Test ist kein Beweis
Drei erfolgreiche Tests zeigen nur, dass der Algorithmus für diese Eingaben funktioniert. Randfälle können ihn trotzdem scheitern lassen.
< oder ≤ — ein Durchlauf Unterschied
Ob die Bedingung i < n oder i ≤ n lautet, entscheidet über einen Schleifendurchlauf mehr oder weniger — ein Klassiker in Klausuren.
Rollen notieren
Schreibe neben jede Variable ihre Rolle (Zähler, Summe, Merker). Dann lässt sich der Zweck des Algorithmus meist in einem Satz formulieren.
