====== Zählschleife ======
In dieser Lektion beschäftigen wir uns mit der **Zählschleife**. Dabei programmieren wir wiederum auf den Pfaden von [[https://herr-pfeiffer.de/shaarli/?searchtags=molnar+|Vera Molnar]], einer Pionierin der Computerkunst.
Das Ziel dieser Lektion ist die Programmierung dieser Grafik //à la Molnar// und zwar mit einem **möglichst kurzen Quellcode**:
^ ^ ^
| {{:informatik:computerkunst:punkte-molnar.png?100|}} | Sie besteht aus **gleichgroßen** Punkten, die **symmetrisch** angeordnet sind.\\ Die Punkte habe eine von drei **Farben**: Cerise Red, Eastern Blue oder Oxford Blue.\\ Die Zuweisung der Farbe passiert **zufällig**. |
==== range()-Funktion ====
In Python kann mit der Anweisung range(startwert,endwert) eine Liste mit Zahlenwerten angelegt werden. Dabei wird eine Liste erzeugt, die bei 0 beginnt und bis zur letzten Zahl vor ''endwert'' reicht, also von ''0 bis endwert-1''. Die im folgenden Beispiel mit ''range(0,10)'' erzeugte **Zahlenliste** beginnt also mit 0 und geht bis 9, nämlich endwert - 1, d.h. 10 - 1 = 9.
{{url>https://trinket.io/embed/python/c102465cbf?start=result}}
===== Aufgabe 1 =====
* **Ändere das Programm** so ab, dass das Programm eine Liste von 8 bis 19 erzeugt.
* **Verändere die Anweisung** im Online-Editor so, dass folgendes Ergebnis angezeigt wird: ''[2011,2012,2013,2014,2015,2016,2017,2018,2019]''
* **Notiere** dir beide Anweisungen digtal oder handschriftlich!
===== Zählschleife / for-Schleife =====
Computer sind besonders gut darin, die gleichen Anweisungen (also auch Turtle-Befehle) immer wieder zu wiederholen. Um ein Quadrat zu zeichnen, musst du also nicht viermal die Befehle forward(100) und left(90) eingeben. Es genügt auch, der Turtle zu sagen, sie soll diese zwei Anweisungen viermal wiederholen.
for i in range(0,5):
turtle.forward(100)
turtle.left(90)
Mit der for-Schleife sagst du der Turtle, sie soll einige Befehle eine bestimmte Anzahl Mal wiederholen. Das bestimmen wir mit der **range()-Funktion**.
Damit der Computer weiss, dass diese Befehle zusammengehören (einen **Programmblock bilden**), müssen diese gleich weit eingerückt sein. Wir verwenden für **Einrückungen** grundsätzlich vier Leerschläge.
Die Zählschleife wiederholt einen Anweisungsblock so lange, bis eine definierte Bedingung falsch ist. In der Zählschleife wird eine Zählvariable deklariert und initialisiert und deren Wert nach jedem Schleifendurchlauf aktualisiert. Die Bedingung bezieht sich dabei in der Regel auf die Zählvariable. Zählschleifen können somit genutzt werden, um einen Anweisungsblock eine vorher festgelegte Anzahl Mal zu wiederholen.
==== Allgemeine Syntax in Python ====
for Variable in Sequenz:
Anweisung1
Anweisung2
...
Anweisungn
==== Erläuterung an einem Beispiel ====
for zahl in range(0,10):
print(zahl)
In Python besteht die for-Schleife aus drei Elementen:
- Dem Schlüsselwort ''for'', mit dem die Schleife eingeleitet wird,
- einer ''Variablen'' (hier: ''zahl''), die der Reihe nach alle Werte der folgenden Liste annimmt,
- einer Liste (hier: ''[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]'', da ''range(0,10)''), in der die Werte stehen, die die angegebene Variable der Reihe nach annimmt. Diese Liste kann mit ''range(endwert)'' angegeben werden. Nach der Angabe der Liste folgt ein Doppelpunkt als Zeichen dafür, dass hier der Inhalt der Schleife beginnt. In den folgenden Zeilen stehen die Anweisungen, die im Rahmen der Schleife ausgeführt werden sollen, wobei die Zeilen, die zur Schleife gehören, eingerückt sein müssen. Dabei nimmt ''zahl'' der Reihe nach alle Werte in der Liste an, d.h. im obigen Beispiel nimmt ''zahl'' im ersten Durchlauf den Wert 0 an, im zweiten Durchlauf den Wert 1, danach 3 und so weiter, bis ''zahl'' im letzten Durchlauf den letzten Wert der Liste annimmt, also 9.
===== Struktogramm =====
Aufgabe eines Struktogrammes ist es, den Ablauf eines Computerprogramms auf dem Papier darzustellen. \\
^ ^ ^
| **Allgemeine Schreibweise einer Zaehlerschleife**{{:informatik:computerkunst:struktogramm-zaehlerschleife.png?400|}} | Die Anzahl der Schleifendurchläufe wird durch eine Zählvariable festgelegt. Im Schleifenkopf werden der Startwert der Zählvariablen, der Endwert und die Veränderung der Zählvariablen nach jedem Schleifendurchlauf angegeben. |
| **Beispiel 1** {{:informatik:computerkunst:struktogramm-zaehlerschleife-bsp1.png?400|}} | Python-Quellcode für das Struktogramm links: for zahl in range(0,10):
print(zahl)
|
| **Beispiel 2** {{:informatik:computerkunst:struktogramm-zaehlerschleife-bsp2.png?400|}} | Die ersten Zeilen des Struktogramms sind einfache Anweisungen. Dann folgt eine Zählschleife. |
===== Aufgabe 2 =====
* Zeichne das Struktogramm handschriftlich oder digital!
* Nutze auch gerne eine Programm zum Erstellen der Struktogramme: [[https://whiledo.de/index.php?p=struktogrammeditor|Struktogrammeditor]]
Erstelle zu folgendem Python-Programm ein Struktogramm:
for i in range(0,5):
turtle.forward(100)
turtle.left(90)
===== Aufgabe 3 =====
* Wende die for-Schleife in den folgenden Aufgaben an!
* **Erstelle für mindestens eine Teilaufgabe ein Struktogramm!**
* **Notiere dir den Quellcode für jede Teilaufgabe digtal oder handschriftlich!** \\
* Nutze den Online-Editor (siehe unten)!
| a) Zeichne eine Treppe mit 7 Stufen. | {{:informatik:computerkunst:aufgabe-treppe-7.png?100|}} |
| b) Zeichne einen Stern. Verwende dabei den Befehl turtle.back(). | {{:informatik:computerkunst:aufgabe-stern.png?100|}} |
| c) Zeichne einen Vogel. Einen Bogen erhältst du, indem du die Befehle turtle.forward(2) turtle.right(3) mehrmals wiederholst. | {{:informatik:computerkunst:aufgabe-vogel.png?100|}} |
| d) Zeichne eine Reihe von Punkten á la Molnar. Die Farbe der Punkte soll dabei zufällig zugewiesen werden. | {{:informatik:computerkunst:molnar-1ne-reihe.png?100|}} |
{{url>https://trinket.io/embed/python/88466791c3}}
===== Hier geht es weiter... =====
[[informatik:computerkunst:verschachtelung|Verschachtelung]]
{{tag>[informatik arbeitsauftrag computerkunst lernpfad python]}}