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-03-18 11:14] – [Aufgabe L20 – Pixel (Optional)] gra | gf_informatik:programmieren_iii_gra [2025-04-19 08:28] (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 375: | Zeile 375: | ||
Schreibe ein Programm, das wie folgt funktioniert: | Schreibe ein Programm, das wie folgt funktioniert: | ||
- | - Die Benutzer:in soll nacheinander drei Tipps (Zahlen zwischen 1 und 20) eingeben. Diese speicherst du in einer Liste mit drei Elementen. | + | - Die Benutzer:in soll nacheinander drei Tipps (Zahlen zwischen 1 und 20) eingeben. Diese speicherst du in einer Liste namens //tipps// (mit drei Elementen). |
- | - Sobald alle drei Zahlen eingegeben sind, wird die Liste mit den Tipps ausgegeben. | + | - Sobald alle drei Zahlen eingegeben sind, wird die Liste // |
- | - Danach wird eine Liste aus sechs zufälligen Zahlen im Bereich 1...20 erstellt uns ausgegeben. | + | - Danach wird eine Liste namens // |
- | - Dann wird gezählt, wie viele der Tipps in der Liste vorkommen. | + | - Dann wird gezählt, wie viele der Tipps (in // |
- Abhängig vom Resultat wird eine der folgenden Meldungen ausgegeben: | - Abhängig vom Resultat wird eine der folgenden Meldungen ausgegeben: | ||
* "Kein Treffer. Danke, Merci, Grazie." | * "Kein Treffer. Danke, Merci, Grazie." | ||
Zeile 386: | Zeile 386: | ||
- | === Aufgabe L19 – Regenbogen (Optional) === | + | === Aufgabe L19 – Regenbogen (optional) === |
Dein Programm soll mit folgender Liste und mit einer while-Schleife einen Regenbogen wie im Bild unten zeichnen: | Dein Programm soll mit folgender Liste und mit einer while-Schleife einen Regenbogen wie im Bild unten zeichnen: | ||
Zeile 397: | Zeile 397: | ||
Tipp: Verwende die Funktoinen '' | Tipp: Verwende die Funktoinen '' | ||
- | === Aufgabe L20 – Pixel (Optional) === | + | === Aufgabe L20 – Pixel-Matrix |
Schreibe ein Programm, dass mittels folgender zweidimensionalen Liste untenstehendes Bild malt. Verwende für die Punkte die Farben " | Schreibe ein Programm, dass mittels folgender zweidimensionalen Liste untenstehendes Bild malt. Verwende für die Punkte die Farben " | ||
Zeile 414: | Zeile 414: | ||
== Zusatzaufgaben == | == Zusatzaufgaben == | ||
- | * Erstelle zusätzliche Bilder, [[https:// | + | * Erstelle zusätzliche Bilder, [[https:// |
* Erstelle Animationen aus mehreren Bildern. | * Erstelle Animationen aus mehreren Bildern. | ||
+ | |||
+ | === Aufgabe L21 – Popcorn (optional) === | ||
+ | {{: | ||
+ | |||
+ | Mit der Turtle-Funktion '' | ||
+ | <code python> | ||
+ | playTone(440, | ||
+ | </ | ||
+ | Hier wird der Ton A4 (440 Hz) für 300 Millisekunden mit dem Klang einer Gitarre gespielt. Weitere Infos zur Funktion [[https:// | ||
+ | |||
+ | Mit Listen können wir Melodien erstellen: Wir können alle Töne in einer Melodie in einer Liste speichern. | ||
+ | <code python> | ||
+ | # 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 | ||
+ | ] | ||
+ | </ | ||
+ | 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:// | ||
+ | |||
+ | **Aufgabe: | ||
+ | |||
+ | == 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 das Lied //Bruder Jakob//: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Schreibe ein Programm, das die Melodie von Bruder Jakob korrekt spielt. | ||
+ | * Erstelle erst die Liste der Töne (ausgehnd von den Noten). [[https:// | ||
+ | * 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. | ||
===== Lösungen ===== | ===== Lösungen ===== | ||
**Achtung: | **Achtung: | ||
- | < | + | < |
++++Lösungen L1-L5| | ++++Lösungen L1-L5| | ||
Zeile 714: | Zeile 769: | ||
++++ | ++++ | ||
- | ++++Lösungen L16-L20| | + | </ |
+ | <nodisp 2> | ||
+ | ++++Lösungen L16-L21| | ||
=== Aufgabe L16 === | === Aufgabe L16 === | ||
Zeile 803: | Zeile 860: | ||
</ | </ | ||
+ | === Aufgabe L20 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | morla = Turtle() | ||
+ | |||
+ | morla.right(90) | ||
+ | morla.penUp() | ||
+ | # | ||
+ | |||
+ | pixels = [[0, 0, 1, 1, 1, 1, 0, 0], | ||
+ | [0, 1, 0, 0, 0, 0, 1, 0], | ||
+ | [1, 0, 1, 0, 0, 1, 0, 1], | ||
+ | [1, 0, 0, 0, 0, 0, 0, 1], | ||
+ | [1, 0, 1, 0, 0, 1, 0, 1], | ||
+ | [1, 0, 0, 1, 1, 0, 0, 1], | ||
+ | [0, 1, 0, 0, 0, 0, 1, 0], | ||
+ | [0, 0, 1, 1, 1, 1, 0, 0]] | ||
+ | |||
+ | row = 0 | ||
+ | xpos = 0 | ||
+ | ypos = 0 | ||
+ | |||
+ | while row < 8: | ||
+ | morla.setPos(xpos, | ||
+ | column = 0 | ||
+ | while column < 8: | ||
+ | if pixels[row][column]: | ||
+ | morla.setPenColor(" | ||
+ | else: | ||
+ | morla.setPenColor(" | ||
+ | morla.dot(20) | ||
+ | morla.forward(30) | ||
+ | column = column + 1 | ||
+ | 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 | ||
+ | </ | ||
++++ | ++++ | ||
</ | </ |