Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
modul:m323:learningunits:lu01:aufgaben:spaghetticode [2026/08/18 11:10] – Code-Vorlage via gh-Import aus dem Repository adminmodul:m323:learningunits:lu01:aufgaben:spaghetticode [2026/08/18 11:20] (aktuell) – Schriftlicher Teil wird neu im README.md abgegeben admin
Zeile 16: Zeile 16:
  
 ===== Code-Vorlage ===== ===== Code-Vorlage =====
 +
 +Die Namen und Signaturen in ''main.py'' sind fix – die Tests rufen genau diese auf.
  
 === main.py === === main.py ===
Zeile 22: Zeile 24:
 ===== Anforderungen ===== ===== Anforderungen =====
  
-  - **Analysieren:** Markieren Sie im Code von ''referenz.py'', wo Sequenz, Selektion und Iteration vorkommen. Welche Stellen entsprechen keiner der drei Grundstrukturen, sondern imitieren einen Sprung? +Implementieren Sie in ''main.py'' die beiden vorgegebenen Funktionen. Vorgaben: 
-  - **Umbauen:** Implementieren Sie in ''main.py'' die beiden vorgegebenen Funktionen. Vorgaben: + 
-    * Die Schleife läuft direkt über die Elemente (''for bestellung in bestellungen''), ohne Index und ohne Abbruchflagge. +  * Die Schleife läuft direkt über die Elemente (''for bestellung in bestellungen''), ohne Index und ohne Abbruchflagge. 
-    * Kein ''continue'', kein ''break'', kein ''while''+  * Kein ''continue'', kein ''break'', kein ''while''
-    * Höchstens **eine** Verschachtelungsebene innerhalb der Schleife. +  * Höchstens **eine** Verschachtelungsebene innerhalb der Schleife. 
-    * Die Bedingung, ob eine Bestellung überhaupt zählt, steckt in ''ist_verrechenbar'' und gibt ''True'' oder ''False'' zurück+  * Die Bedingung, ob eine Bestellung überhaupt zählt, steckt in ''ist_verrechenbar'' und gibt ''True'' oder ''False'' zurück.
-  - **Begründen:** Halten Sie in zwei bis drei Sätzen fest, welche Fehlerquellen im Ausgangscode durch den Umbau verschwunden sind.+
  
 ^ Funktion ^ Rückgabe ^ ^ Funktion ^ Rückgabe ^
Zeile 40: Zeile 41:
 </code> </code>
  
-===== Zusatzfragen =====+===== Schriftlicher Teil ===== 
 + 
 +Diese fünf Punkte beantworten Sie **direkt im ''README.md''** Ihres Repositories, unterhalb der jeweiligen Frage. Zwei bis vier Sätze pro Punkt genügen.
  
-  - Der Ausgangscode zählt ''i'' an drei verschiedenen Stellen hoch. Was passiert, wenn man eine dieser Stellen vergisst? Probieren Sie es in einer Kopie aus. +  - **Grundstrukturen:** Wo kommen in ''umsatz_alt'' Sequenz, Selektion und Iteration vor? Welche Stellen entsprechen keiner der drei Grundstrukturen, sondern imitieren einen Sprung? 
-  - Das Theorem von Böhm und Jacopini besagt, dass jeder Algorithmus mit den drei Grundstrukturen auskommt. Wie stützt Ihr Umbau diese Aussage? +  - **Was der Umbau beseitigt:** Welche Fehlerquellen im Ausgangscode sind durch Ihren Umbau verschwunden? 
-  - **Für Schnelle:** Formulieren Sie die Anforderung an ''umsatz'' deklarativ – als Satz über das Ergebnis, ohne Schleife und Zwischensumme.+  - **Vergessenes Hochzählen:** Der Ausgangscode zählt ''i'' an drei verschiedenen Stellen hoch. Was passiert, wenn man eine davon vergisst? Probieren Sie es in einer Kopie aus. 
 +  - **Böhm und Jacopini:** Das Theorem besagt, dass jeder Algorithmus mit den drei Grundstrukturen auskommt. Wie stützt Ihr Umbau diese Aussage? 
 +  - **Deklarativ formuliert (für Schnelle):** Formulieren Sie die Anforderung an ''umsatz'' als Satz über das Ergebnis, ohne Schleife und Zwischensumme.
  
 <WRAP center round important 80%> <WRAP center round important 80%>
Zeile 56: Zeile 61:
   - Akzeptiere das Classroom-Assignment   - Akzeptiere das Classroom-Assignment
   - Klone dein persönliches Repository in die Entwicklungsumgebung   - Klone dein persönliches Repository in die Entwicklungsumgebung
-  - Analysiere ''referenz.py'' und beantworte Teil 1+  - Analysiere ''referenz.py''
   - Implementiere ''ist_verrechenbar'' und ''umsatz'' in ''main.py''   - Implementiere ''ist_verrechenbar'' und ''umsatz'' in ''main.py''
 +  - Beantworte die fünf Punkte im ''README.md''
   - Lokal prüfen mit ''pytest'' und ''python _run_pylint.py''   - Lokal prüfen mit ''pytest'' und ''python _run_pylint.py''
-  - Pushen – die Bewertung läuft automatisch+  - Pushen – Code und Antworten liegen damit im selben Commit
  
 ===== Bewertung ===== ===== Bewertung =====
Zeile 66: Zeile 72:
 | Unittests | 11 | | Unittests | 11 |
 | Linting | 5 | | Linting | 5 |
-| **Total** | **16** |+| Schriftlicher Teil (von Hand bewertet) | 6 | 
 +| **Total** | **22** |
  
 ===== Abgabe ===== ===== Abgabe =====
  
-Die Abgabe des Codes erfolgt als Push in das persönliche GitHub-Repository. Die **Analyse**, die **Begründung** und die **Zusatzfragen** 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 im ''README.md''. Es gibt keine separate Moodle-Abgabe.
  
 ---- ----
  • modul/m323/learningunits/lu01/aufgaben/spaghetticode.1787044243.txt.gz
  • Zuletzt geändert: 2026/08/18 11:10
  • von admin