Verschachtelung
In der letzten Lektion hast du die Zählschleife angewendet und eine Reihe aus Punkten mit zufälliger Farbzuweisung zeichnen lassen. | |
Nun möchten wir endlich die vollständige Grafik à la Molnar programmieren, also nicht nur eine Reihe aus Punkten, sondern mehrere Reihen. Das Ziel ist also solch eine Grafik: |
Die einzelnen Reihen der Grafik unterscheiden sich nicht. Wir können also diesen Programmblock, der eine Reihe zeichnet, dreimal wiederholen mit einer weiteren Schleife. Dazu schachteln wir die Schleifen ineinander. Die innere Schleife wiederholt das Zeichnen der Punkte, damit eine Reihe entsteht. Die äußere Schleife wiederholt dies dann dreimal.
Du kennst vielleicht Matrjoschkas - ineinander schachtelbare, russische Puppen. Jedes Mal wenn eine Puppe geöffnet wird, erscheint eine weitere kleinere Puppe. Du kannst dir verschachtelte Kontrollstrukturen (if, if+else, if+elif+else, for-Schleife,…) ähnlich vorstellen.
Verschachtelte Schleifen
Beispiel
Ein Quadrat gelingt einfach mit einer vierfachen Wiederholung. Nun soll die Turtle 20 Quadrate zeichnen und die Quadrate etwas gegeneinander verdrehen. Dazu muss man zwei Zählschleifen ineinander schachteln. Im inneren Programmblock zeichnet die Turtle ein Quadrat und dreht anschließend um 18 Grad nach rechts. Die äußere repeat-Anweisung wiederholt dies 20 mal. Beachte dabei die korrekte Einrückung bei den Anweisungen, die wiederholt werden sollen.
for i in range(1,21): for i in range(1,5): turtle.forward(100) turtle.left(90) turtle.right(18)
Aufgabe 1
Zeichne folgende Figur mit zwei verschachtelten Zählschleifen. Im inneren Schleifenrumpf wird ein Quadrat gezeichnet. Nutze den Trinket-Editor unten.
Aufgabe 2
Zeichne eine Grafik mit Quadraten, deren Position zufällig bestimmt wird. Löse das Problem, indem du zwei Zählschleifen verschachtelst.
Aufgabe 3
Zeichne die Grafik á la Molnar, indem du zwei Zählschleifen verschachtelst. Die Farbzuweisung soll zufällig erfolgen.
Nutze diesen Programmcode für Aufgabe 3 und ergänze die verschachtelten Schleifen ;)
import turtle import random #Farben "#373f51" "#208aae" "#e43f6f" turtle.speed(20) turtle.penup() turtle.goto(-300,300) turtle.pendown() zufallszahl = random.randint(1, 100) if zufallszahl > 90: turtle.dot(80,"#373f51") elif zufallszahl > 10: turtle.dot(80,"#208aae") else: turtle.dot(80,"#e43f6f") turtle.penup() turtle.forward(85)
Hier geht es weiter...