Drei Arten, eine Idee
Eine Schleife wiederholt einen Block von Anweisungen, den Rumpf. Was die drei Arten unterscheidet, ist nur, wann entschieden wird, ob der Rumpf (noch einmal) läuft:
- Kopfgesteuert (SOLANGE): Die Bedingung wird vor jedem Durchlauf geprüft. Ist sie beim ersten Mal falsch, läuft der Rumpf nie.
- Fußgesteuert (WIEDERHOLE … BIS): Der Rumpf läuft erst, dann wird geprüft. Der Rumpf läuft also mindestens einmal.
- Zählschleife (FÜR): Eine kopfgesteuerte Schleife, bei der die Anzahl der Durchläufe von vornherein feststeht. Der Zähler wird automatisch hochgezählt.
Im Struktogramm erkennst du alle drei am Balken links, der den Rumpf umklammert. Die Bedingung steht bei kopfgesteuerten Schleifen und Zählschleifen in der Kopfzeile, bei fußgesteuerten in der Fußzeile.
Kopfgesteuert: SOLANGE
Die allgemeinste Schleife. Du nimmst sie, wenn du nicht weißt, wie oft wiederholt werden muss, und wenn es sein kann, dass gar nicht wiederholt werden muss. Beispiel: Wie oft lässt sich eine Zahl halbieren, bis sie bei 1 oder darunter ankommt?
Struktogramm
Pseudocode
EINGABE n
schritte = 0
SOLANGE n > 1
n = n / 2
schritte = schritte + 1
ENDE SOLANGE
AUSGABE schritteFür n = 8 passiert Folgendes: 8 ist größer als 1, also halbieren: 4, ein Schritt. 4 ist größer als 1: 2, zwei Schritte. 2 ist größer als 1: 1, drei Schritte. 1 ist nicht größer als 1, die Schleife endet, Ausgabe 3.
| Prüfung n > 1 | n | schritte |
|---|---|---|
| Start | 8 | 0 |
| 8 > 1: ja | 4 | 1 |
| 4 > 1: ja | 2 | 2 |
| 2 > 1: ja | 1 | 3 |
| 1 > 1: nein, Ende | 1 | 3 |
Und für n = 1? Die erste Prüfung „1 > 1“ ist schon falsch. Der Rumpf läuft nie, ausgegeben wird der Startwert 0. Das ist das typische Verhalten der kopfgesteuerten Schleife: null Durchläufe sind möglich.
Fußgesteuert: WIEDERHOLE … BIS
Die fußgesteuerte Schleife nimmst du, wenn der Rumpf auf jeden Fall einmal laufen muss, bevor überhaupt geprüft werden kann. Das klassische Beispiel ist eine Eingabe, die so lange wiederholt wird, bis sie gültig ist. Man muss ja erst etwas eingeben, bevor man es prüfen kann.
Struktogramm
Pseudocode
WIEDERHOLE
AUSGABE "Wurf eingeben (1 bis 6):"
EINGABE wurf
BIS wurf >= 1 UND wurf <= 6
AUSGABE "Gültig:", wurfAchte auf die Logik der Bedingung: Bei WIEDERHOLE … BIS steht unten die Abbruchbedingung. Die Schleife läuft, bis sie wahr ist. Bei SOLANGE ist es umgekehrt: Dort steht die Fortsetzungsbedingung, die Schleife läuft, solange sie wahr ist. Wer beides verwechselt, baut eine Schleife, die genau dann endet, wenn sie weiterlaufen sollte.
Zählschleife: FÜR
Wenn du vorher weißt, wie oft wiederholt wird, nimmst du die Zählschleife. Sie hat einen Zähler mit Startwert und Endwert; nach jedem Durchlauf wird er automatisch um eins erhöht. Beispiel: die Einmaleins-Reihe einer Zahl.
Struktogramm
Pseudocode
EINGABE zahl
FÜR i = 1 BIS 10
AUSGABE i, "x", zahl, "=", i * zahl
ENDE FÜRDie Zählschleife ist nur eine Abkürzung. Dieselbe Reihe mit SOLANGE braucht zwei Zeilen mehr: den Startwert vor der Schleife und das Hochzählen im Rumpf. Die Prüfung wandert vom Kopf der Zählschleife in den Kopf der SOLANGE-Schleife. Genau diese drei Dinge (Start, Prüfung, Schritt) stecken in der Kopfzeile der Zählschleife:
Zählschleifen können auch rückwärts laufen („für i = 10 bis 1, Schrittweite −1“) oder in anderen Schritten („für i = 0 bis 100, Schrittweite 5“). Wenn nichts dabeisteht, ist die Schrittweite 1.
Wann welche Schleife?
| Situation in der Aufgabe | Schleife | Signalwörter |
|---|---|---|
| Anzahl steht vorher fest: alle Elemente einer Liste, 1 bis n, zehnmal | Zählschleife | „für jedes“, „n-mal“, „von 1 bis“, „alle Einträge“ |
| Unbekannte Anzahl, und null Durchläufe sind möglich | Kopfgesteuert | „solange noch“, „während noch …“, „während“ |
| Rumpf muss mindestens einmal laufen: Eingabe, Menü, Spielrunde | Fußgesteuert | „wiederhole, bis“, „erneut eingeben, falls“, „mindestens einmal“ |
Im Zweifel ist die kopfgesteuerte Schleife nie falsch: Jede Zählschleife und jede fußgesteuerte Schleife lässt sich als SOLANGE schreiben. Die Prüfer erwarten aber die passende Art, wenn die Aufgabe sie nahelegt. „Der Benutzer soll so lange eingeben, bis der Wert gültig ist“ legt die fußgesteuerte Form nahe; eine kopfgesteuerte Lösung mit einer Eingabe vor der Schleife ist ebenfalls richtig, nur länger.
Durchläufe zählen
Die häufigste Fehlerquelle bei Schleifen ist ein Durchlauf zu viel oder zu wenig. Vergleiche diese beiden Schleifen, die sich nur in einem Zeichen unterscheiden:
Bedingung i < 5
Bedingung i <= 5
Links werden 0, 1, 2, 3, 4 ausgegeben: fünf Durchläufe. Rechts kommt die 5 dazu: sechs Durchläufe. Faustregeln, die du auswendig können solltest:
- Zählschleife „für i = a bis b“: b − a + 1 Durchläufe. „für i = 1 bis 10“ sind 10, „für i = 0 bis 10“ sind 11.
- SOLANGE mit Zähler ab 0 und „i < n“: n Durchläufe. Mit „i <= n“: n + 1.
- Bei jeder anderen Schleife: nicht raten, sondern Schreibtischtest. Zwei Minuten Tabelle sind billiger als ein verlorener Punkt.
Übungen
Führen Sie einen Schreibtischtest durch: Was gibt „Halbieren zählen“ aus dem Abschnitt ‚Kopfgesteuert: SOLANGE‘ für n = 20 aus? Achtung, die Division ergibt hier auch Nachkommastellen (20 / 2 = 10, 10 / 2 = 5, 5 / 2 = 2,5 …). Führe ihn auf Papier, bevor du die Lösung aufklappst.
Musterlösung anzeigen
| Prüfung n > 1 | n | schritte |
|---|---|---|
| Start | 20 | 0 |
| 20 > 1: ja | 10 | 1 |
| 10 > 1: ja | 5 | 2 |
| 5 > 1: ja | 2,5 | 3 |
| 2,5 > 1: ja | 1,25 | 4 |
| 1,25 > 1: ja | 0,625 | 5 |
| 0,625 > 1: nein, Ende | 0,625 | 5 |
Ausgabe: 5. Der häufigste Fehler ist, bei 1,25 aufzuhören: 1,25 ist aber größer als 1, also läuft der Rumpf noch einmal. Wäre n eine Ganzzahl und / eine ganzzahlige Division (DIV), lautete das Ergebnis 4 (20, 10, 5, 2, 1). Achte in der Prüfung auf den Datentyp.
Entwerfen Sie das Struktogramm: Eine Zahl n wird eingelesen und die Fakultät n! ausgegeben, also das Produkt 1 · 2 · 3 · … · n. Für n = 4 soll 24 herauskommen.
Musterlösung anzeigen
Die Anzahl der Multiplikationen steht mit n fest, also Zählschleife. Der Startwert ist 1 und nicht 0, weil 0 mal irgendetwas immer 0 bleibt. Ob die Schleife bei 1 oder bei 2 beginnt, ist egal (1 mal 1 ändert nichts); beide Lösungen sind richtig. Für n = 0 und n = 1 läuft die Schleife nicht und die Ausgabe ist 1, was mathematisch stimmt.
So wird typischerweise bewertet
- Passende Schleife (Zählschleife; alternativ kopfgesteuert mit eigenem Zähler) korrekt beschriftet (Start, Ende)
- ergebnis mit 1 initialisiert, nicht mit 0
- Multiplikation im Rumpf, Ausgabe nach der Schleife
- Form: Eingabe oben, Balken links, Ausgabe außerhalb des Rumpfs
Entwerfen Sie das Struktogramm: Ein Programm fragt ein Passwort ab und speichert es in der Variablen passwort. Der Benutzer hat höchstens drei Versuche. Ist das Passwort „geheim“, wird „Willkommen“ ausgegeben. Sind drei Versuche verbraucht, ohne dass das Passwort stimmte, wird „Gesperrt“ ausgegeben.
Musterlösung anzeigen
Eine Eingabe muss vor der ersten Prüfung stattfinden, also fußgesteuert. Die Schleife endet aus zwei Gründen, deshalb steht ein ODER in der Abbruchbedingung. Den Zähler vor der Schleife auf 0 setzen und im Rumpf erhöhen. Nach der Schleife weiß man noch nicht, warum sie geendet hat, deshalb die Verzweigung am Ende. Wer die Verzweigung vergisst, gibt bei drei falschen Eingaben trotzdem „Willkommen“ aus oder gar nichts. Ebenfalls richtig: eine kopfgesteuerte Schleife mit einer Eingabe vor der Schleife, ein Merker erfolgreich, der im Rumpf gesetzt und nach der Schleife geprüft wird, oder eine Verzweigung im Rumpf, die „Willkommen“ direkt bei der richtigen Eingabe ausgibt.
So wird typischerweise bewertet
- Passende Schleife gewählt (fußgesteuert; alternativ kopfgesteuert mit Eingabe vor der Schleife)
- Abbruchbedingung mit beiden Fällen (richtig ODER drei Versuche)
- Zähler initialisiert und im Rumpf erhöht
- Eingabe im Rumpf, beide Ausgaben korrekt
- Verzweigung nach der Schleife (oder Merker) entscheidet über die Ausgabe
Jetzt selbst testen
Vier Fragen zu Schleifen.
Welche Schleife läuft auf jeden Fall mindestens einmal?
Wie viele Durchläufe hat „für i = 3 bis 12“?
i = 0. SOLANGE i < 4: Ausgabe i, i = i + 1. Was wird zuletzt ausgegeben?
Ein Menü soll angezeigt werden, dann eine Auswahl gelesen, und das Ganze wiederholt sich, bis der Benutzer „Beenden“ wählt. Welche Schleife?