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_iv_gra [2025-06-17 10:02] – [NC4 – Text rückwärts] gragf_informatik:programmieren_iv_gra [2025-09-22 12:43] (aktuell) – [5. Lösungen] gra
Zeile 1: Zeile 1:
-====== Programmieren Teil 4 – Funktionen (Unterprogramme) ====== +====== Programmieren Teil 4 – Funktionen ====== 
-  * Dieses Seite ist die Fortsetzung von [[gf_informatik:programmieren_iii_gra|]]. +  * Dieses Seite ist die Fortsetzung von [[gf_informatik:programmieren_iii_gra|]]. 
 +  * Weiter zu [[gf_informatik:programmieren_v_gra|]]. 
 + 
 +<nodisp 2> 
 +++++Verbessern (hidden):
 +  * Fancy Aufgaben nach O verschieben, dafür mehr einfache, kleine Aufgaben zum Üben.  
 +    * 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,l,b)) Argumente (in Klammern nach Name) ist Eingaben. Gesamter Name inkl Klammern = Ausgabe(n). 
 +  * Evtl. Lernziele bezüglich Verknüpfungen von Bedingungen präzisieren.  
 +++++ 
 +</nodisp>
  
 ++++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 #0433ff>"Was, wenn ich gleich mehrere Codezeilen irgendwo unterbringen will?"</color>. Für diese Idee gibt es **Funktionen**, die wir auch **Unterprogramme** nennen können. 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 #0433ff>"Was, wenn ich gleich mehrere Codezeilen irgendwo unterbringen will?"</color>. Für diese Idee gibt es **Funktionen**, die wir auch **Unterprogramme** nennen können.
 +
 +
 === 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 ''print'', ''input'' und ''len'': In Python sind viele Funktionen schon eingebaut. Du hast ein paar davon schon oft verwendet – zum Beispiel ''print'', ''input'' und ''len'':
 +
 <code python> <code python>
 print("Hallo") print("Hallo")
Zeile 621: Zeile 635:
  
  
-=== O4 – Siebensegment-Anzeige === 
-<WRAP group> 
-<WRAP column twothirds> 
-Die [[https://en.wikipedia.org/wiki/Seven-segment_display|Siebensegmentanzeige]] ist grossartig: Man benötigt nur 7 längliche Lämpchen und kann damit nicht nur die Ziffern 0 bis 9, sondern auch viele Buchstaben anzeigen! In dieser Aufgabe soll deine Turtle als Siebensegmentanzeige funktionieren. 
- 
-{{:gf_informatik:programmieren_iv_gra:pasted:20250522-080927.png?600}} 
-</WRAP> 
-<WRAP column third> 
-{{:gf_informatik:programmieren_iv_gra:pasted:20250521-190507.png?200}} 
-</WRAP> 
-</WRAP> 
- 
-<WRAP group> 
-<WRAP column twothirds> 
-== Schritt 1 – Einzelnes Segment zeichnen == 
-Erstelle eine Funktion ''segment(length, color)''. Die Funktion zeichnet ein einzelnes Segment, das auf beiden Seiten spitz ausläuft – siehe Bild. 
-  * Das Argument ''length'' gibt die Länge des Segments von Spitz zu Spitz an. Damit genau diese Länge zustande kommt, musst du etwas rechnen. Eventuell brauchst du die Funktion ''sqrt'' und hierzu das Math-Modul (''import math''). 
-  * Das Argument ''color'' gibt die Farbe des Segments an. 
-  * Starte bei der einen Spitze und gehe davon aus, dass die Turtle in Richtung der anderen Spitze schaut, siehe Bild. 
-</WRAP> 
-<WRAP column third> 
-{{:gf_informatik:programmieren_iv_gra:pasted:20250521-191805.png?200}} 
-</WRAP> 
-</WRAP> 
- 
-<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  ^  A  ^  B  ^  C  ^  D  ^  E  ^  F  ^  G  ^  Binär-String   ^ 
-|  0        1  |  1  |  1  |  1  |  1  |  1  |  0  |  ''"1111110"''  | 
-|  4        0  |  1  |  1  |  0  |  0  |  1  |  1  |  ''"0110011"''  | 
- 
-  * Erstelle eine Liste ''binary\_strings[]'', die für jede Ziffer 0...9 den richtigen Binär-String enthält. 
- 
-== Schritt 3 – Zahl mit 7 Segmenten anzeigen == 
-Erstelle eine Funktion ''seven\_seg(number)''. Die Funktion zeichnet die 7 Segmente A bis G an den richtigen Positionen und in richtiger Farbe: 
-  * Verwende die bereits erstellte Funktion ''segment''. 
-  * Speichere für jedes Segment die x-Positionen, die y-Positionen und die Richtungen (heading) in Listen. 
-  * Das Argument number gibt an, welche Ziffer dargestellt werden soll. Verwende deine Liste ''binary\_strings[]'', um für jedes Segment zu entscheiden, ob es rot oder grau "gainsboro" sein soll. 
-  * Teste deine Funktion mit einem Programm, dass die Zahlen von 0 bis 9 im Sekundentakt (''delay(1000)'') hochzählt. 
-</WRAP> 
-<WRAP column third> 
-{{:gf_informatik:programmieren_iv_gra:pasted:20250521-191333.png?200}} 
-</WRAP> 
-</WRAP> 
  
-== 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 980: Zeile 945:
 </nodisp> </nodisp>
  
-<nodisp 2>+<nodisp 1>
 ++++Lösungen zu Aufgaben NC:| ++++Lösungen zu Aufgaben NC:|
  
Zeile 1329: Zeile 1294:
 </code> </code>
  
-=== O4 === 
-<code python> 
-import math 
-from gturtle import *  
- 
-carl = Turtle() 
-carl.hideTurtle() 
- 
-def segment(length, color): 
-    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 = ['1111110', # 0 
-                     '0110000',  
-                     '1101101',  
-                     '1111001',  
-                     '0110011',  
-                     '1011011',  
-                     '1011111',  
-                     '1110000',  
-                     '1111111',  
-                     '1111011'] # 9 
- 
-    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], ypositions[i]) 
-        carl.setHeading(headings[i]) 
-        if s == '0': 
-            segment(100, "gainsboro") 
-        else: 
-            segment(100, "red") 
-        i = i + 1 
- 
-i = 0 
-while i <= 9: 
-    seven_seg(i) 
-    i = i + 1 
-    delay(1000) 
-</code> 
 ++++ ++++
 </nodisp> </nodisp>
  • gf_informatik/programmieren_iv_gra.1750154559.txt.gz
  • Zuletzt geändert: 2025-06-17 10:02
  • von gra