Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:rekursion:uebungen02:kochsche_schneeflocke:start [17.01.2022 19:28] – sbel | faecher:informatik:oberstufe:algorithmen:rekursion:uebungen02:kochsche_schneeflocke:start [21.01.2025 07:17] (aktuell) – Svenja Müller | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Koch' | ====== Koch' | ||
- | Die Kochsche Schneeflocke setzt sich aus drei identischen Teilen, den Kochkurven, | + | Die Kochsche Schneeflocke setzt sich aus drei identischen Teilen zusammen, die mithilfe einer rekursiven Methode gezeichnet werden können: |
- | zusammen, die mithilfe einer rekursiven Methode gezeichnet werden können: | + | |
{{ .:ks.png |}} | {{ .:ks.png |}} | ||
Jede Seite der Schneeflocke besteht aus einer // | Jede Seite der Schneeflocke besteht aus einer // | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Eine Kochkurve der Stufe n und Länge l kann mithilfe einer rekursiven Methode mit Turtle-Grafik | ||
+ | '' | ||
+ | |||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | * Verwende die Vorlage aus [[..: | ||
+ | * Notiere den Basisfall zum Zeichnen einer Kochkurve der Iteration 0 und Länge '' | ||
+ | * Zeichnen die Kochkurve in der 0. Iteration auf ein Blatt Papier. Zeichne anschließend mit anderer Farbe ein, wo sich die (um 1/3 verkleinerte) Kochkurve der Iteration 0 in der Kochkurve der Iteration 1 wiederfindet und mit einer weiteren | ||
+ | * Wie oft muss die Methode '' | ||
+ | * Wie verändern sich die Parameter der Selbstaufrufe. | ||
+ | * Welche Turtle-Befehle müssen jeweils zwischen den Selbstaufrufen ausgeführt werden? | ||
+ | * Vervollständige Quelltext und implementiere die Methode '' | ||
+ | * Implementiere die Methode '' | ||
+ | |||
+ | |||
+ | === Hilfestellungen === | ||
+ | |||
+ | ++++ Hilfe 1: Basisfall | | ||
+ | <code java> | ||
+ | public void zeichneKochkurve(int n, int l) { | ||
+ | if(n==0) { | ||
+ | // Zeichne Strich der Länge l | ||
+ | } else { | ||
+ | // Anderer Fall | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Hilfe 1: Codegerüst | | ||
+ | <code java> | ||
+ | | ||
+ | if(n==0) { | ||
+ | t.forward(l); | ||
+ | } else { | ||
+ | // Was muss mit n und l geschehen, wenn man eine Stufe weiter hineinzoomt? | ||
+ | n=FIXME | ||
+ | l=FIXME | ||
+ | // Nun müssen drei " | ||
+ | zeichneKochkurve(n, | ||
+ | // Was muss zwischendrin passieren? | ||
+ | FIXME | ||
+ | zeichneKochkurve(n, | ||
+ | FIXME | ||
+ | | ||
+ | zeichneKochkurve(n, | ||
+ | FIXME | ||
+ | |||
+ | zeichneKochkurve(n, | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ++++ | ||
+ | |||
+ | ++++ Hilfe 3: Lösungsvorschlag | | ||
+ | <code java> | ||
+ | public void zeichneKochkurve(int n, int l) { | ||
+ | if(n==0) { | ||
+ | t.forward(l); | ||
+ | } else { | ||
+ | n=n-1; | ||
+ | l=l/3; | ||
+ | zeichneKochkurve(n, | ||
+ | t.left(60); | ||
+ | zeichneKochkurve(n, | ||
+ | t.right(120); | ||
+ | zeichneKochkurve(n, | ||
+ | t.left(60); | ||
+ | zeichneKochkurve(n, | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ |