Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:snr:informatik:glf22:python:rekursion [2022/12/21 16:14] Olaf Schnürer [Einführung am Beispiel] |
lehrkraefte:snr:informatik:glf22:python:rekursion [2022/12/23 22:32] Olaf Schnürer [Einführung am Beispiel] |
||
---|---|---|---|
Line 7: | Line 7: | ||
<WRAP center round todo 100%> | <WRAP center round todo 100%> | ||
Gemeinsames angeleitetes Programmieren: | Gemeinsames angeleitetes Programmieren: | ||
+ | |||
+ | <hidden Anweisung für Lehrer:> | ||
+ | Sukzessive die Funktionen '' | ||
+ | Alle Funktionen haben die aktuelle Streckenlänge als Parameter '' | ||
+ | </ | ||
{{: | {{: | ||
Line 39: | Line 44: | ||
</ | </ | ||
- | Experimentiere: | + | Experimentiere: |
+ | * Für welche Verzweigungswinkel kommt eine besonders schöne Figur heraus? | ||
+ | * Nimm statt 3 Verzweigungen eine andere Zahl von Verzweigungen. | ||
+ | * Zeichne jede der Verzweigungen unterschiedlich lang. | ||
+ | * Variiere die Winkel bei den rekursiven Aufrufen; nett ist es beispielsweise, | ||
+ | * Wer will, kann auch bereits hier eine Schleife über gewisse Verzweigungswinkel laufen lassen (auch wenn das eigentlich erst unten in der Animationsaufgabe vorgeschlagen wird...) | ||
+ | * Sei kreativ! | ||
</ | </ | ||
Line 54: | Line 65: | ||
<WRAP center round todo> | <WRAP center round todo> | ||
- | Schreibe eine rekursive Funktion, die je nach " | + | Schreibe eine rekursive Funktion, die je nach " |
{{: | {{: | ||
Line 70: | Line 81: | ||
SEITENLAENGE = 400 | SEITENLAENGE = 400 | ||
- | def linienzug(level, a): | + | def kochkurve(level, a): |
+ | # " | ||
+ | # die Schildkröte NICHT zurück zum Ausgansgspunkt geht (wie beim Baum oben). | ||
+ | # Bei allen " | ||
+ | # der Turtle bis zu ihrem Endpunkt genau a Pixel betragen. | ||
print(' | print(' | ||
def schneeflocke(level, | def schneeflocke(level, | ||
+ | # Verwende die Funktion " | ||
print(' | print(' | ||
Line 160: | Line 176: | ||
Vielleicht ganz nett, falls jemand Spass am Python-Programmieren bekommen hat: [[https:// | Vielleicht ganz nett, falls jemand Spass am Python-Programmieren bekommen hat: [[https:// | ||
+ | ====== Baum-Programm aus Lektion ====== | ||
+ | |||
+ | <code python baum.py> | ||
+ | from turtle import * | ||
+ | |||
+ | STAMMLAENGE = 380 | ||
+ | |||
+ | def ast0(a): | ||
+ | forward(a) | ||
+ | backward(a) | ||
+ | |||
+ | def ast1(a, winkel): | ||
+ | forward(a) | ||
+ | |||
+ | left(winkel) | ||
+ | ast0(a/2) | ||
+ | right(winkel) | ||
+ | ast0(a/2) | ||
+ | right(winkel) | ||
+ | ast0(a/2) | ||
+ | left(winkel) | ||
+ | |||
+ | backward(a) | ||
+ | |||
+ | def ast2(a, winkel): | ||
+ | forward(a) | ||
+ | |||
+ | left(winkel) | ||
+ | ast1(a/2, winkel) | ||
+ | right(winkel) | ||
+ | ast1(a/2, winkel) | ||
+ | right(winkel) | ||
+ | ast1(a/2, winkel) | ||
+ | left(winkel) | ||
+ | |||
+ | backward(a) | ||
+ | |||
+ | def ast(level, a, winkel): | ||
+ | if level == 0: | ||
+ | forward(a) | ||
+ | backward(a) | ||
+ | else: | ||
+ | forward(a) | ||
+ | |||
+ | left(winkel) | ||
+ | ast(level - 1, a/2, winkel) | ||
+ | right(winkel) | ||
+ | ast(level - 1, a/2, winkel) | ||
+ | right(winkel) | ||
+ | ast(level - 1, a/2, winkel) | ||
+ | left(winkel) | ||
+ | |||
+ | backward(a) | ||
+ | |||
+ | speed(0) | ||
+ | # hideturtle() | ||
+ | penup() | ||
+ | left(90) | ||
+ | backward(STAMMLAENGE) | ||
+ | pendown() | ||
+ | ast(6, STAMMLAENGE, | ||
+ | |||
+ | exitonclick() | ||
+ | |||
+ | # Um die Zeichung schneller erscheinen zu lassen, | ||
+ | # gibt es den folgenden Trick: | ||
+ | # Ersetze die Zeile '' | ||
+ | # und ergänze in der Zeile vor '' | ||
+ | # also nach allen Zeichenbefehlen, | ||
+ | </ | ||