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 [2026-04-07 06:53] – angelegt hof | gf_informatik:programmieren_i_new [2026-04-14 07:11] (aktuell) – [Flächen füllen] hof | ||
|---|---|---|---|
| Zeile 5: | Zeile 5: | ||
| 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 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. | + | 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 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. | 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. | ||
| Zeile 49: | Zeile 49: | ||
| * Erstelle eine Ordnerstruktur auf [[https:// | * Erstelle eine Ordnerstruktur auf [[https:// | ||
| * Erstelle für jedes Kapitel [[https:// | * Erstelle für jedes Kapitel [[https:// | ||
| - | * Du machst dir Notizen während der Lektionen und zu den Aufgaben. | + | * Du machst dir Notizen während der Lektionen und zu den Aufgaben. Programme speicherst du als Permalink. |
| * 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 61: | Zeile 61: | ||
| ===== - Einfache Bewegungen ===== | ===== - Einfache Bewegungen ===== | ||
| + | < | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | fritz = Turtle() | ||
| + | |||
| + | fritz.forward(100) | ||
| + | </bottom-editor></ | ||
| Erklärung der Zeilen: | Erklärung der Zeilen: | ||
| - | - Zuerst musst du das *Modul `turtle` importieren*, | + | - Zuerst musst du das *Modul `turtle` importieren*, |
| - Erzeuge eine neue Turtle mit einem Namen, hier `fritz`. Man nennt dieses auch ein *Turtle-Objekt*. | - Erzeuge eine neue Turtle mit einem Namen, hier `fritz`. Man nennt dieses auch ein *Turtle-Objekt*. | ||
| - Gib deiner Turtle den Befehl, 100 Pixel vorwärts zu laufen. | - Gib deiner Turtle den Befehl, 100 Pixel vorwärts zu laufen. | ||
| - | Du kannst deiner Turtle | + | Du kannst deiner Turtle |
| ^ Befehl ^ Beschreibung ^ | ^ Befehl ^ Beschreibung ^ | ||
| Zeile 79: | Zeile 84: | ||
| | `left(w)` | | `left(w)` | ||
| | `home()` | | `home()` | ||
| - | | `hideturtle()` | ||
| Um die Turtle an eine andere Stelle zu bewegen, brauchst du die folgenden Befehle: | Um die Turtle an eine andere Stelle zu bewegen, brauchst du die folgenden Befehle: | ||
| Zeile 92: | Zeile 96: | ||
| Du willst mehr machen? Dann findest du viele weitere Funktionen in der [[https:// | Du willst mehr machen? Dann findest du viele weitere Funktionen in der [[https:// | ||
| + | |||
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| Zeile 100: | Zeile 105: | ||
| === Aufgabe A2 === | === Aufgabe A2 === | ||
| - | Programmiere deine Turtle so, dass es ein **Quadrat** abläuft. | + | Programmiere deine Turtle so, dass sie ein **Quadrat** abläuft. |
| === Aufgabe A3 === | === Aufgabe A3 === | ||
| - | Programmiere deine Turtle so, dass er **deinen Namen**, Spitznamen oder zumindest deine Initialen abläuft. | + | Programmiere deine Turtle so, dass sie **deinen Namen**, Spitznamen oder zumindest deine Initialen abläuft. |
| === Aufgabe A4 === | === Aufgabe A4 === | ||
| - | Wahrscheinlich hast du die Aufgabe 2 (Quadrat ablaufen) so gelöst, dass dein Code aus 4x genau den gleichen vier Zeilen Code besteht. Dies ist zwar richtig, | + | Wahrscheinlich hast du die Aufgabe 2 (Quadrat ablaufen) so gelöst, dass dein Code aus 4x genau den gleichen vier Zeilen Code besteht. Dies ist zwar richtig, aber nicht sehr elegant. Mit `repeat` kannst du sagen, dass du einen Codeblock eine gewisse Anzahl mal hintereinander ausführen möchtest: |
| <code python> | <code python> | ||
| Zeile 119: | 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 190: | Zeile 195: | ||
| * Ändere den Code ab, um das Bild zu verändern! | * Ändere den Code ab, um das Bild zu verändern! | ||
| - | <code python> | + | <html>< |
| # Turtle wird importiert und eine neue Turtle mit | # Turtle wird importiert und eine neue Turtle mit | ||
| # dem Namen ' | # dem Namen ' | ||
| Zeile 210: | 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. | ||
| Zeile 234: | Zeile 239: | ||
| <nodisp 1> | <nodisp 1> | ||
| ++++Lösung| | ++++Lösung| | ||
| - | + | < | |
| - | < | + | from turtle import * |
| - | </ | + | |
| + | t = Turtle() | ||
| + | t.hideturtle() | ||
| + | |||
| + | # Farbe und Stiftbreite | ||
| + | t.color("purple") | ||
| + | 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) | ||
| </ | </ | ||
| Zeile 249: | Zeile 273: | ||
| <nodisp 1> | <nodisp 1> | ||
| ++++Lösung| | ++++Lösung| | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | t = Turtle() | ||
| + | t.hideturtle() | ||
| + | |||
| + | # Hintergrund-, Füll- und Stiftfarbe | ||
| + | Screen().bgcolor("lightblue") | ||
| + | t.fillcolor("yellow") | ||
| + | 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() | ||
| + | </bottom-editor></ | ||
| ++++ | ++++ | ||
| Zeile 263: | Zeile 305: | ||
| <nodisp 1> | <nodisp 1> | ||
| ++++Lösung| | ++++Lösung| | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import* |
| - | </ | + | |
| + | t = Turtle() | ||
| + | t.hideturtle() | ||
| + | t.speed(0) | ||
| + | |||
| + | Screen().bgcolor("yellow") | ||
| + | t.color("red") | ||
| + | |||
| + | # Statt ganz vieler Zacken: Linien durchziehen... | ||
| + | t.begin_fill() | ||
| + | repeat 36: | ||
| + | t.forward(100) | ||
| + | t.right(130) | ||
| + | t.end_fill() | ||
| + | </bottom-editor></ | ||
| ++++ | ++++ | ||
| Zeile 277: | Zeile 334: | ||
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| ===== A2 ===== | ===== A2 ===== | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | fritz = Turtle() | ||
| + | |||
| + | fritz.forward(100) | ||
| + | fritz.left(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.left(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.left(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.left(90) | ||
| + | </bottom-editor></ | ||
| ===== A3 ===== | ===== A3 ===== | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | fritz = Turtle() | ||
| + | |||
| + | # Buchstabe: K | ||
| + | fritz.left(90) | ||
| + | fritz.teleport(-200, -100) | ||
| + | fritz.forward(200) | ||
| + | fritz.teleport(-200,0) | ||
| + | fritz.right(45) | ||
| + | fritz.forward(141) | ||
| + | fritz.teleport(-200,0) | ||
| + | fritz.right(90) | ||
| + | fritz.forward(141) | ||
| + | |||
| + | # Buchstabe: S | ||
| + | fritz.teleport(-50, | ||
| + | fritz.left(45) | ||
| + | fritz.forward(100) | ||
| + | fritz.left(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.left(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.right(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.right(90) | ||
| + | fritz.forward(100) | ||
| + | |||
| + | # Buchstabe: R | ||
| + | fritz.teleport(100,-100) | ||
| + | fritz.left(90) | ||
| + | fritz.forward(200) | ||
| + | fritz.right(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.right(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.right(90) | ||
| + | fritz.forward(100) | ||
| + | fritz.left(135) | ||
| + | fritz.forward(141) | ||
| + | </bottom-editor></ | ||
| ===== A4 ===== | ===== A4 ===== | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | fritz = Turtle() | ||
| + | |||
| + | repeat 4: | ||
| + | fritz.forward(100) | ||
| + | fritz.left(90) | ||
| + | </bottom-editor></ | ||
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 300: | Zeile 413: | ||
| ===== B1 ===== | ===== B1 ===== | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | matteo | ||
| + | |||
| + | repeat 2: | ||
| + | matteo.dot(20) | ||
| + | matteo.left(45) | ||
| + | matteo.forward(100) | ||
| + | matteo.dot(20) | ||
| + | matteo.right(90) | ||
| + | matteo.forward(100) | ||
| + | matteo.dot(20) | ||
| + | # Turn left only 45° as the next round | ||
| + | # will start with a left turn. | ||
| + | matteo.left(45) | ||
| + | </bottom-editor></ | ||
| ===== B2 ===== | ===== B2 ===== | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | matteo | ||
| + | matteo.left(90) | ||
| + | |||
| + | matteo.teleport(-100, 0) | ||
| + | |||
| + | matteo.circle(-100, | ||
| + | matteo.circle(-50, | ||
| + | matteo.circle(50, | ||
| + | </bottom-editor></ | ||
| ===== B3 ===== | ===== B3 ===== | ||
| - | < | + | < |
| - | </ | + | from turtle import * |
| - | </ | + | |
| + | matteo = Turtle() | ||
| + | matteo.left(90) | ||
| + | |||
| + | matteo.circle(-25, | ||
| + | matteo.circle(-50, | ||
| + | matteo.circle(-100, | ||
| + | |||
| + | matteo.teleport(0, | ||
| + | matteo.setheading(90) | ||
| + | |||
| + | matteo.circle(25, | ||
| + | matteo.circle(50, | ||
| + | matteo.circle(100, | ||
| + | </ | ||
| ===== B4 ===== | ===== B4 ===== | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | |
| + | anna = Turtle() | ||
| + | anna.hideturtle() | ||
| + | |||
| + | # 1 | ||
| + | anna.left(90) | ||
| + | anna.teleport(-350,-100) | ||
| + | |||
| + | repeat 3: | ||
| + | anna.forward(200) | ||
| + | anna.right(120) | ||
| + | |||
| + | # 2 | ||
| + | anna.teleport(-100,-50) | ||
| + | |||
| + | repeat 6: | ||
| + | anna.forward(100) | ||
| + | anna.right(60) | ||
| + | |||
| + | # 3 | ||
| + | anna.teleport(150, | ||
| + | |||
| + | repeat 2: | ||
| + | anna.forward(100) | ||
| + | anna.right(90) | ||
| + | repeat 3: | ||
| + | anna.forward(100) | ||
| + | anna.left(90) | ||
| + | </bottom-editor></ | ||
| ===== B5 ===== | ===== B5 ===== | ||
| - | < | + | < |
| - | </iframe> | + | from turtle import * |
| - | </ | + | from math import sqrt |
| + | |||
| + | josef = Turtle() | ||
| + | # | ||
| + | |||
| + | m = 200 | ||
| + | l = m*sqrt(2) | ||
| + | s = m/sqrt(2) | ||
| + | |||
| + | josef.left(135) | ||
| + | josef.forward(l) | ||
| + | repeat 2: | ||
| + | josef.right(90) | ||
| + | josef.forward(s) | ||
| + | josef.right(90) | ||
| + | josef.forward(l) | ||
| + | josef.right(135) | ||
| + | josef.forward(m) | ||
| + | repeat 3: | ||
| + | josef.right(90) | ||
| + | josef.forward(m) | ||
| + | </bottom-editor></ | ||
| ++++ | ++++ | ||
| </ | </ | ||