Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

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)] gragf_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:programmieren_ii_gra|]]. 
-Dieses Seite ist die Fortsetzung von [[gf_informatik:programmieren_ii_gra|]]. +  * Weiter zu [[gf_informatik:programmieren_iv_gra|]].
  
 ++++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 //tipps// ausgegeben.  
-  - Danach wird eine Liste aus sechs zufälligen Zahlen im Bereich 1...20 erstellt uns ausgegeben.  +  - Danach wird eine Liste namens //zufallszahlen// aus sechs zufälligen Zahlen im Bereich 1...20 erstellt uns ausgegeben. 
-  - Dann wird gezählt, wie viele der Tipps in der Liste vorkommen. +  - Dann wird gezählt, wie viele der Tipps (in //tipps//in der Liste //zufallszahlen// vorkommen. 
   - 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 ''setFillColor'', ''startPath'' und ''fillPath''. Tipp: Verwende die Funktoinen ''setFillColor'', ''startPath'' und ''fillPath''.
  
-=== Aufgabe L20 – Pixel (Optional) ===+=== Aufgabe L20 – Pixel-Matrix (optional) ===
 Schreibe ein Programm, dass mittels folgender zweidimensionalen Liste untenstehendes Bild malt. Verwende für die Punkte die Farben "red" und "gainsboro". Schreibe ein Programm, dass mittels folgender zweidimensionalen Liste untenstehendes Bild malt. Verwende für die Punkte die Farben "red" und "gainsboro".
  
Zeile 414: Zeile 414:
  
 == Zusatzaufgaben == == Zusatzaufgaben ==
-  * Erstelle zusätzliche Bilder, [[https://xantorohara.github.io/led-matrix-editor/#|hier]] kannst du bestehende abrufen, neue erstellen und jeweils die Binär-Codes dazu abrufen. +  * Erstelle zusätzliche Bilder, [[https://xantorohara.github.io/led-matrix-editor/#|hier]] kannst du bestehende laden, neue erstellen und jeweils die Binär-Codes dazu abrufen. 
   * Erstelle Animationen aus mehreren Bildern.   * Erstelle Animationen aus mehreren Bildern.
  
 +
 +=== Aufgabe L21 – Popcorn (optional) ===
 +{{:gf_informatik:programmieren_iii_gra:pasted:20250331-211019.png?300}}
 +
 +Mit der Turtle-Funktion ''playTone'' kannst du einen Ton von bestimmter Frequenz für eine bestimmte Dauer spielen ein Instrument wählen. Beispiel:
 +<code python>
 +playTone(440, 300, instrument = "guitar")
 +</code>
 +Hier wird der Ton A4 (440 Hz) für 300 Millisekunden mit dem Klang einer Gitarre gespielt. Weitere Infos zur Funktion [[https://www.python-online.ch/index.php?inhalt_links=turtle/navigation.inc.php&inhalt_mitte=turtle/turtledoc.html#|hier]]. 
 +
 +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 
 +]
 +</code>
 +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://youtu.be/Yx0KBLFG8qc?si=npQqnemJkc1lV2Fj|Pop Corn von Gershon Kingsley]] in einer Liste gespeichert. **Beachte:** P steht für Pause. Hier soll für die Dauer eines Tones kein Ton gespielt werden.
 +
 +**Aufgabe:** 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 ''delay()'').
 +
 +== 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//:
 +
 +{{:gf_informatik:programmieren_iii_gra:pasted:20250401-070509.png?400}}
 +
 +Schreibe ein Programm, das die Melodie von Bruder Jakob korrekt spielt. 
 +  * Erstelle erst die Liste der Töne (ausgehnd von den Noten). [[https://mixbutton.com/music-tools/frequency-and-pitch/music-note-to-frequency-chart|Hier die Zuordnung zu den Frequenzen]]. 
 +  * Erstelle dann eine zweite Liste für die Tondauern: Für jeden Ton der ersten Liste speichert diese Liste die entsprechende Dauer (Viertelton, Halbton, ganzer Ton).
 +  * In der while-Schleife kannst du dann beide Listen gleichzeitig durchgehen. 
 ===== Lösungen ===== ===== Lösungen =====
  
 **Achtung:** Meist gibt es mehrere Lösungen. Nur weil deine Lösung anders ist als diejenige in den Musterlösungen unten, bedeutet dies nicht, dass deine nicht richtig/gut ist. Sende oder zeige im Zweifelsfall deine Lösung der Lehrperson. **Achtung:** Meist gibt es mehrere Lösungen. Nur weil deine Lösung anders ist als diejenige in den Musterlösungen unten, bedeutet dies nicht, dass deine nicht richtig/gut ist. Sende oder zeige im Zweifelsfall deine Lösung der Lehrperson.
  
-<nodisp 2>+<nodisp 1>
  
 ++++Lösungen L1-L5| ++++Lösungen L1-L5|
Zeile 714: Zeile 769:
 ++++ ++++
  
-++++Lösungen L16-L20|+</nodisp> 
 +<nodisp 2> 
 +++++Lösungen L16-L21|
  
 === Aufgabe L16 === === Aufgabe L16 ===
Zeile 803: Zeile 860:
 </code> </code>
  
 +=== Aufgabe L20 ===
 +<code python>
 +from gturtle import * 
 +morla = Turtle()
 +
 +morla.right(90)
 +morla.penUp()
 +#morla.hideTurtle()
 +
 +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, ypos)
 +    column = 0
 +    while column < 8:
 +        if pixels[row][column]:
 +            morla.setPenColor("red")
 +        else:
 +            morla.setPenColor("gainsboro")
 +        morla.dot(20)
 +        morla.forward(30)
 +        column = column + 1
 +    ypos = ypos - 30
 +    row = row + 1
 +</code>
 +
 +=== 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], dauer, instrument = "guitar")
 +    i = i + 1
 +</code>
 ++++ ++++
  
 </nodisp> </nodisp>
  • gf_informatik/programmieren_iii_gra.1742296474.txt.gz
  • Zuletzt geändert: 2025-03-18 11:14
  • von gra