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_iv_gra [2025-07-28 13:20] – [Programmieren Teil 4 – Funktionen (Unterprogramme)] gra | gf_informatik:programmieren_iv_gra [2025-09-22 12:43] (aktuell) – [5. Lösungen] gra | ||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
* Insbesondere mehr Aufgaben mit Listen und | * Insbesondere mehr Aufgaben mit Listen und | ||
* Verknüpfungen von Bedingungen mit logischen Operatoren | * Verknüpfungen von Bedingungen mit logischen Operatoren | ||
+ | * Evtl. Grafik o.ä. zu einer Zeile mit Aufruf einer Funktion mit Rückgabewert – z.B. print(volumen(h, | ||
* Evtl. Lernziele bezüglich Verknüpfungen von Bedingungen präzisieren. | * Evtl. Lernziele bezüglich Verknüpfungen von Bedingungen präzisieren. | ||
++++ | ++++ | ||
Zeile 634: | Zeile 635: | ||
- | === O4 – Siebensegment-Anzeige === | ||
- | <WRAP group> | ||
- | <WRAP column twothirds> | ||
- | Die [[https:// | ||
- | |||
- | {{: | ||
- | </ | ||
- | <WRAP column third> | ||
- | {{: | ||
- | </ | ||
- | </ | ||
- | |||
- | <WRAP group> | ||
- | <WRAP column twothirds> | ||
- | == Schritt 1 – Einzelnes Segment zeichnen == | ||
- | Erstelle eine Funktion '' | ||
- | * Das Argument '' | ||
- | * Das Argument '' | ||
- | * Starte bei der einen Spitze und gehe davon aus, dass die Turtle in Richtung der anderen Spitze schaut, siehe Bild. | ||
- | </ | ||
- | <WRAP column third> | ||
- | {{: | ||
- | </ | ||
- | </ | ||
- | |||
- | <WRAP group> | ||
- | <WRAP column twothirds> | ||
- | == Schritt 2 – Codes definieren == | ||
- | Im Bild rechts sind die 7 Segmente mit den Buchstaben A bis G bezeichnet. Den Dezimalpunkt lassen wir ausser Acht. Für die Ziffern **0** und **4** müssten die Segmente gemäss folgender Tabelle leuchten: | ||
- | ^ Ziffer | ||
- | | 0 | ||
- | | 4 | ||
- | |||
- | * Erstelle eine Liste '' | ||
- | |||
- | == Schritt 3 – Zahl mit 7 Segmenten anzeigen == | ||
- | Erstelle eine Funktion '' | ||
- | * Verwende die bereits erstellte Funktion '' | ||
- | * Speichere für jedes Segment die x-Positionen, | ||
- | * Das Argument number gibt an, welche Ziffer dargestellt werden soll. Verwende deine Liste '' | ||
- | * Teste deine Funktion mit einem Programm, dass die Zahlen von 0 bis 9 im Sekundentakt ('' | ||
- | </ | ||
- | <WRAP column third> | ||
- | {{: | ||
- | </ | ||
- | </ | ||
- | == Zusatzaufgaben == | ||
- | * Programmiere eine zweistellige Anzeige, die von 0 bis 99 zählen kann. | ||
- | * Programmiere eine digitale Uhr, die die aktuelle Zeit in Stunden, Minuten und Sekunden (von Doppelpunkten getrennt) anzeigt. | ||
===== - Lösungen ===== | ===== - Lösungen ===== | ||
Zeile 1342: | Zeile 1294: | ||
</ | </ | ||
- | === O4 === | ||
- | <code python> | ||
- | import math | ||
- | from gturtle import * | ||
- | |||
- | carl = Turtle() | ||
- | carl.hideTurtle() | ||
- | |||
- | def segment(length, | ||
- | l1 = length * 0.8 | ||
- | l2 = (length - l1)/2 | ||
- | side = l2 * math.sqrt(2) | ||
- | carl.setFillColor(color) | ||
- | carl.startPath() | ||
- | carl.right(45) | ||
- | repeat 2: | ||
- | carl.forward(side) | ||
- | carl.left(45) | ||
- | carl.forward(l1) | ||
- | carl.left(45) | ||
- | carl.forward(side) | ||
- | carl.left(90) | ||
- | carl.fillPath() | ||
- | carl.left(45) | ||
- | |||
- | def seven_seg(number): | ||
- | segment_codes = [' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | |||
- | xpositions = [0, 100, 100, 100, 0, 0, 0] | ||
- | ypositions = [0, 0, -100, -200, -200, -100, -100] | ||
- | headings = [90, 180, 180, 270, 0, 0, 90] | ||
- | | ||
- | i = 0 | ||
- | for s in segment_codes[number]: | ||
- | carl.setPos(xpositions[i], | ||
- | carl.setHeading(headings[i]) | ||
- | if s == ' | ||
- | segment(100, | ||
- | else: | ||
- | segment(100, | ||
- | i = i + 1 | ||
- | |||
- | i = 0 | ||
- | while i <= 9: | ||
- | seven_seg(i) | ||
- | i = i + 1 | ||
- | delay(1000) | ||
- | </ | ||
++++ | ++++ | ||
</ | </ |