====== LU01.A08 - Paradigmen-Detektiv ======
Ordnen Sie zehn Code-Ausschnitte dem imperativen oder dem deklarativen Stil zu und begründen Sie Ihre Entscheidung anhand konkreter Merkmale im Code.
===== Ausgangslage =====
Im Berufsalltag erben Sie ständig fremden Code. Bevor Sie ihn ändern, müssen Sie erkennen, //wie// er gebaut ist. Auf der Theorieseite [[..:deklarativimperativ|LU01a]] finden Sie dazu den Spickzettel mit den Erkennungsmerkmalen.
Ein guter Test: **Liest sich der Code wie eine Beschreibung des Ergebnisses – oder wie eine Anleitung?**
===== Anforderungen =====
* Ordnen Sie jeden der zehn Ausschnitte einer der beiden Spalten zu: **imperativ** oder **deklarativ**.
* Nennen Sie pro Ausschnitt **mindestens ein konkretes Merkmal im Code**, das Ihre Zuordnung stützt – etwa //Schleife mit Zählvariable//, //verändert die bestehende Liste// oder //erzeugt einen neuen Wert//.
* Halten Sie zusätzlich fest, ob der Ausschnitt **bestehende Daten verändert** oder einen **neuen Wert erzeugt**.
===== Die Ausschnitte =====
==== Ausschnitt 1 ====
summe = 0
for zahl in range(1, 101):
summe += zahl
==== Ausschnitt 2 ====
summe = sum(range(1, 101))
==== Ausschnitt 3 ====
namen = ["Bea", "Ali", "Cem"]
namen.sort()
==== Ausschnitt 4 ====
namen_sortiert = sorted(namen)
==== Ausschnitt 5 ====
==== Ausschnitt 6 ====
gefiltert = []
for wort in woerter:
if len(wort) > 5:
gefiltert.append(wort)
==== Ausschnitt 7 ====
gefiltert = [wort for wort in woerter if len(wort) > 5]
==== Ausschnitt 8 ====
UPDATE kunden SET status = 'aktiv' WHERE letzter_login > '2024-01-01';
==== Ausschnitt 9 ====
zaehler = 0
def zaehle_hoch():
global zaehler
zaehler += 1
==== Ausschnitt 10 ====
temperaturen_f = list(map(lambda c: c * 9 / 5 + 32, temperaturen_c))
===== Abgabetabelle =====
Verwenden Sie die folgende Struktur:
^ Nr. ^ Stil (imperativ / deklarativ) ^ Merkmal im Code ^ Verändert bestehende Daten? ^
| 1 | | | |
| 2 | | | |
===== Zusatzfragen =====
- Welcher Ausschnitt ist zwar deklarativ, verändert aber trotzdem Zustand? Was folgt daraus für die Behauptung, deklarativ sei automatisch seiteneffektfrei?
- Ausschnitt 3 und 4 lösen dieselbe Aufgabe. Welcher der beiden ist gefährlicher, wenn die Liste ''namen'' an einer anderen Stelle im Programm ebenfalls verwendet wird? Warum?
- Ausschnitt 5 ist deklarativ, hat aber gar keine Funktionen. Was sagt das über das Verhältnis von //deklarativ// und //funktional// aus?
**Hinweis**
Sie müssen für diese Aufgabe keinen Code schreiben oder ausführen. Es geht um das Lesen und Einordnen. Wenn Sie unsicher sind, lesen Sie den Ausschnitt laut vor und hören Sie, ob er wie eine Anleitung oder wie eine Beschreibung klingt.
===== Abgabe =====
Geben Sie die ausgefüllte Tabelle samt Antworten auf die Zusatzfragen in Moodle ab.
----
{{tag>M323-LU01 M323-B1B M323-A1I}}
[[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