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:28] Olaf Schnürer |
lehrkraefte:snr:informatik:glf22:python:rekursion [2022/12/23 22:32] (current) Olaf Schnürer [Einführung am Beispiel] |
||
---|---|---|---|
Line 9: | Line 9: | ||
<hidden Anweisung für Lehrer:> | <hidden Anweisung für Lehrer:> | ||
- | Sukzessive die Funktionen '' | + | Sukzessive die Funktionen '' |
Alle Funktionen haben die aktuelle Streckenlänge als Parameter '' | Alle Funktionen haben die aktuelle Streckenlänge als Parameter '' | ||
</ | </ | ||
Line 45: | Line 45: | ||
Experimentiere: | Experimentiere: | ||
- | * Für welche Verzweigungswinkel kommt eine besonders schöne Figur heraus? | + | * Für welche Verzweigungswinkel kommt eine besonders schöne Figur heraus? (Es gibt zwei " |
- | * Wer will, kann auch bereits hier eine Schleife über gewisse Verzweigungswinkel laufen lassen | + | |
* Nimm statt 3 Verzweigungen eine andere Zahl von Verzweigungen. | * Nimm statt 3 Verzweigungen eine andere Zahl von Verzweigungen. | ||
* Zeichne jede der Verzweigungen unterschiedlich lang. | * Zeichne jede der Verzweigungen unterschiedlich lang. | ||
- | * Variiere die Winkel bei den rekursiven Aufrufen. | + | * 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! | * Sei kreativ! | ||
</ | </ | ||
Line 65: | 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 81: | 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 171: | 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, | ||
+ | </ | ||