3.3 Zyklus (Wiederholung) – Iteration
Ab dem Abschnitt 3.3 liegt der Ablaufsteuerung der Programme des Weitern die Grundstruktur Zyklus (Wiederholung) zugrunde.
Zum Zyklus zählt u. a. die Iteration – das Wiederholen von Anweisungen mit der for-Schleifen und while-Schleife.
Die for-Schleife:
- Die in der Abbildung 1 dargestellte for-Schleife wird im Allg. verwendet, wenn die Anzahl der Schleifendurchläufe von vornherein bekannt ist.
- 1 bis 10
- 1 bis 20
-
In der Abbildung 2 ist der Algorithmus dargestellt, der der Callback-Funktion
»addieren« des Programms zugrunde liegt. - Das Kernstück des Algorithmus ist die for-Schleife.
- In der for-Schleife steht die for-Bedingung »for i in range(1, n+1)«.
- Die Funktion »range(1, n+1)« erzeugt als iterierbares (durchlaufbares) range-Objekt die Zahlenfolge 1, 2, 3 … n (wobei n+1 ausgeschlossen ist).
- Das iterierbare range-Objek (die Zahlenfolge) wird von der Funktion an die rufende Stelle in der for-Bedingung zurückgegeben.
- Der Operator »in« bewirkt, dass der sogenannten Laufvariable »i« nacheinander die Werte des range-Objekts (die Ganzzahlen 1 bis n) zugewiesen werden.[1]
- Nach jeder Wertzuweisung der Laufvariable wird die Anweisung oder werden die Anweisungen des for-Körpers der for-Schleife ausgeführt.
- Die Anzahl der Wiederholungen (Schleifendurchläufe) in der for-Schleife entspricht der Anzahl der Werte des range-Objekts.
- In der for-Schleife ist »for i in range(1, 5)« die for-Bedingung.
- Die Funktion »range(1, 4)« erzeugt als range-Objekt die Zahlenfolge 1, 2, 3 und gibt das Objekt (die Zahlenfolge) an die rufende Stelle zurück.
- Der Laufvariable »i« werden durch den Operator »in« nacheinander die Werte 1, 2 und 3 des range Objekts (der Zahlenfolge) zugewiesen.
- Nach jeder Wertzuweisung der Laufvariable wird der for-Körper ausgeführt.
- Insgesamt führt die for-Schleife drei Wiederholungen (Durchläufe) aus.
- Der Callback-Funktion liegt der in der Abbildung 3 dargestellte Algorithmus zugrunde.
- dem mit einer for-Schleife
- dem mit einer Ausgabe eines f-Strings
- summe=0
- summe=summe+1=0+1=1
- summe=summe+2=1+2=3
- summe=summe+3=3+3=6
- …
- summe=summe+98=4753+98=4851
- summe=summe+99=4851+99=4950
- summe=summe+100=4950+100=5050
- Der Teil mit der grafischen Benutzeroberfläche GUI – dem Hauptfenster.
- Der Teil mit der Callback-Funktion »pruefen«.
- 10
- 20
- 100
- 1000
- [1] Die Namen »i«, »j« und »k« werden i. Allg, als Bezeichner von Laufvariablen in Schleifen verwendet.
Programm »gauss.py«
Es wird erzählt. dass der neunjährige Schüler Carl Friedrich Gauß (1777 - 1855) im Rechenunterricht die Zahlen von 1 bis 100 addieren sollte, das heißt 1 + 2 + 3 + … + 100.
Es wäre nicht der Schüler Carl Friedrich Gauß gewesen, hätte er Zahl für Zahl addiert.
Auf Carl Friedrich Gauß geht Summenformel (Kleiner Gauß)
1+2+3+ … +n=n(n + 1)/2 zurück.
Aufgabe A22
Berechne die Summe der Zahlen so,wie es der Schüler Carl Friedrich Gauß rechnen sollte:
Was allerdings der Schüler Carl Friedrich Gauß so nicht rechnete, das soll das Programm »gauss.py« – beispielsweise von 1 bis 100 – ausführen:
Das Wiederholen in der for-Schleife mit der Funktion »range()« funktioniert wie folgt:
Beispiel:
# Callback-Funktion
def addieren():
try:
n=int(entry.get())
if n>0:
summe=0
for i in range(1, n+1):
summe=summe+i
label2.config(text=f"Summe={summe}")
else:
label2.config(text=f"{n} ist zu klein!")
except ValueError:
label2.config(text="Falsche Eingabe!")
entry1.delete(0, tk.END)
| 2. bis 14. Zeile | Die Callback-Funktion »addieren« wird deklariert. |
| 3. bis 13. Zeile | Die »,try« und »except« Ausnahmebehandlung der Eingaben erfolgt. |
| 4. Zeile | Der Variable »n« wird die dem Eingabefeld eingegebene Zeichenkette durch die Funktion »int()« (Typumwandlung) als Ganzzahl zugewiesen. |
| 5. bis 11. Zeile |
Die if-else-Auswahl ist eine mehrfache Auswahl mit zwei Bedingungszweigen:
|
| 6. Zeile |
Die Wertzuweisung »summe = 0« bedeutet, dass der Variable summe der Wert 0 zugewiesen wird. Der Wert 0 ist der Startwert der Variable »summe« beim Addieren der Ganzzahlen. |
| 7. und 8. Zeile |
Die for-Schleife innerhalb der if-Anweisung bewirkt, dass der Laufvariable »i« im Schleifenkopf nacheinander
die Werte 1 bis n zugewiesen werden und im Schleifenkörper nacheinender der Wert der Variable »summe«
um den Wert der Variable »i« erhöht wird. Wenn beispielsweise die Variable »summe« den Wert 1 hat und die Laufvariable »i« den Wert 2, dann wird durch »summe=summe+i« der Variable »summe« der Wert 3 zugewiesen. |
| 9., 11. und 13. Zeile | Die Ausgaben erfolgen in f-Strings. |
| 14. Zeile | Der Inhalt des Eingebefensters wird gelöscht. |
Ein Beispiel, wie die Callback-Funktion rechnet
Nach der Eingabe für n gleich 100 addiert die Funktion »addieren« die Ganzzahlen folgendermaßen:
Aufgabe A23
Implementiere ein Programm »gauss.py« am Computer.
Das Programm »gauss.py« soll aus zwei Teilen bestehen:
Führe das Programm u. a. mit folgenden Eingaben aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht:
Vergleiche die Ausgaben des Programms für n=10 und n=20 mit deinen Berechnungen in der oben gestellten Aufgabe A22.