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-06-11 13:25] – gra | gf_informatik:programmieren_iv_gra [2025-09-22 12:43] (aktuell) – [5. Lösungen] gra | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Programmieren Teil 4 – Funktionen | + | ====== Programmieren Teil 4 – Funktionen ====== |
| - | * Dieses Seite ist die Fortsetzung von [[gf_informatik: | + | * Dieses Seite ist die Fortsetzung von [[gf_informatik: |
| + | * Weiter zu [[gf_informatik: | ||
| + | |||
| + | <nodisp 2> | ||
| + | ++++Verbessern (hidden): | ||
| + | * Fancy Aufgaben nach O verschieben, | ||
| + | * Insbesondere mehr Aufgaben mit Listen und | ||
| + | * 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. | ||
| + | ++++ | ||
| + | </ | ||
| ++++Lernziele: | ++++Lernziele: | ||
| Zeile 25: | Zeile 36: | ||
| ===== - Einführung ===== | ===== - Einführung ===== | ||
| Du kennst Variablen – darin kannst du einen Wert speichern. Und du kennst Listen – darin kannst du mehrere Werte speichern. Aber du hast dich villeicht schon gefragt: <color # | Du kennst Variablen – darin kannst du einen Wert speichern. Und du kennst Listen – darin kannst du mehrere Werte speichern. Aber du hast dich villeicht schon gefragt: <color # | ||
| + | |||
| + | |||
| === Auftrag 1 – Bereits bekannte Funktionen anschauen === | === Auftrag 1 – Bereits bekannte Funktionen anschauen === | ||
| In Python sind viele Funktionen schon eingebaut. Du hast ein paar davon schon oft verwendet – zum Beispiel '' | In Python sind viele Funktionen schon eingebaut. Du hast ein paar davon schon oft verwendet – zum Beispiel '' | ||
| + | |||
| <code python> | <code python> | ||
| print(" | print(" | ||
| Zeile 407: | Zeile 421: | ||
| - Die Argumente '' | - Die Argumente '' | ||
| - Das Argument '' | - Das Argument '' | ||
| - | - Die Funktion zeichnet eine zufällige Anzahl Punkte (20 px) im gewünschten Bereich. | + | - Die Funktion zeichnet eine zufällige Anzahl Punkte (20 px) im gewünschten Bereich. |
| - | - Die Position | + | - Für jedem Punkt wird eine zufällige Farbe aus der Farbliste gewählt. |
| + | - Die Position | ||
| - **Die Funktion gibt zurück, wie viele Punkte sie gezeichnet hat.** | - **Die Funktion gibt zurück, wie viele Punkte sie gezeichnet hat.** | ||
| - Schreibe ein Programm, das die Funktion '' | - Schreibe ein Programm, das die Funktion '' | ||
| Zeile 520: | Zeile 535: | ||
| print(b) # Gibt ' | print(b) # Gibt ' | ||
| </ | </ | ||
| + | |||
| </ | </ | ||
| </ | </ | ||
| + | Die Funktion '' | ||
| Zeile 529: | Zeile 546: | ||
| Schreibe eine Funktion '' | Schreibe eine Funktion '' | ||
| * Zum Beispiel soll der Aufruf '' | * Zum Beispiel soll der Aufruf '' | ||
| - | * **Verwende eine While-Schleife**, | + | * **Verwende eine While-Schleife**, |
| * Hinweis: Python böte mit der [[https:// | * Hinweis: Python böte mit der [[https:// | ||
| * Teste deine Funktion. | * Teste deine Funktion. | ||
| Zeile 618: | 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 977: | Zeile 945: | ||
| </ | </ | ||
| - | < | + | < |
| ++++Lösungen zu Aufgaben NC:| | ++++Lösungen zu Aufgaben NC:| | ||
| Zeile 1326: | 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) | ||
| - | </ | ||
| ++++ | ++++ | ||
| </ | </ | ||