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:paradigmenvergleich [2026/08/18 10:21] – Kompetenz-Tags auf neue Kompetenzmatrix ZH gesetzt adminmodul:m323:learningunits:lu01:aufgaben:paradigmenvergleich [2026/08/18 11:35] (aktuell) – Zeitliche Einordnung nach LU04, funktionale Fassung darf LU04-Bausteine nutzen admin
Zeile 6: Zeile 6:
  
 <WRAP center round important 80%> <WRAP center round important 80%>
-**Erweiterte Aufgabe**+**Erweiterte Aufgabe – Bearbeitung nach LU04**
  
-Diese Aufgabe zielt auf das Kompetenzniveau //erweitert// (AE1: //Ich kann aufzeigen, wie Probleme in den verschiedenen Konzepten (OO, prozedural und funktional) gelöst werden und diese miteinander vergleichen."//). Lösen Sie zuerst LU01.A08 bis A11.+Diese Aufgabe gehört inhaltlich zu LU01 (Paradigmen), wird aber erst **nach LU04** bearbeitet. Erst dann stehen Ihnen mit ''map'', ''filter'', ''reduce'' und den Comprehensions die Bausteine zur Verfügung, die eine funktionale Lösung auch als solche erkennbar machen. 
 + 
 +Sie zielt auf das Kompetenzniveau //erweitert// (AE1: //Ich kann aufzeigen, wie Probleme in den verschiedenen Konzepten (OO, prozedural und funktional) gelöst werden und diese miteinander vergleichen.//).
 </WRAP> </WRAP>
  
Zeile 23: Zeile 25:
 <code python> <code python>
 noten = [ noten = [
-    ("Alina", 5.5), +    ('Alina', 5.5), 
-    ("Ben", 3.5), +    ('Ben', 3.5), 
-    ("Chiara", 4.0), +    ('Chiara', 4.0), 
-    ("Dario", 5.0), +    ('Dario', 5.0), 
-    ("Elif", 3.9),+    ('Elif', 3.9),
 ] ]
 </code> </code>
Zeile 43: Zeile 45:
 Erstellen Sie **drei separate Python-Dateien** mit derselben Ausgabe: Erstellen Sie **drei separate Python-Dateien** mit derselben Ausgabe:
  
-==== 1. ''prozedural.py'' ====+==== 1. Datei prozedural.py ====
  
-  * Kein Klassenkonstrukt. +  * Kein Klassenkonstrukt, keine ausgelagerten Funktionen
-  * Die Zwischenergebnisse werden in Variablen aufgebaut und in Schleifen fortgeschrieben.+  * Die Zwischenergebnisse werden in Variablen aufgebaut und in einer Schleife fortgeschrieben.
   * Erlaubt (und erwünscht) sind Zähler, Akkumulatoren und ''append''.   * Erlaubt (und erwünscht) sind Zähler, Akkumulatoren und ''append''.
  
-==== 2. ''objektorientiert.py'' ====+==== 2. Datei objektorientiert.py ====
  
   * Eine Klasse ''Klasse'' (oder ''Notenliste'') hält die Noten als Attribut.   * Eine Klasse ''Klasse'' (oder ''Notenliste'') hält die Noten als Attribut.
Zeile 55: Zeile 57:
   * Der Zustand lebt im Objekt und wird durch ''hinzufuegen'' verändert.   * Der Zustand lebt im Objekt und wird durch ''hinzufuegen'' verändert.
  
-==== 3. ''funktional.py'' ====+==== 3. Datei funktional.py ====
  
   * Nur Funktionen, die ihre Eingabe als Parameter erhalten und einen Wert zurückgeben.   * Nur Funktionen, die ihre Eingabe als Parameter erhalten und einen Wert zurückgeben.
   * Keine globalen Variablen, kein ''print'' innerhalb der berechnenden Funktionen.   * Keine globalen Variablen, kein ''print'' innerhalb der berechnenden Funktionen.
   * Nichts wird verändert – wer eine Note ergänzt, erhält eine neue Liste zurück.   * Nichts wird verändert – wer eine Note ergänzt, erhält eine neue Liste zurück.
 +  * **Keine ''for''-Schleife.** Verwenden Sie die Bausteine aus LU04: ''map'', ''filter'', ''reduce'', Lambda-Ausdrücke und Comprehensions.
  
 <WRAP center round info 80%> <WRAP center round info 80%>
-**Hinweis zum funktionalen Teil**+**Warum das Schleifenverbot in Teil 3?** 
 + 
 +Ohne diese Vorgabe unterscheidet sich die funktionale Fassung kaum von der prozeduralen – beide hätten eine Schleife, nur an einer anderen Stelle. Erst wenn die Iteration ganz im Sprachkonstrukt verschwindet, wird sichtbar, was der deklarative Stil eigentlich ändert.
  
-''map'', ''filter'', ''reduce'' und ''lambda'' behandeln wir erst in LU04. Für diese Aufgabe genügen eine Comprehension, ''sum'', ''max'' – oder eine Schleife **innerhalb** einer Funktion, die einen Wert zurückgibt. Entscheidend ist nicht die Schleifenfreiheit, sondern dass keine Daten ausserhalb der Funktion verändert werden.+''reduce'' importieren Sie mit ''from functools import reduce''.
 </WRAP> </WRAP>
  
Zeile 84: Zeile 89:
   - Rufen Sie in der OO-Fassung ''durchschnitt()'' auf, fügen Sie dann eine Note hinzu und rufen Sie ''durchschnitt()'' erneut auf. Erklären Sie, warum derselbe Aufruf zwei verschiedene Ergebnisse liefert – und warum das in der funktionalen Fassung nicht passieren kann.   - Rufen Sie in der OO-Fassung ''durchschnitt()'' auf, fügen Sie dann eine Note hinzu und rufen Sie ''durchschnitt()'' erneut auf. Erklären Sie, warum derselbe Aufruf zwei verschiedene Ergebnisse liefert – und warum das in der funktionalen Fassung nicht passieren kann.
   - Die objektorientierte Programmierung wird oft der funktionalen gegenübergestellt. Zeigen Sie an Ihrem Beispiel, dass die OO-Fassung im Kern **imperativ** ist. Woran erkennt man das?   - Die objektorientierte Programmierung wird oft der funktionalen gegenübergestellt. Zeigen Sie an Ihrem Beispiel, dass die OO-Fassung im Kern **imperativ** ist. Woran erkennt man das?
 +  - Was passiert in Ihrer funktionalen Fassung bei einer **leeren** Notenliste? Erklären Sie die Fehlermeldung und schlagen Sie eine Behandlung vor.
   - Nennen Sie für jedes der drei Paradigmen eine Situation aus Ihrem Lehrbetrieb oder aus einem früheren Modul, in der es die passende Wahl wäre.   - Nennen Sie für jedes der drei Paradigmen eine Situation aus Ihrem Lehrbetrieb oder aus einem früheren Modul, in der es die passende Wahl wäre.
  
Zeile 91: Zeile 97:
  
 ---- ----
-{{tag>M323-LU01 M323-A1A M323-A1B}} 
 [[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/paradigmenvergleich.1787041307.txt.gz
  • Zuletzt geändert: 2026/08/18 10:21
  • von admin