Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:programmieren_i_new [2023-08-29 08:00] – hof | gf_informatik:programmieren_i_new [2026-04-14 07:11] (aktuell) – [Flächen füllen] hof | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| ===== - Einführung ===== | ===== - Einführung ===== | ||
| - | Ein Computer ist zunächst einfach mal eine Maschine, die wahnsinnig schnell arbeiten (rechnen) kann. Damit man zum Beispiel ein Spiel spielen können, muss irgend jemand dem Computer also sagen, was er denn genau zu tun hat. Jemand muss also ein **Computerprogramm**, | + | Ein Computer ist zunächst einfach mal eine Maschine, die wahnsinnig schnell arbeiten (rechnen) kann. Damit man zum Beispiel ein Spiel spielen können, muss irgend jemand dem Computer also sagen, was er denn genau zu tun hat. Jemand muss also ein **Computerprogramm**, |
| - | Wir wählen hier die Programmiersprache **Python**. Im Jahre 2020 ist diese Sprache sicher in der Top 3 der wichtigsten Programmiersprachen - wenn nicht sogar auf dem ersten Platz. Dazu kommt, dass Python im Vergleich zu anderen Sprachen, z.B. C\+\+ (C Plus Plus), Java oder C# (C Sharp) relativ einfach zu erlernen ist. | + | Wir wählen hier die Programmiersprache **Python**. Im Jahre 2026 ist diese Sprache sicher in der Top 3 der wichtigsten Programmiersprachen - wenn nicht sogar auf dem ersten Platz. Dazu kommt, dass Python im Vergleich zu anderen Sprachen, z.B. C\+\+ (C Plus Plus), Java oder C# (C sharp) relativ einfach zu erlernen ist. |
| - | Wenn wir einen Satz mit vielen Schreibfelern und Grammatikfehler lesen, so sind wir meist trotzdem in der Lage, den Satz zu verstehen. Im Gegensatz zu uns hat ein Computer | + | Wenn wir einen Satz mit vielen Schreibfelern und Grammatikfehler lesen, so sind wir meist trotzdem in der Lage, den Satz zu verstehen. Im Gegensatz zu uns ist ein Computer ist nicht in der Lage, einen Text selbst zu interpretieren. Ein Computer kann ein Programm nur ausführen, wenn es gar keine Fehler, sogenannte **Bugs**, hat. Es ist deshalb wichtig, dass man sich an die formalen Vorgaben der Programmiersprache hält. |
| - | Wie gesagt werden wir in der Programmiersprache Python programmieren. Wir brauchen aber noch ein Programm, um unseren Code zu schreiben und auszuführen, | + | ==== Installation ==== |
| + | === Web Tiger Python === | ||
| + | Am einfachsten ist es, Programme direkt im Web zu schreiben. Wir verwenden die folgenden Seiten: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| - | ==== Installation ==== | + | Die Programme |
| - | + | ||
| - | === Web Tiger Jython === | + | |
| - | Am einfachsten ist es, Programme | + | |
| - | Um ein Programm abzuspeichern, | + | {{ : |
| + | <nodisp 2> | ||
| + | ++++ Tiger Jython| | ||
| === Tiger Jython === | === Tiger Jython === | ||
| - | Alternativ steht ein installierbares Programm bereit, das auch _offline_ funktioniert. Gehe auf die Website [[https://www.tjgroup.ch/index.php? | + | Alternativ steht ein installierbares Programm bereit, das auch _offline_ funktioniert. Gehe auf die Website [[https://tigerjython.ch/de/ |
| *Tipp:* Wahrscheinlich benötigst du die 64-bit Version | *Tipp:* Wahrscheinlich benötigst du die 64-bit Version | ||
| - | *Achtung Mac User:* Mac User befolgen für die Installation die Schritte auf folgender Seite: [[https:// | + | == Entwicklungsumgebung === |
| - | + | ||
| - | ==== Entwicklungsumgebung | + | |
| Das Menu in TigerJython oben links sieht aus wie folgt: | Das Menu in TigerJython oben links sieht aus wie folgt: | ||
| - | {{: | + | {{: |
| Die wichtigsten Befehle, die du in TigerJython brauchst, sind die vier Symbole ganz links: | Die wichtigsten Befehle, die du in TigerJython brauchst, sind die vier Symbole ganz links: | ||
| Zeile 41: | Zeile 42: | ||
| Du solltest dir angewöhnen, | Du solltest dir angewöhnen, | ||
| + | ++++ | ||
| + | </ | ||
| + | ==== Dokumentation ==== | ||
| - | ==== Aufgaben ==== | + | * Erstelle eine Ordnerstruktur auf [[https:// |
| - | + | * Erstelle für jedes Kapitel [[https:// | |
| - | * In jedem Kapitel gibt es ein **Set an Aufgaben**. Jedes Set ist mit einem Buchstaben gekennzeichnet. | + | * Du machst dir Notizen während der Lektionen und zu den Aufgaben. Programme speicherst du als Permalink. |
| - | * Erstelle an einem Ort auf deinem Computer, der mit OneDrive | + | |
| - | * Erstelle für **jede Aufgabe eine eigene Datei**. Benenne diese nach dem folgenden Schema: Aufgabe B2 in Datei `aufgabe_B_2` | + | |
| * Für einige Aufgaben wird es **Musterlösungen** geben, aber nicht für alle. Falls du dir unsicher bist: Frage bei der Lehrperson nach. | * Für einige Aufgaben wird es **Musterlösungen** geben, aber nicht für alle. Falls du dir unsicher bist: Frage bei der Lehrperson nach. | ||
| * Du bist **selbst verantwortlich**, | * Du bist **selbst verantwortlich**, | ||
| Zeile 55: | Zeile 57: | ||
| * Im Dossier gibt es viele kleine **Code-Beispiele**. Tippe diese jeweils //von Hand ab// und versuche, alles zu // | * Im Dossier gibt es viele kleine **Code-Beispiele**. Tippe diese jeweils //von Hand ab// und versuche, alles zu // | ||
| * Verwende **Shortcuts**: | * Verwende **Shortcuts**: | ||
| - | * Ctrl+S: Speichern | + | * Ctrl+Enter: Programm ausführen |
| * Generell: Benutze die Maus so wenig wie möglich! | * Generell: Benutze die Maus so wenig wie möglich! | ||
| ===== - Einfache Bewegungen ===== | ===== - Einfache Bewegungen ===== | ||
| + | < | ||
| - | Kreiere ein neues Projekt und nenne es `turtle_01.py` und füge diesem folgenden Inhalt hinzu: | + | <html>< |
| - | + | ||
| - | <code python> | + | |
| from turtle import * | from turtle import * | ||
| Zeile 68: | Zeile 69: | ||
| fritz.forward(100) | fritz.forward(100) | ||
| - | </code> | + | </bottom-editor></ |
| - | + | ||
| - | Verwende anstelle von *fritz* deinen Namen (keine Bindestriche im Namen!) | + | |
| Erklärung der Zeilen: | Erklärung der Zeilen: | ||
| - | - Zuerst musst du das *Modul `turtle` importieren*, | + | - Zuerst musst du das *Modul `turtle` importieren*, |
| - | - Erzeuge | + | - Erzeuge |
| - | - Gib deinem | + | - Gib deiner |
| - | Du kannst | + | Du kannst |
| ^ Befehl ^ Beschreibung ^ | ^ Befehl ^ Beschreibung ^ | ||
| - | | forward(s) | s Schritte (in Pixel) vorwärts bewegen | + | | `forward(s)` | `s` Schritte (in Pixel) vorwärts bewegen |
| - | | back(s) | + | | `back(s)` |
| - | | right(w) | + | | `right(w)` | um den Winkel |
| - | | left(w) | + | | `left(w)` | um den Winkel |
| - | | home() | + | | `home()` | setzt Turtle in die Mitte des Fensters mit Richtung nach rechts | |
| - | | setpos(-100, | + | |
| - | | setx(30) | + | Um die Turtle an eine andere Stelle zu bewegen, brauchst du die folgenden Befehle: |
| - | | sety(30) | + | |
| - | | hideturtle() | + | ^ Befehl ^ Erklärung^ |
| + | | `teleport(-100, | ||
| + | | `setpos(-100, | ||
| + | | `setx(30)` | setzt x-Koordinate | ||
| + | | `sety(30)` | setzt y-Koordinate | ||
| + | | `up()` | Hebt den Stift, es wird also **nicht gezeichnet** | ||
| + | | `down()` | Setzt Stift wieder ab, es wird also wieder **gezeichnet** | | ||
| + | |||
| + | Du willst mehr machen? Dann findest du viele weitere Funktionen in der [[https:// | ||
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| Zeile 98: | Zeile 105: | ||
| === Aufgabe A2 === | === Aufgabe A2 === | ||
| - | Programmiere | + | Programmiere |
| === Aufgabe A3 === | === Aufgabe A3 === | ||
| - | Programmiere | + | Programmiere |
| === Aufgabe A4 === | === Aufgabe A4 === | ||
| - | Wahrscheinlich hast du die letzte | + | Wahrscheinlich hast du die Aufgabe |
| <code python> | <code python> | ||
| Zeile 117: | Zeile 124: | ||
| * **Kommentare** werden in Python mit `#` gekennzeichnet. Kommentare werden von Python *ignoriert*. Man kann diese z.B. brauchen, um im Code Erklärungen anzufügen, damit jemand andere den Code besser verstehen kann. | * **Kommentare** werden in Python mit `#` gekennzeichnet. Kommentare werden von Python *ignoriert*. Man kann diese z.B. brauchen, um im Code Erklärungen anzufügen, damit jemand andere den Code besser verstehen kann. | ||
| - | Mache eine Kopie deiner Lösung aus Aufgabe A2. Schreibe | + | Gehe zurück zu Aufgabe A2. Schreibe deine Lösung um, indem du den `repeat` Befehl verwendest. |
| ===== - Kreisbogen ===== | ===== - Kreisbogen ===== | ||
| Zeile 133: | Zeile 140: | ||
| </ | </ | ||
| - | Dabei bestimmt das Argument den Radius des Kreise in Pixel. | + | Dabei bestimmt das Argument den Radius des Kreise in Pixel. Ist der Radius positiv, zeichnen im Gegenuhrzeigersinn, |
| - | Um einen Teilkreis zu zeichnen, können wir zusätzlich den `extent` | + | Um einen Teilkreis zu zeichnen, können wir zusätzlich den Winkel |
| - | Zum Beispiel zeichnet man mit dem Befehl `circle(100, | + | Zum Beispiel zeichnet man mit dem Befehl `circle(-100, 180)` einen Halbkreis (180 Grad Winkel) mit Radius 100 Pixel im Uhrzeigersinn. |
| ==== Aufgaben B ==== | ==== Aufgaben B ==== | ||
| Zeile 145: | Zeile 152: | ||
| Verwende die Befehle `dot(), forward(), right(), left()`, um folgende Figur zu zeichnen: | Verwende die Befehle `dot(), forward(), right(), left()`, um folgende Figur zu zeichnen: | ||
| - | {{: | + | {{: |
| Versuche nun deinen Code zu kurz wie möglich zu schreiben. Vermeide Code-Wiederholungen, | Versuche nun deinen Code zu kurz wie möglich zu schreiben. Vermeide Code-Wiederholungen, | ||
| Zeile 153: | Zeile 160: | ||
| Zeichne mit Hilfe der Befehle `circle()` die nebenstehende Figur. | Zeichne mit Hilfe der Befehle `circle()` die nebenstehende Figur. | ||
| - | {{: | + | {{: |
| === Aufgabe B3 === | === Aufgabe B3 === | ||
| Zeile 159: | Zeile 166: | ||
| Zeichne die folgende Schmetterling-Figur: | Zeichne die folgende Schmetterling-Figur: | ||
| - | {{: gf_informatik: | + | {{: gf_informatik: |
| === Aufgabe B4 === | === Aufgabe B4 === | ||
| Zeile 165: | Zeile 172: | ||
| Zeichne die folgenden Figuren; | Zeichne die folgenden Figuren; | ||
| - | {{: | + | {{: |
| === Aufgabe B5 === | === Aufgabe B5 === | ||
| Zeile 171: | Zeile 178: | ||
| Gelingt es dir die nebenstehende Figur in einem Zug zu zeichnen, ohne dass dabei eine Strecke zweimal durchlaufen wird? | Gelingt es dir die nebenstehende Figur in einem Zug zu zeichnen, ohne dass dabei eine Strecke zweimal durchlaufen wird? | ||
| - | {{: gf_informatik: | + | {{: gf_informatik: |
| Zeile 180: | Zeile 187: | ||
| ==== Flächen füllen ==== | ==== Flächen füllen ==== | ||
| - | Just for fun: Kopiere den folgenden Code eine und führe | + | Just for fun: |
| + | * Kopiere den folgenden Code nach TigerPython (oder folge [[https:// | ||
| + | * Überlege dir bei jedem Codeblock, was dieser tut, und dokumentiere in einem Kommentar! | ||
| + | * Vergleicht eure Voraussagen zu zweit. | ||
| + | * Führe den Code aus! | ||
| + | * Trifft deine Voraussage zu? | ||
| + | * Ändere den Code ab, um das Bild zu verändern! | ||
| - | <code python> | + | <html>< |
| - | from turtle import * | + | # Turtle wird importiert und eine neue Turtle mit |
| - | + | # dem Namen ' | |
| + | # TODO import | ||
| fritz = Turtle() | fritz = Turtle() | ||
| - | + | ||
| - | fritz.setpos(-50, 50) | + | # Fritz wird nach links und oben teleportiert. |
| - | fritz.screen.bgcolor(" | + | fritz.teleport(-50, 50) |
| + | |||
| + | # Was passiert hier? | ||
| + | Screen().bgcolor(" | ||
| fritz.color(" | fritz.color(" | ||
| + | |||
| fritz.begin_fill() | fritz.begin_fill() | ||
| repeat 4: | repeat 4: | ||
| Zeile 197: | Zeile 215: | ||
| fritz.left(180) | fritz.left(180) | ||
| fritz.end_fill() | fritz.end_fill() | ||
| - | </code> | + | </bottom-editor></ |
| - | Studiere den Code Zeile für Zeile. Stelle sicher, dass du folgende Befehle genau verstehst: | + | Studiere den Code Zeile für Zeile. Stelle sicher, dass du folgende Befehle genau verstehst. |
| ^ Befehl ^ Erklärung^ | ^ Befehl ^ Erklärung^ | ||
| - | | fritz.screen.bgcolor(' | + | | `Screen().bgcolor(' |
| - | | color(' | + | | `color(' |
| - | | begin_fill() / end_fill() | Lässt | + | | `pencolor(' |
| - | | width(10)| Legt die **Breite des Stiftes** fest.| | + | | `fillcolor(' |
| - | | up() | Hebt den Stift, es wird also **nicht gezeichnet** | | + | | `begin_fill()` / `end_fill()` | Füllt |
| - | | down() | Setzt Stift wieder ab, es wird also wieder | + | | `width(10)` | Legt die **Breite des Stiftes** fest.| |
| + | |||
| + | ==== Aufgaben C ==== | ||
| + | |||
| + | Verwende `pencolor` / `fillcolor`, | ||
| + | |||
| + | === Aufgabe C1 === | ||
| + | |||
| + | Spieglein, Spieglein... | ||
| + | |||
| + | {{: | ||
| + | |||
| + | <nodisp 1> | ||
| + | ++++Lösung| | ||
| + | < | ||
| + | from turtle import * | ||
| + | |||
| + | t = Turtle() | ||
| + | t.hideturtle() | ||
| + | |||
| + | # Farbe und Stiftbreite | ||
| + | t.color(" | ||
| + | t.width(5) | ||
| + | |||
| + | # Gefüllter Kreis | ||
| + | t.begin_fill() | ||
| + | t.circle(50) | ||
| + | t.end_fill() | ||
| + | |||
| + | # Griff | ||
| + | t.right(90) | ||
| + | t.forward(75) | ||
| + | t.backward(40) | ||
| + | t.left(90) | ||
| + | t.forward(40) | ||
| + | t.backward(80) | ||
| + | </ | ||
| + | |||
| + | ++++ | ||
| + | </ | ||
| + | === Aufgabe C2 === | ||
| + | |||
| + | A star is born - don't forget to `repeat`: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | <nodisp 1> | ||
| + | ++++Lösung| | ||
| + | < | ||
| + | from turtle import * | ||
| + | |||
| + | t = Turtle() | ||
| + | t.hideturtle() | ||
| + | |||
| + | # Hintergrund-, Füll- und Stiftfarbe | ||
| + | Screen().bgcolor(" | ||
| + | t.fillcolor(" | ||
| + | t.pencolor(" | ||
| + | t.width(4) | ||
| + | |||
| + | # Sechs Ecken | ||
| + | t.begin_fill() | ||
| + | repeat 6: | ||
| + | t.forward(40) | ||
| + | t.right(120) | ||
| + | t.forward(40) | ||
| + | t.left(60) | ||
| + | t.end_fill() | ||
| + | </ | ||
| + | |||
| + | ++++ | ||
| + | </ | ||
| + | |||
| + | === Aufgabe C3 === | ||
| + | Here comes the sun! | ||
| + | |||
| + | {{: | ||
| + | |||
| + | <nodisp 1> | ||
| + | ++++Lösung| | ||
| + | < | ||
| + | from turtle import* | ||
| + | |||
| + | t = Turtle() | ||
| + | t.hideturtle() | ||
| + | t.speed(0) | ||
| + | |||
| + | Screen().bgcolor(" | ||
| + | t.color(" | ||
| + | |||
| + | # Statt ganz vieler Zacken: Linien durchziehen... | ||
| + | t.begin_fill() | ||
| + | repeat 36: | ||
| + | t.forward(100) | ||
| + | t.right(130) | ||
| + | t.end_fill() | ||
| + | </ | ||
| + | |||
| + | |||
| + | ++++ | ||
| + | </ | ||
| Zeile 213: | Zeile 331: | ||
| <nodisp 1> | <nodisp 1> | ||
| - | ++++Lösungen| | + | ++++Lösungen |
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| - | + | ===== A2 ===== | |
| - | <code python aufgabe_A2.py> | + | <html>< |
| from turtle import * | from turtle import * | ||
| Zeile 229: | Zeile 347: | ||
| fritz.forward(100) | fritz.forward(100) | ||
| fritz.left(90) | fritz.left(90) | ||
| - | </code> | + | </bottom-editor></ |
| - | + | ===== A3 ===== | |
| - | <code python aufgabe_A3.py> | + | <html>< |
| from turtle import * | from turtle import * | ||
| Zeile 238: | Zeile 356: | ||
| # Buchstabe: K | # Buchstabe: K | ||
| - | fritz.setPos(-200,-100) | + | fritz.left(90) |
| + | fritz.teleport(-200, -100) | ||
| fritz.forward(200) | fritz.forward(200) | ||
| - | fritz.setPos(-200,0) | + | fritz.teleport(-200,0) |
| fritz.right(45) | fritz.right(45) | ||
| fritz.forward(141) | fritz.forward(141) | ||
| - | fritz.setPos(-200,0) | + | fritz.teleport(-200,0) |
| fritz.right(90) | fritz.right(90) | ||
| fritz.forward(141) | fritz.forward(141) | ||
| # Buchstabe: S | # Buchstabe: S | ||
| - | fritz.setPos(-50,-100) | + | fritz.teleport(-50,-100) |
| fritz.left(45) | fritz.left(45) | ||
| fritz.forward(100) | fritz.forward(100) | ||
| Zeile 261: | Zeile 380: | ||
| # Buchstabe: R | # Buchstabe: R | ||
| - | fritz.setPos(100,-100) | + | fritz.teleport(100,-100) |
| fritz.left(90) | fritz.left(90) | ||
| fritz.forward(200) | fritz.forward(200) | ||
| Zeile 272: | Zeile 391: | ||
| fritz.left(135) | fritz.left(135) | ||
| fritz.forward(141) | fritz.forward(141) | ||
| - | </code> | + | </bottom-editor></ |
| + | ===== A4 ===== | ||
| - | <code python aufgabe_A4.py> | + | <html>< |
| from turtle import * | from turtle import * | ||
| Zeile 283: | Zeile 403: | ||
| fritz.forward(100) | fritz.forward(100) | ||
| fritz.left(90) | fritz.left(90) | ||
| - | </code> | + | </bottom-editor></ |
| + | ++++ | ||
| + | </ | ||
| + | |||
| + | <nodisp 1> | ||
| + | ++++Lösungen B| | ||
| ==== Aufgaben B ==== | ==== Aufgaben B ==== | ||
| + | ===== B1 ===== | ||
| - | <code python aufgabe_B1.py> | + | <html>< |
| - | from turtle import* | + | from turtle import * |
| matteo = Turtle() | matteo = Turtle() | ||
| - | matteo.setPos(-450, | ||
| - | repeat | + | repeat |
| matteo.dot(20) | matteo.dot(20) | ||
| - | matteo.right(45) | + | matteo.left(45) |
| - | matteo.forward(150) | + | matteo.forward(100) |
| matteo.dot(20) | matteo.dot(20) | ||
| matteo.right(90) | matteo.right(90) | ||
| - | matteo.forward(150) | + | matteo.forward(100) |
| - | matteo.left(90+45) | + | matteo.dot(20) |
| - | </code> | + | # Turn left only 45° as the next round |
| + | # will start with a left turn. | ||
| + | matteo.left(45) | ||
| + | </bottom-editor></ | ||
| + | ===== B2 ===== | ||
| - | <code python aufgabe_B2.py> | + | <html>< |
| from turtle import * | from turtle import * | ||
| matteo = Turtle() | matteo = Turtle() | ||
| - | matteo.setX(-300) | + | matteo.left(90) |
| - | matteo.circle(300, -180) | + | matteo.teleport(-100, 0) |
| - | matteo.circle(150, | + | |
| - | matteo.circle(150, 180) | + | |
| - | </ | + | |
| + | matteo.circle(-100, | ||
| + | matteo.circle(-50, | ||
| + | matteo.circle(50, | ||
| + | </ | ||
| - | <code python aufgabe_B3.py> | + | ===== B3 ===== |
| + | |||
| + | <html>< | ||
| from turtle import * | from turtle import * | ||
| matteo = Turtle() | matteo = Turtle() | ||
| + | matteo.left(90) | ||
| - | matteo.circle(100, -360) | + | matteo.circle(-25, 360) |
| - | matteo.circle(200, -360) | + | matteo.circle(-50, 360) |
| - | matteo.circle(400, -70) | + | matteo.circle(-100, 70) |
| - | matteo.home() | + | |
| - | matteo.circle(100, 360) | + | matteo.teleport(0, 0) |
| - | matteo.circle(200, 360) | + | matteo.setheading(90) |
| - | matteo.circle(400, 70) | + | |
| - | </code> | + | matteo.circle(25, 360) |
| + | matteo.circle(50, 360) | ||
| + | matteo.circle(100, 70) | ||
| + | </bottom-editor></ | ||
| + | |||
| + | ===== B4 ===== | ||
| - | <code python aufgabe_B4.py> | + | <html>< |
| from turtle import * | from turtle import * | ||
| Zeile 337: | Zeile 475: | ||
| # 1 | # 1 | ||
| - | anna.setpos(-350,-100) | + | anna.left(90) |
| + | anna.teleport(-350,-100) | ||
| repeat 3: | repeat 3: | ||
| Zeile 344: | Zeile 483: | ||
| # 2 | # 2 | ||
| - | anna.setpos(-100,-50) | + | anna.teleport(-100,-50) |
| repeat 6: | repeat 6: | ||
| Zeile 351: | Zeile 490: | ||
| # 3 | # 3 | ||
| - | anna.setpos(150,-50) | + | anna.teleport(150,-50) |
| repeat 2: | repeat 2: | ||
| Zeile 359: | Zeile 498: | ||
| anna.forward(100) | anna.forward(100) | ||
| anna.left(90) | anna.left(90) | ||
| - | </code> | + | |
| + | |||
| + | ===== B5 ===== | ||
| - | <code python aufgabe_B5.py> | + | <html>< |
| from turtle import * | from turtle import * | ||
| + | from math import sqrt | ||
| josef = Turtle() | josef = Turtle() | ||
| # | # | ||
| - | |||
| - | josef.setpos(350, | ||
| m = 200 | m = 200 | ||
| Zeile 373: | Zeile 513: | ||
| s = m/sqrt(2) | s = m/sqrt(2) | ||
| - | josef.left(45) | + | josef.left(135) |
| josef.forward(l) | josef.forward(l) | ||
| repeat 2: | repeat 2: | ||
| Zeile 385: | Zeile 525: | ||
| josef.right(90) | josef.right(90) | ||
| josef.forward(m) | josef.forward(m) | ||
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| </ | </ | ||
| - | |||