Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m323:learningunits:lu01:aufgaben:prozedurzufunktion [2026/08/18 10:59] – Als Classroom-50-Aufgabe umgestellt, Repo verlinkt adminmodul:m323:learningunits:lu01:aufgaben:prozedurzufunktion [2026/08/18 11:20] (aktuell) – Kontrollfragen werden neu im README.md abgegeben admin
Zeile 7: Zeile 7:
 ===== Ausgangslage ===== ===== Ausgangslage =====
  
-Das folgende Skript funktioniert – solange man es genau in dieser Reihenfolge aufruft. Es zeigt gleich mehrere typische Schwächen prozeduralen Codes: globalen Zustand, Berechnung und Ausgabe im selben Atemzug, und Prozeduren, die ''None'' zurückgeben. Im Repository finden Sie es als ''ausgangslage.py''.+Das Skript in ''ausgangslage.py'' funktioniert – solange man es genau in dieser Reihenfolge aufruft. Es zeigt gleich mehrere typische Schwächen prozeduralen Codes: globalen Zustand, Berechnung und Ausgabe im selben Atemzug, und Prozeduren, die ''None'' zurückgeben.
  
-<code python> +~~NOCACHE~~ 
-lager [] +=== ausgangslage.py === 
-gesamtwert 0+{{gh>https://github.com/templates-python/m323-lu01-a09-lager-funktional/blob/main/ausgangslage.py}}
  
 +===== Code-Vorlage =====
  
-def artikel_hinzufuegen(name, menge, preis): +Die Namen und Signaturen in ''main.py'' sind fix – die Tests rufen genau diese auf.
-    global gesamtwert +
-    lager.append({'name': name, 'menge': menge, 'preis': preis}) +
-    gesamtwert += menge * preis+
  
- +=== main.py === 
-def zeige_gesamtwert(): +{{gh>https://github.com/templates-python/m323-lu01-a09-lager-funktional/blob/main/main.py}}
-    print(f'Gesamtwert: {gesamtwert:.2f} CHF'+
- +
- +
-def zeige_teuersten(): +
-    teuerster None +
-    for artikel in lager: +
-        if teuerster is None or artikel['preis'] > teuerster['preis']: +
-            teuerster artikel +
-    print(f"Teuerster Artikel: {teuerster['name']}"+
- +
- +
-if __name__ == '__main__': +
-    artikel_hinzufuegen('Maus', 10, 24.90) +
-    artikel_hinzufuegen('Tastatur', 4, 79.50) +
-    artikel_hinzufuegen('Monitor', 2, 249.00) +
-    zeige_gesamtwert() +
-    zeige_teuersten() +
-</code>+
  
 ===== Anforderungen ===== ===== Anforderungen =====
  
-  - **Analyse:** Halten Sie schriftlich fest, welche der drei ''def''-Blöcke Prozeduren sind und woran Sie das erkennen.+  - **Analyse:** Halten Sie fest, welche der drei ''def''-Blöcke in ''ausgangslage.py'' Prozeduren sind und woran Sie das erkennen.
   - **Umbau:** Implementieren Sie in ''main.py'' die vier vorgegebenen Funktionen so, dass gilt:   - **Umbau:** Implementieren Sie in ''main.py'' die vier vorgegebenen Funktionen so, dass gilt:
     * Keine globalen Variablen – alle benötigten Daten kommen als Parameter herein.     * Keine globalen Variablen – alle benötigten Daten kommen als Parameter herein.
Zeile 48: Zeile 28:
     * Jede Funktion gibt einen Wert zurück.     * Jede Funktion gibt einen Wert zurück.
     * ''artikel_hinzufuegen'' verändert die übergebene Liste **nicht**, sondern gibt eine **neue** Liste zurück.     * ''artikel_hinzufuegen'' verändert die übergebene Liste **nicht**, sondern gibt eine **neue** Liste zurück.
- 
-==== Vorgegebene Funktionen ==== 
- 
-Die Namen und Signaturen sind fix – die Tests rufen genau diese auf. 
  
 ^ Funktion ^ Rückgabe ^ ^ Funktion ^ Rückgabe ^
Zeile 67: Zeile 43:
  
 ===== Kontrollfragen ===== ===== Kontrollfragen =====
 +
 +Diese drei Fragen beantworten Sie **direkt im ''README.md''** Ihres Repositories, unterhalb der jeweiligen Frage. Zwei bis vier Sätze pro Frage genügen.
  
   - Warum kann man den Ausdruck ''gesamtwert(lager)'' im Kopf jederzeit durch seine Zahl ersetzen, den Aufruf ''artikel_hinzufuegen('Maus', 10, 24.90)'' aus der Ausgangslage aber nicht? Wie heisst diese Eigenschaft?   - Warum kann man den Ausdruck ''gesamtwert(lager)'' im Kopf jederzeit durch seine Zahl ersetzen, den Aufruf ''artikel_hinzufuegen('Maus', 10, 24.90)'' aus der Ausgangslage aber nicht? Wie heisst diese Eigenschaft?
Zeile 83: Zeile 61:
 ''global'' kostet in dieser Aufgabe Punkte (''W0603 global-statement'' ist bewusst aktiviert) – genau darum geht es ja. ''global'' kostet in dieser Aufgabe Punkte (''W0603 global-statement'' ist bewusst aktiviert) – genau darum geht es ja.
 </WRAP> </WRAP>
 +
 +===== Vorgehen =====
 +
 +  - Akzeptiere das Classroom-Assignment
 +  - Klone dein persönliches Repository in die Entwicklungsumgebung
 +  - Lies ''ausgangslage.py''
 +  - Implementiere die vier Funktionen in ''main.py''
 +  - Beantworte die drei Kontrollfragen im ''README.md''
 +  - Lokal prüfen mit ''pytest'' und ''python _run_pylint.py''
 +  - Pushen – Code und Antworten liegen damit im selben Commit
  
 ===== Bewertung ===== ===== Bewertung =====
Zeile 89: Zeile 77:
 | Unittests | 11 | | Unittests | 11 |
 | Linting | 5 | | Linting | 5 |
-| **Total** | **16** |+| Kontrollfragen (von Hand bewertet) | 4 | 
 +| **Total** | **20** |
  
 ===== Abgabe ===== ===== Abgabe =====
  
-Der Code wird über das Classroom-Repository abgegeben und automatisch bewertetDie drei **Kontrollfragen** geben Sie zusätzlich in Moodle ab.+Alles zusammen als Push in das persönliche GitHub-Repository: der Code in ''main.py'' und die Antworten auf die Kontrollfragen im ''README.md''. Es gibt keine separate Moodle-Abgabe.
  
 ---- ----
-<nodisp>Github Repohttps://github.com/templates-python/m323-lu01-a09-lager-funktional</nodisp>+<details> 
 +<summary>//=> GitHub Repo für externe Besucher//</summary> 
 +GitHub Repository https://github.com/templates-python/m323-lu01-a09-lager-funktional 
 + 
 +//Lernende am BZZ müssen den Link zum Classroom-Assignment verwenden// 
 + 
 +</details>
 [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi
  
  • modul/m323/learningunits/lu01/aufgaben/prozedurzufunktion.1787043596.txt.gz
  • Zuletzt geändert: 2026/08/18 10:59
  • von admin