Benutzer-Werkzeuge

Webseiten-Werkzeuge


neuerlehrplan:klasse10:schleifen

Dies ist eine alte Version des Dokuments!


Schleifen

Häufig wiederholen sich Anweisungen in Algorithmen. Solche Anweisungen lassen sich in der Datenstruktur Schleife zusammenfassen. Die Frage ist nun, wie oft die Anweisungen wiederholt werden sollen. Auf diese Frage gibt es mehrere Antworten:

Schleifen mit Abbruchbedingung

Kopfgesteuerte Schleife

Wiederhole solange die Bedingung erfüllt ist:
…Anweisungen…

Bei der kopfgesteuerten Schleife wird die Schleifenbedingung am Anfang der Schleife getestet. Die Schleife wird immer wieder durchlaufen, solange die Bedingung erfüllt ist. Wenn die Bedingung beim Eintritt nicht erfüllt, wird die Schleife nicht durchlaufen.

Struktogramm

Fußgesteuerte Schleife

Wiederhole:
…Anweisungen…
solange die Bedingung erfüllt ist

Bei der fußgesteuerten Schleife wird die Schleifenbedingung am Ende der Schleife getestet. Die Schleife wird immer wieder durchlaufen, solange die Bedingung erfüllt ist. Wenn die Bedingung beim Eintritt nicht erfüllt, wird die Schleife mindestens einmal durchlaufen.

Struktogramm

Schleifen mit Abbruchbedingung in Python

In Python wird eine kopfgesteuerte Schleife mit der while-Anweisung umgesetzt. Für fußgesteuerte Schleifen gibt es keine eigene Anweisung, es gibt aber mehrere Möglichkeiten, eine fußgesteuerte Schleife zu simmulieren. Widmen wir uns aber zunächst der while-Anweisung und ihrer Syntax:

while Bedingung:
    ... Anweisungen ... 

Nach while steht die Bedingung, gefolgt von einem Doppelpunkt. Solange die Bedingung erfüllt ist, wird die Schleife durchlaufen. Wir müssen also in der Schleife dafür sorgen, dass die Bedingung irgendwann nicht erfüllt ist, sonst haben wir eine Endlosschleife.

Beispiel 1

Erstelle ein Programm, welches nach Eingabe einer ganzen Zahl die Quadratzahl berechnet. Nach jeder Berechnung soll gefragt werden ob das Programm fortgesetzt erden soll. Bei Eingabe von „Nein“ wird das Programm beendet.

# Die Variable eingabe muss initialisiert werden, sonst kommt es beim Eintritt in die Schleife zur Fehlermeldung
eingabe = ""
while eingabe != "N":
    zahl = int(input("Zahl: "))
    print("Quadratzahl:",zahl*zahl)
    eingabe = input("Soll das Programm fortgesetzt werden? (J|N)")

Schleife mit Zähler

m Unterschied zu fuß- und kopfgesteuerten Schleifen steht bei Zählschleifen die Anzahl der Durchläufe vor dem Schleifeneintritt fest. Dabei nimmt eine sogenannte Zählvariable während des Schleifendurchlaufs eine endliche Anzahl von fest definierten Werten an.

In verbaler Kurzform lässt sich der Algorithmus wie folgt formulieren:

Für Startwert bis Endwert mit Schrittweite führe aus: …Anweisungen…

Struktogramm

Zählschleifen in Python

In Python kann man eine Zählschleife mit Hilfe der for- und der range-Anweisung umsetzen. Die range-Anweisung erzeugt dabei die Werte, die die Zählvariable durchlaufen soll. Sie besitzt den folgenden Aufbau:

range (Startwert, Endwert, Schrittweite) 

Startwert und Schrittweite können weggelassen werden. Es wird dann angenommen, dass der Startwert den Wert 0 hat und die Schrittweite den Wert 1 hat. Fehlt nur ein Parameter, so wird angenommen, dass die Schrittweite fehlt. range erzeugt nun eine Folge von Werten, die mit dem Startwert beginnt. Der jeweils nächste Wert ergibt sich, indem man zu einem Wert die Schrittweite addiert. Das wird wird immer weiter fortgesetzt, solange ein Wert noch keiner ist als der Endwert.

Hier einige Beispiele. In den Beispielen wird die Ausgabe von range in eine Liste umgewandelt. Zu Listen erfährst du weiter unten mehr.

print(list(range(1,9,3)))
print(list(range(1,10)))
print(list(range(8)))

Ausgabe des Programms:

[1, 4, 7]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7]

Im Zusammenhang mit einer sogenannten for-Schleife benutzt man range nun wie folgt:

for i in range(Startwert, Endwert, Schrittweite):
    ... Anweisungen ... 

Die Variable i nimmt nun bei jeden Schleifendurchlauf einen von range erzeugten Wert an. Man kann nun i mit dem jeweiligen Wert in der Schleife benutzen oder man benutzt das Konstrukt einfach, um die Anzahl der Durchläufe festzulegen.

Beispiel 2

Schreibe ein Programm, welches eine Liste der Quadratzahlen bis 20 ausgibt.

Struktogramm

neuerlehrplan/klasse10/schleifen.1757755496.txt.gz · Zuletzt geändert: von lutz