Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

modul:m323:learningunits:lu01:loesungen:anforderungendeklarativ [2026/08/18 10:09] – Neue Loesung LU01.L10 - Anforderungen deklarativ formulieren adminmodul:m323:learningunits:lu01:loesungen:anforderungendeklarativ [2026/08/18 10:19] (aktuell) – Typografie korrigiert admin
Zeile 8: Zeile 8:
  
 ^ Nr. ^ Deklarative Fassung ^ Typisch imperative Wörter der Vorlage ^ ^ Nr. ^ Deklarative Fassung ^ Typisch imperative Wörter der Vorlage ^
-| 1 | ''zuerich.csv'' enthält genau jene Zeilen aus ''kunden.csv'', deren Postleitzahl mit 8 beginnt – in unveränderter Form. | öffne"lies Zeile für Zeile"hänge an"schliesse am Schluss+| 1 | ''zuerich.csv'' enthält genau jene Zeilen aus ''kunden.csv'', deren Postleitzahl mit 8 beginnt – in unveränderter Form. | öffne, lies Zeile für Zeile, hänge an, schliesse am Schluss | 
-| 2 | Ausgegeben wird die Anzahl Bestellungen mit einem Betrag über 500 Franken. | setze auf 0"gehe durch"erhöhe um 1"am Ende+| 2 | Ausgegeben wird die Anzahl Bestellungen mit einem Betrag über 500 Franken. | setze auf 0, gehe durch, erhöhe um 1, am Ende | 
-| 3 | Ausgegeben wird die höchste vorkommende Note. | nimm die erste"merke dir"gehe durch"ersetze"zum Schluss+| 3 | Ausgegeben wird die höchste vorkommende Note. | nimm die erste, merke dir, gehe durch, ersetze, zum Schluss | 
-| 4 | Die Ausgabeliste enthält, alphabetisch sortiert, die Namen aller Lernenden, die in allen drei Fächern mindestens eine 4 haben. | lege eine leere Liste an"durchlaufe"füge hinzu"sortiere am Ende+| 4 | Die Ausgabeliste enthält, alphabetisch sortiert, die Namen aller Lernenden, die in allen drei Fächern mindestens eine 4 haben. | lege eine leere Liste an, durchlaufe, füge hinzu, sortiere am Ende | 
-| 5 | Jede eingetroffene Datei liegt danach entweder in ''verarbeitet'' (falls sie nicht leer ist) oder in ''fehler'' (falls leer). Für jede leere Datei existiert ein Logeintrag. | wartebis"prüfe"verschiebe"schreibe einen Eintrag|+| 5 | Jede eingetroffene Datei liegt danach entweder in ''verarbeitet'' (falls sie nicht leer ist) oder in ''fehler'' (falls leer). Für jede leere Datei existiert ein Logeintrag. | warte bis, prüfe, verschiebe, schreibe einen Eintrag |
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
 **Woran man eine gelungene Umformulierung erkennt** **Woran man eine gelungene Umformulierung erkennt**
  
-Die Zwischenschritte sind verschwunden: kein Zähler, kein Maximum merken", keine leere Liste, keine Reihenfolge. Übrig bleibt eine Aussage, die man an einem fertigen Ergebnis **überprüfen** kann, ohne den Programmablauf zu kennen. Genau das macht deklarative Anforderungen auch als Testkriterium so brauchbar.+Die Zwischenschritte sind verschwunden: kein Zähler, kein gemerktes Maximum, keine leere Liste, keine Reihenfolge. Übrig bleibt eine Aussage, die man an einem fertigen Ergebnis **überprüfen** kann, ohne den Programmablauf zu kennen. Genau das macht deklarative Anforderungen auch als Testkriterium so brauchbar.
 </WRAP> </WRAP>
  
Zeile 51: Zeile 51:
 ==== 2. Was sich nicht deklarativ beschreiben lässt ==== ==== 2. Was sich nicht deklarativ beschreiben lässt ====
  
-Das **Warten** auf die Datei. Ein Endzustand ist eine Aussage über das Ergebnis – „warte, bis" beschreibt aber einen Vorgang über die Zeit hinweg. Ebenso wenig lässt sich deklarativ ausdrücken, dass eine Datei //verschoben// (also am alten Ort gelöscht) wird: Das ist ein Seiteneffekt, kein Zustand.+Das **Warten** auf die Datei. Ein Endzustand ist eine Aussage über das Ergebnis – ein Warten beschreibt aber einen Vorgang über die Zeit hinweg. Ebenso wenig lässt sich deklarativ ausdrücken, dass eine Datei //verschoben// (also am alten Ort gelöscht) wird: Das ist ein Seiteneffekt, kein Zustand.
  
-Deklarativ formulierbar ist nur das Resultat: Nach der Verarbeitung liegt jede Datei in genau einem der beiden Zielordner, und der Quellordner ist leer."+Deklarativ formulierbar ist nur das Resultat: Nach der Verarbeitung liegt jede Datei in genau einem der beiden Zielordner, und der Quellordner ist leer.
  
 Merke: Anforderungen an **Berechnungen** lassen sich fast immer deklarativ fassen. Anforderungen an **Ein-/Ausgabe, Zeit und Nebenläufigkeit** nur teilweise – auch das ist ein Vorgriff auf die Grenzen der reinen funktionalen Programmierung. Merke: Anforderungen an **Berechnungen** lassen sich fast immer deklarativ fassen. Anforderungen an **Ein-/Ausgabe, Zeit und Nebenläufigkeit** nur teilweise – auch das ist ein Vorgriff auf die Grenzen der reinen funktionalen Programmierung.
Zeile 61: Zeile 61:
 ^ Vorteil ^ Nachteil ^ ^ Vorteil ^ Nachteil ^
 | Die Programmiererin darf die beste Lösung selbst wählen – Schleife, Comprehension, SQL-Abfrage oder Bibliotheksfunktion. | Es ist mehr Rückfragebedarf da: Was gilt bei leeren Eingaben? Bei Gleichstand? Bei fehlenden Werten? | | Die Programmiererin darf die beste Lösung selbst wählen – Schleife, Comprehension, SQL-Abfrage oder Bibliotheksfunktion. | Es ist mehr Rückfragebedarf da: Was gilt bei leeren Eingaben? Bei Gleichstand? Bei fehlenden Werten? |
-| Die Anforderung überlebt einen Technologiewechsel; die Schrittfolge nicht. | Ohne Beispieldaten bleibt sortiert nach Anzahlmehrdeutig (auf- oder absteigend?). |+| Die Anforderung überlebt einen Technologiewechsel; die Schrittfolge nicht. | Ohne Beispieldaten bleibt eine Angabe wie //sortiert nach Anzahl// mehrdeutig (auf- oder absteigend?). |
 | Sie lässt sich direkt als Testkriterium verwenden. | Die Aufwandschätzung fällt schwerer, weil der Lösungsweg noch offen ist. | | Sie lässt sich direkt als Testkriterium verwenden. | Die Aufwandschätzung fällt schwerer, weil der Lösungsweg noch offen ist. |
  
  • modul/m323/learningunits/lu01/loesungen/anforderungendeklarativ.txt
  • Zuletzt geändert: 2026/08/18 10:19
  • von admin