At My Fingertips

Schleifen: Variation

Aufwärmen

Aufgabe

Grafik 1: reihe_1 Grafik 2: reihe_2

Die Sterne der ersten Grafik sind verschiedener Grösse (stetig steigend), die Sterne der anderen Grafik nicht. Die erste Grafik hat zudem 7 Sterne, die zweite 8.

Aufgabe

def reihe_a(anzahl: int, farbe: Color) -> Graphic:
    SEITE = 50
    STERN = compose(
        triangle(SEITE, SEITE, 60, farbe),
        rotate(180, triangle(SEITE, SEITE, 60, farbe))
    )
    reihe = empty_graphic()

    for n in range(anzahl):
        reihe = beside(reihe, STERN)
    
    return reihe

show_graphic(reihe_a(8, rgb_color(250, 10, 250)))
def reihe_b(anzahl: int, farbe: Color) -> Graphic:
    reihe = empty_graphic()

    for n in range(anzahl):
        seite = n * 10
        stern = compose(
            triangle(seite, seite, 60, farbe),
            rotate(180, triangle(seite, seite, 60, farbe))
        )
        reihe = beside(reihe, stern)
    
    return reihe

show_graphic(reihe_b(8, rgb_color(250, 10, 250)))

Erklärung der Variation

In der Funktion reihe_a bleibt der Wert der Variable SEITE immer gleich und damit auch die Grösse der Sterne. Man erkennt das auch daran, dass der Wert der Variable STERN vor der Schleife genau einmal zugewiesen wird. Überprüfen Sie:

Loading...

In der Funktion reihe_b wird der Wert der Variable seite bei jedem Schleifendurchlauf neu berechnet. Der Wert in seite ist abhängig von der sich ändernden Schleifenvariable n. Damit ändert sich auch der Wert der Variable stern bei jedem Schleifendurchlauf: Der Stern, der neu hinzugefügt wird, wird bei jedem Schleifendurchlauf grösser. Überprüfen Sie:

Loading...

Weil der erste Stern der Grafik mit den sich verändernden Sternen eine Seitenlänge von 0 hat: Er ist also nicht sichtbar, es gibt ihn nicht.

Der erste Schritt wird jetzt erst in der Schleife jeweils ausgeführt, da die Grafik bei jedem Schleifendurchlauf neu berechnet werden kann:

def reihe_b(anzahl: int, farbe: Color) -> Graphic:
    reihe = empty_graphic() # 2 Akkumulator (leer) erstellen

    for n in range(anzahl): # 3 Schleife
        seite = n * 10
        stern = compose( # 1 zuzufügendes Element
            triangle(seite, seite, 60, farbe),
            rotate(180, triangle(seite, seite, 60, farbe))
        )
        reihe = beside(reihe, stern) 
    
    return reihe # 4 Akkumulator (gefüllt) zurückgeben

Konstanten

Sicherlich haben Sie bemerkt, dass in der Funktion reihe_a die Variablen SEITE und STERN in Grossbuchstaben geschrieben sind, jedoch in reihe_b in Kleinbuchstaben: seite und stern. Man schreibt Variablen mit Grossbuchstaben, wenn sie Konstanten sind. Konstanten sind Variablen, deren Wert sich nie ändert. Um dies in Python stilistisch zu signalisieren, werden solche Variablen gross geschrieben.

Die Variablen seite und stern sind mit Kleinbuchstaben geschrieben, weil sich ihr Wert immer wieder verändert, es sind also variable Variablen, keine Konstanten.

Aufgabe

Erstellen Sie folgende Grafik:

baum

Tipp: Erstellen Sie grüne gleichschenklige Dreicke mit winkel=100° und drehen Sie sie um -140°.

Loading...
Lösung
def tannenbaum(anzahl_aeste: int) -> Graphic:

    aeste = empty_graphic() # leeren Akkumulator erstellen

    for n in range(anzahl_aeste, 0, -1): # Schleifenkopf
        seite = n * 30  
        # sich ändernde Grafik erstellen
        ast = rotate(-140, triangle(seite, seite, 100, GRUEN)) 
        aeste = above(ast,aeste) # zum Akkumulator hinzufügen
    
    # Stamm hinzufügen, Baum zurückgeben
    return above(aeste, rectangle(seite, 2 * seite, BRAUN))

Was Sie geübt und gelernt haben

Programmierkonzepte

  • Sie erkennen Konstanten und können ihre Verwendung in eigenen Worten erklären.
  • Sie können gut lesbaren, strukturierten und modularisierten Programmiercode schreiben.
  • Sie können bestehende Programme sinnvoll abändern und erweitern.
  • Sie können Befehlssequenzen manuell (Schritt-für-Schritt) durchführen und das Ergebnis bestimmen.
  • Sie können Probleme lösen, indem Sie diese in Teilprobleme zerlegen.

Python

  • (nichts Neues)

PyTamaro

  • Sie können Schleifen verwenden, um sich ändernde Grafiken zu einem Ganzen zu vereinen.

This activity has been created by Gall and is licensed under CC BY-SA 4.0.

Schleifen: Variation

Logo of PyTamaro

PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI

Privacy PolicyPlatform Version b744b47 (Tue, 08 Oct 2024 16:30:14 GMT)