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_ii_sca [2025-05-21 20:20] scagf_informatik:programmieren_ii_sca [2025-05-27 09:15] (aktuell) – [Kapitel V: Modern Art] sca
Zeile 1537: Zeile 1537:
 </code></WRAP> </code></WRAP>
  
-==== - Aufgaben C (Funktionen) ====+++++Lösung Modern Art mit Quadraten und Dreiecken|
  
-=== Aufgabe ===+<code python> 
 +from gturtle import * 
 +import random
  
-Definiere eine Funktion mit einem Argument `volume_cube(x)`, die das Volumen eines Würfels mit Seitenlänge $x$ (in cm) berechnet und zurückgibt (also NICHT printed). Speichere das Resultat in einer Variablen und gebe es dann aus.+turi = Turtle() 
 +turi.hideTurtle() 
 + 
 +colors = ['red','blue','green','yellow','purple','black'
 +#                1      2        3             5 
 + 
 +def dreieck(x,y): 
 +    r_width = random.randint(3,7) 
 +    turi.setPenWidth(r_width) 
 +     
 +    r_pen_col = random.randint(0,len(colors)-1) 
 +    turi.setPenColor(colors[r_pen_col]) 
 +     
 +    r_fill_col = random.randint(0,len(colors)-1) 
 +    turi.setFillColor(colors[r_fill_col]) 
 +     
 +    r_side = random.randint(40,150) 
 +     
 +    turi.setPos(x,y) 
 +    turi.startPath() 
 +    for i in range(3): 
 +        turi.forward(r_side) 
 +        turi.left(120) 
 +     
 +    turi.fillPath() 
 + 
 + 
 +def quadrat(x,y): 
 +    r_width = random.randint(10,30) 
 +    turi.setPenWidth(r_width) 
 +     
 +    r_pen_col = random.randint(0,len(colors)-1) 
 +    turi.setPenColor(colors[r_pen_col]) 
 +     
 +    r_fill_col = random.randint(0,len(colors)-1) 
 +    turi.setFillColor(colors[r_fill_col]) 
 +     
 +    r_side = random.randint(20,150) 
 +     
 +    turi.setPos(x,y) 
 +    turi.startPath() 
 +    for i in range(4): 
 +        turi.forward(r_side) 
 +        turi.left(90) 
 +     
 +    turi.fillPath() 
 + 
 +r_anz_figs = random.randint(30,40) 
 + 
 +for i in range(r_anz_figs): 
 +    x_rand = random.randint(-300,300) 
 +    y_rand = random.randint(-200,200) 
 + 
 +    r_figur = random.randint(0,1) 
 +    if r_figur == 0: 
 +        quadrat(x_rand,y_rand) 
 +    else: 
 +        dreieck(x_rand,y_rand) 
 +</code> 
 + 
 +++++ 
 + 
 +==== - Aufgaben (Funktionen) ==== 
 + 
 +=== Aufgabe Würfelvolumen === 
 + 
 +Definiere eine Funktion mit einem Argument `volume_cube(x)`, die das Volumen eines Würfels mit Seitenlänge $x$ (in cm) berechnet und zurückgibt (also NICHT printed). Speichere das Resultat in einer Variablen und gib es dann aus.
  
 Welches Volumen hat ein Würfel mit Seitenlänge 13 cm? Welches Volumen hat ein Würfel mit Seitenlänge 13 cm?
  
-=== Aufgabe ===+++++Lösung| 
 + 
 +<code python> 
 +def volume_cube(x): 
 +    return x**3 
 + 
 +vol = volume_cube(13) 
 +print(vol) 
 +</code> 
 + 
 +++++ 
 + 
 +=== Aufgabe Kugelvolumen ===
  
 Das Volumen einer Kugel mit Radius $R$ ist: $$V = \frac{4\pi}{3}\cdot R^3$$ Das Volumen einer Kugel mit Radius $R$ ist: $$V = \frac{4\pi}{3}\cdot R^3$$
 Definiere eine Funktion `volume_sphere(...)`, der man als Argument den Radius übergibt und die dann das Volumen zurückgibt. Die Kreiszahl Pi ($\pi$) kannst du mit `math.pi` aufrufen, dazu muss aber auch wieder zuerst das math-Modul importiert werden (`import math`). Definiere eine Funktion `volume_sphere(...)`, der man als Argument den Radius übergibt und die dann das Volumen zurückgibt. Die Kreiszahl Pi ($\pi$) kannst du mit `math.pi` aufrufen, dazu muss aber auch wieder zuerst das math-Modul importiert werden (`import math`).
  
-=== Aufgabe ===+++++Lösung| 
 + 
 +<code python> 
 +import math 
 + 
 +def volume_sphere(r): 
 +    return 4 * math.pi / 3 * r**3 
 + 
 +vol = volume_sphere(5) 
 +print(vol) 
 +</code> 
 + 
 +++++ 
 + 
 +=== Aufgabe Notenberechnung ===
  
 Schreibe eine Funktion `grade(points)`, die dir die Note (grade) für eine gegebene Punktzahl berechnet und zurückgibt. Lege die Punktzahl, die für die Note $6$ notwendig ist in einer Konstanten (wie Variable, aber alles Grossbuchstaben) fest. Die Formel geht wie folgt: Schreibe eine Funktion `grade(points)`, die dir die Note (grade) für eine gegebene Punktzahl berechnet und zurückgibt. Lege die Punktzahl, die für die Note $6$ notwendig ist in einer Konstanten (wie Variable, aber alles Grossbuchstaben) fest. Die Formel geht wie folgt:
Zeile 1559: Zeile 1653:
    * Erreicht man mehr Punkte als notwendig für Note 6, soll man trotzdem die Note 6 erhalten.    * Erreicht man mehr Punkte als notwendig für Note 6, soll man trotzdem die Note 6 erhalten.
  
-=== Aufgabe ===+++++Lösung| 
 + 
 +<code python> 
 +POINTS_FOR_SIX = 22 
 + 
 +def grade(points): 
 +    g = round(5 * points / POINTS_FOR_SIX + 1,2) 
 +    if g > 6: 
 +        return 6 
 +    return g # kann auch vorher noch else: schreiben, macht keinen Unterschied 
 + 
 +print(grade(0)) 
 +print(grade(20)) 
 +print(grade(22)) 
 +print(grade(24)) 
 +</code> 
 + 
 +++++ 
 + 
 + 
 +=== Aufgabe Liste mit Vielfachen ===
  
 Schreibe eine Funktion `liste_vielfache(vv,anzahl)`, welche zwei Zahlen als Inputs verlangt. Es soll eine Liste mit der Anzahl `anz` der Vielfachen der Zahl `vv` erstellt werden und zurückgegeben (nicht geprintet!) werden. Zum Beispiel soll `liste_vielfache(3,5)` die Liste `[3,6,9,12,15]` zurückgeben. Schreibe eine Funktion `liste_vielfache(vv,anzahl)`, welche zwei Zahlen als Inputs verlangt. Es soll eine Liste mit der Anzahl `anz` der Vielfachen der Zahl `vv` erstellt werden und zurückgegeben (nicht geprintet!) werden. Zum Beispiel soll `liste_vielfache(3,5)` die Liste `[3,6,9,12,15]` zurückgeben.
  
-=== Aufgabe ===+++++Lösung| 
 + 
 +<code python> 
 +def liste_vielfache(vv,anzahl): 
 +    li = [] # Wichtig, dass in und NICHT ausserhalb der Funktion definiert wird. Warum? 
 +    for i in range(1,anzahl+1): 
 +        li.append(i*vv) 
 +    return li 
 +     
 +print(liste_vielfache(3,5)) 
 +</code> 
 + 
 +++++ 
 + 
 +=== Aufgabe Fakutltät ===
  
 Die **Fakultät** ist eine Funktion, welche jeder ganzen natürlichen Zahl das Produkt aller natürlichen Zahlen (ohne Null) kleiner und gleich dieser Zahl zuordnet. Sie wird mit einem Ausrufezeichen geschrieben. Als Beispiel: $5!=1 \cdot 2 \cdot 3 \cdot 4 \cdot 5 =120$. Die **Fakultät** ist eine Funktion, welche jeder ganzen natürlichen Zahl das Produkt aller natürlichen Zahlen (ohne Null) kleiner und gleich dieser Zahl zuordnet. Sie wird mit einem Ausrufezeichen geschrieben. Als Beispiel: $5!=1 \cdot 2 \cdot 3 \cdot 4 \cdot 5 =120$.
  
-Schreibe eine Funktion `faculty(...)`, welcher als Argument eine ganze Zahl übergeben wird und welche dir dann die Fakultät dieser Zahl zurückgibt.+Schreibe eine Funktion `factorial(...)`, welcher als Argument eine ganze Zahl übergeben wird und welche dir dann die Fakultät dieser Zahl zurückgibt.
  
 **Optionale Challenge für absolute Freaks**: Kannst du die Fakultät ganz ohne Schleife berechnen? Dann hast du das Prinzip der *Rekursion* (Selbst-Aufruf) entdeckt! **Optionale Challenge für absolute Freaks**: Kannst du die Fakultät ganz ohne Schleife berechnen? Dann hast du das Prinzip der *Rekursion* (Selbst-Aufruf) entdeckt!
  
-=== Aufgabe (Zusatzaufgabe) ===+++++Lösung|
  
-**Mitternachtsformel:*Eine quadratische Funktion kann immer in die Form $$ax^2 + bx + c = 0$$ gebracht werden. Die Lösung ist gegeben durch:+<code python> 
 +def factorial(n): 
 +    p = 1 
 +    for i in range(1,n+1): 
 +        p = p 
 +    return p 
 + 
 +print(factorial(0)) 
 +print(factorial(1)) 
 +print(factorial(2)) 
 +print(factorial(3)) 
 +print(factorial(4)) 
 +print(factorial(5)) 
 +</code> 
 + 
 +++++ 
 + 
 +=== Aufgabe Mitternachtsformel (Zusatzaufgabe) === 
 + 
 +Eine quadratische Funktion kann immer in die Form $$ax^2 + bx + c = 0$$ gebracht werden. Die Lösung ist gegeben durch die sogenannte **Mitternachtsformel**:
 $$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$ $$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$
  
Zeile 1588: Zeile 1735:
    * $x^2 - 4 x + 4 = 0$ hat eine Lösung: $2$    * $x^2 - 4 x + 4 = 0$ hat eine Lösung: $2$
    * $x^2 + 2 x + 7 = 0$ hat keine Lösung    * $x^2 + 2 x + 7 = 0$ hat keine Lösung
 +
 +
 +++++Lösung|
 +
 +<code python>
 +def mitternachtsformel(a,b,c):
 +    d = b**2 - 4*a*c
 +    if d < 0:
 +        return []
 +    elif d == 0:
 +        return [-b/(2*a)]
 +    else:
 +        return [(-b-sqrt(d))/(2*a),(-b+sqrt(d))/(2*a)]
 +    
 +print(mitternachtsformel(3,-6,-5))
 +print(mitternachtsformel(1,-4,4))
 +print(mitternachtsformel(1,2,7))
 +
 +</code>
 +
 +++++
  
  
  
  • gf_informatik/programmieren_ii_sca.1747858836.txt.gz
  • Zuletzt geändert: 2025-05-21 20:20
  • von sca