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:11] – [Popcorn (Optional)] gra | gf_informatik:programmieren_iii_gra [2026-01-03 14:15] (aktuell) – [Elemente in einer Liste auswählen (Selektion) und verändern (Modifikation)] 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 98: | Zeile 98: | ||
| ==== Elemente in einer Liste auswählen (Selektion) und verändern (Modifikation) ==== | ==== Elemente in einer Liste auswählen (Selektion) und verändern (Modifikation) ==== | ||
| - | Über den Index kann man auf ein **Element zugreifen**, das Element wird _ausgewählt_ oder **selektiert**. Dazu schreibt man zuerst den Namen der Liste und dann den Index in eckigen Klammern: | + | Über den Index kannst du auf ein **Element zugreifen**. Das Element wird _ausgewählt_ oder **selektiert**. Dazu schreibst du zuerst den Namen der Liste und dann den Index in eckigen Klammern: |
| <code python> | <code python> | ||
| alphabet = [' | alphabet = [' | ||
| Zeile 107: | Zeile 107: | ||
| </ | </ | ||
| - | Einer Liste kann man Elemente **hinzufügen** und **entfernen** | + | Mit den Funktionen '' |
| <code python> | <code python> | ||
| alphabet.append(' | alphabet.append(' | ||
| Zeile 115: | Zeile 115: | ||
| </ | </ | ||
| - | Die Länge einer Liste bestimmt man wie folgt: | + | Mit der Funktion '' |
| <code python> | <code python> | ||
| - | len(alphabet) # Anzahl Elemente in Liste | + | anzahl = len(alphabet) # Anzahl Elemente in Liste |
| + | print(anzahl) | ||
| </ | </ | ||
| Zeile 418: | Zeile 419: | ||
| - | === Popcorn (Optional) === | + | === Aufgabe L21 – Popcorn (optional) === |
| {{: | {{: | ||
| Zeile 461: | Zeile 462: | ||
| Obiger Code definiert erst die Frequenzen für die Töne A3 bis G5 (und P für Pause). Dann werden die Töne des Lieds [[https:// | Obiger Code definiert erst die Frequenzen für die Töne A3 bis G5 (und P für Pause). Dann werden die Töne des Lieds [[https:// | ||
| - | Schreibe ein Programm, das die Liste durchgeht und Ton für Ton der Melodie spielt. Bei einem Pausenton soll für die Dauer eines Tons nichts gespielt, also gewartet werden (mit der Funktion '' | + | **Aufgabe: |
| == 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 473: | ||
| * 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 817: | ||
| </ | </ | ||
| - | < | + | < |
| - | ++++Lösungen L16-L20| | + | ++++Lösungen L16-L22| |
| === Aufgabe L16 === | === Aufgabe L16 === | ||
| Zeile 862: | Zeile 909: | ||
| === Aufgabe L20 === | === Aufgabe L20 === | ||
| <code python> | <code python> | ||
| - | rom gturtle import * | + | from gturtle import * |
| morla = Turtle() | morla = Turtle() | ||
| Zeile 894: | Zeile 941: | ||
| 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 | ||
| </ | </ | ||