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_iii_gra [2025-04-01 07:13] – [Popcorn (Optional)] gra | gf_informatik:programmieren_iii_gra [2025-06-05 07:21] (aktuell) – [Programmieren Teil 3 – Listen (mit der while-Schleife)] gra | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Programmieren Teil 3 – Listen (mit der while-Schleife) ====== | ====== Programmieren Teil 3 – Listen (mit der while-Schleife) ====== | ||
| - | + | * Dieses Seite ist die Fortsetzung von [[gf_informatik: | |
| - | Dieses Seite ist die Fortsetzung von [[gf_informatik: | + | * Weiter zu [[gf_informatik: |
| ++++Lernziele: | ++++Lernziele: | ||
| Zeile 13: | Zeile 13: | ||
| * Ich kann Listen anaylsieren (z.B. Mittelwert oder Höchstwert ermitteln) oder verändern (z.B. Duplikate entfernen etc). | * Ich kann Listen anaylsieren (z.B. Mittelwert oder Höchstwert ermitteln) oder verändern (z.B. Duplikate entfernen etc). | ||
| * Ich kann das Modul '' | * Ich kann das Modul '' | ||
| - | * Ich kann bestimmte Elemente | + | * Ich kann mit '' |
| * Ich kann bestimmte Elemente in einer Liste zählen. | * Ich kann bestimmte Elemente in einer Liste zählen. | ||
| Zeile 418: | Zeile 418: | ||
| - | === Popcorn (Optional) === | + | === Aufgabe L21 – Popcorn (optional) === |
| {{: | {{: | ||
| Zeile 464: | Zeile 464: | ||
| == Zusatzaufgabe 1 – Bruder Jakob == | == Zusatzaufgabe 1 – Bruder Jakob == | ||
| - | Die Popcorn-Melodie ist einfach mit Blick auf die Rhythmus: Alle Töne sind gleich lang. Bei den meisten Liedern ist das nicht so. Zu m Beispiel | + | Die Popcorn-Melodie ist einfach mit Blick auf die Rhythmus: Alle Töne sind gleich lang. Bei den meisten Liedern ist das nicht so. Zum Beispiel |
| {{: | {{: | ||
| Zeile 472: | Zeile 472: | ||
| * Erstelle dann eine zweite Liste für die Tondauern: Für jeden Ton der ersten Liste speichert diese Liste die entsprechende Dauer (Viertelton, | * Erstelle dann eine zweite Liste für die Tondauern: Für jeden Ton der ersten Liste speichert diese Liste die entsprechende Dauer (Viertelton, | ||
| * In der while-Schleife kannst du dann beide Listen gleichzeitig durchgehen. | * In der while-Schleife kannst du dann beide Listen gleichzeitig durchgehen. | ||
| + | |||
| + | === Aufgabe L22 – Pixel-Art (für Fortgeschrittene) === | ||
| + | {{: | ||
| + | |||
| + | Für diese Aufgabe benötigst du [[gf_informatik: | ||
| + | |||
| + | Gehe von Aufgabe L20 aus und verändere sie wie folgt: | ||
| + | * Zeichne Quadrate statt kreisförmige Punkte. Erstelle hierzu eine Funktion '' | ||
| + | * Die zweidimensionale Liste für ein Bild ist nun mehrfarbig: Die Zahlen 0 bis 3 stehen für Positionen in der Farbliste '' | ||
| + | * Du kannst die [[https:// | ||
| + | |||
| + | <WRAP group> | ||
| + | <WRAP column half> | ||
| + | Folgende Listen... | ||
| + | <code python> | ||
| + | # 4 Farben: 1 für Hintgergrund, | ||
| + | colors = ("# | ||
| + | |||
| + | # Pixel-Liste: | ||
| + | pixels = [[0, 0, 0, 1, 1, 0, 0, 0], | ||
| + | [0, 0, 1, 1, 1, 1, 0, 0], | ||
| + | [0, 1, 1, 1, 1, 1, 1, 0], | ||
| + | [0, 1, 0, 1, 1, 0, 1, 0], | ||
| + | [0, 2, 2, 2, 2, 2, 2, 0], | ||
| + | [0, 0, 2, 0, 0, 2, 0, 0], | ||
| + | [0, 3, 0, 3, 3, 0, 3, 0], | ||
| + | [3, 0, 3, 0, 0, 3, 0, 3]] | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP column half> | ||
| + | ...entsprechen diesem Bild: | ||
| + | |||
| + | {{: | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | == Aufgabe == | ||
| + | |||
| + | - Wähle ein Bild aus dieser {{ : | ||
| + | - Passe die Farbliste und die Pixel-Liste so an, dass sie deinem Bild entsprechen. | ||
| + | - Passe deinen Code an, sodass die Turtle das gewünschte Bild zeichnet. | ||
| + | |||
| + | == Zusatzaufgabe == | ||
| + | Erweitere deine Pixelliste um eine weitere Dimension: Die Liste enthält mehrere Bilder, die nacheinander angezeigt werden, sodass eine Animation entsteht. Tipp: Starte mit bloss zwei Bildern. Verändere im zweiten Bild nur einzelne Punkte und beobachte den Effekt. | ||
| + | |||
| ===== Lösungen ===== | ===== Lösungen ===== | ||
| Zeile 770: | Zeile 816: | ||
| </ | </ | ||
| - | < | + | < |
| - | ++++Lösungen L16-L20| | + | ++++Lösungen L16-L22| |
| === Aufgabe L16 === | === Aufgabe L16 === | ||
| Zeile 862: | Zeile 908: | ||
| === Aufgabe L20 === | === Aufgabe L20 === | ||
| <code python> | <code python> | ||
| - | rom gturtle import * | + | from gturtle import * |
| morla = Turtle() | morla = Turtle() | ||
| Zeile 894: | Zeile 940: | ||
| column = column + 1 | column = column + 1 | ||
| ypos = ypos - 30 | ypos = ypos - 30 | ||
| + | row = row + 1 | ||
| + | </ | ||
| + | |||
| + | === Aufgabe L21 === | ||
| + | <code python> | ||
| + | from gturtle import * | ||
| + | |||
| + | # Frequenzen der Noten von A3 bis G5 | ||
| + | A3 = 220 | ||
| + | B3 = 247 | ||
| + | C4 = 262 | ||
| + | D4 = 294 | ||
| + | E4 = 330 | ||
| + | F4 = 349 | ||
| + | G4 = 392 | ||
| + | A4 = 440 | ||
| + | B4 = 494 | ||
| + | C5 = 523 | ||
| + | D5 = 587 | ||
| + | E5 = 659 | ||
| + | F5 = 698 | ||
| + | F5s = 740 | ||
| + | G5 = 784 | ||
| + | P = 0 | ||
| + | |||
| + | popcorn = [ | ||
| + | A4, G4, A4, E4, C4, E4, A3, P, | ||
| + | A4, G4, A4, E4, C4, E4, A3, P, | ||
| + | A4, B4, C5, B4, C5, A4, B4, A4, B4, G4, A4, G4, A4, F4, A4, P, | ||
| + | A4, G4, A4, E4, C4, E4, A3, P, | ||
| + | A4, G4, A4, E4, C4, E4, A3, P, | ||
| + | A4, B4, C5, B4, C5, A4, B4, A4, B4, G4, A4, G4, A4, B4, C5, P, | ||
| + | E5, D5, E5, C5, G4, C5, E4, P, | ||
| + | E5, D5, E5, C5, G4, C5, E4, P, | ||
| + | E5, F5s, G5, F5s, G5, E5, F5s, E5, F5s, D5, E5, D5, E5, C5, E5, P | ||
| + | ] | ||
| + | |||
| + | dauer = 200 | ||
| + | i = 0 | ||
| + | |||
| + | while i < len(popcorn): | ||
| + | if popcorn[i] == 0: | ||
| + | delay(dauer) | ||
| + | else: | ||
| + | playTone(popcorn[i], | ||
| + | i = i + 1 | ||
| + | </ | ||
| + | |||
| + | === Aufgabe L22 === | ||
| + | <code python> | ||
| + | from gturtle import * | ||
| + | morla = Turtle() | ||
| + | |||
| + | morla.right(90) | ||
| + | morla.penUp() | ||
| + | morla.hideTurtle() | ||
| + | |||
| + | # 4 Farben: 1 für Hintgergrund, | ||
| + | colors = ("# | ||
| + | |||
| + | # Pixel-Liste: | ||
| + | pixels = [[0, 0, 0, 1, 1, 0, 0, 0], | ||
| + | [0, 0, 1, 1, 1, 1, 0, 0], | ||
| + | [0, 1, 1, 1, 1, 1, 1, 0], | ||
| + | [0, 1, 0, 1, 1, 0, 1, 0], | ||
| + | [0, 2, 2, 2, 2, 2, 2, 0], | ||
| + | [0, 0, 2, 0, 0, 2, 0, 0], | ||
| + | [0, 3, 0, 3, 3, 0, 3, 0], | ||
| + | [3, 0, 3, 0, 0, 3, 0, 3]] | ||
| + | |||
| + | # Ein Quadrat mit gewünschter Farbe zeichnen: | ||
| + | def square(color, | ||
| + | morla.setFillColor(color) | ||
| + | morla.startPath() | ||
| + | count = 0 | ||
| + | while count < 4: | ||
| + | morla.forward(side) | ||
| + | morla.right(90) | ||
| + | count += 1 | ||
| + | morla.fillPath() | ||
| + | |||
| + | # Pixel für Pixel gemäss Liste zeichnen: | ||
| + | px_size = 20 | ||
| + | row = 0 | ||
| + | xpos = 0 | ||
| + | ypos = 0 | ||
| + | while row < 8: | ||
| + | morla.setPos(xpos, | ||
| + | column = 0 | ||
| + | while column < 8: | ||
| + | square(colors[pixels[row][column]], | ||
| + | morla.forward(px_size) | ||
| + | column = column + 1 | ||
| + | ypos = ypos - px_size | ||
| row = row + 1 | row = row + 1 | ||
| </ | </ | ||