Aufgabe Vorschlag A - Aufgabe 1.3 · Abitur Hessen Technische Informatik LK 2021

Thema: Klassen und Methoden implementieren · Aus der Prüfung LK (2021)

Aufgabenstellung

Enthärtungsanlage

Der Härtegrad von Trinkwasser kann unterschiedlich sein, je nachdem welche natürlichen Inhaltsstoffe im Wasser enthalten sind (z. B. Kalk). Zu hartes bzw. kalkhaltiges Wasser kann der Rohrinstallation im Haus und den wasserführenden Geräten (z. B. Kaffeemaschine, Waschmaschine) schaden. Um dies zu verhindern, gibt es so genannte Enthärtungsanlagen, die die Kalkteilchen durch Salzteilchen ersetzen. Dazu wird die Anlage direkt nach dem Hausanschluss eingebaut, wo sie dann das komplette von außen einströmende Wasser enthärtet. Das Salz, das für die Enthärtung benötigt wird, wird in Tab-Form (ähnlich in der Größe wie Spülmaschinentabs) in einem Behälter im Gerät vorgehalten. Dort werden die Tabs nach und nach in Wasser aufgelöst (Material 1). Die Anlage muss regelmäßig durch eine Spülung gereinigt werden, um die ausgelösten Teilchen zu entfernen. Moderne Enthärtungsanlagen sind mithilfe eines Assemblers elektronisch gesteuert und bieten zudem Zugang zum WLAN, um mit einer App auf die Anlage zugreifen zu können.

Material 1

1.3 Der Wasserverbrauch des gesamten Hauses pro Tag kann von der Anlage gemessen werden und wird mit Angabe des Datums gespeichert. Mit einem Befehl in der App kann sich der User die angezeigte Tabelle so strukturieren, dass die Tage nach dem Wasserverbrauch aufsteigend sortiert sind (Tag mit dem größten Wasserverbrauch steht ganz rechts). Folgende beispielhafte unsortierte Feldliste steht bereits zur Verfügung (Werte entsprechen Litern pro Tag):

Element 1

Element 2

Element 3

Element 4

Element 5

261

29

214

986

189

1.3.1

Erläutern Sie den Ablauf des Sortierverfahrens Quicksort an oben genannter beispielhafter Feldliste und ermitteln Sie für dieses Beispiel die Anzahl der nötigen Vergleiche.

[8 BE]

1.3.2

Die unsortierte Feldliste soll aufsteigend von links nach rechts sortiert werden. Implementieren Sie ein entsprechendes Sortierverfahren (Bubblesort, Shellsort oder Quicksort) in der von Ihnen im Unterricht verwendeten Programmiersprache.

[8 BE]

Aufgabenstellung: Aufgabe Vorschlag A - Aufgabe 1.3 · Abitur Hessen Technische Informatik LK 2021

Lösung

Nach den offiziellen Korrekturhinweisen

1.3.1 Erläutern Sie den Ablauf des Sortierverfahrens Quicksort an oben genannter beispielhafter Feldliste

Lösung: Quicksort arbeitet rekursiv nach dem Teile-und-Herrsche-Prinzip. In diesem Fall wird das mittlere Element des zu sortierenden Feldes bzw. der zu sortierenden Feldliste als Pivot-Element ausgewählt (z. B. 214). Alle Elemente, die kleiner als das Pivot-Element sind, kommen in die linke Teilliste, und alle, die größer sind, in die rechte Teilliste. Die Elemente, die gleich dem Pivot-Element sind, können sich beliebig auf die Teillisten verteilen (entweder immer links oder immer rechts vom Pivot-Element). Nach der Aufteilung sind die Elemente der linken Liste kleiner oder gleich den Elementen der rechten Liste. Anschließend muss man also noch jede Teilliste in sich sortieren, um die Sortierung zu vollenden. Dazu wird der Quicksort-Algorithmus jeweils auf der linken und auf der rechten Teilliste ausgeführt. Jede Teilliste wird dann wieder in zwei Teillisten aufgeteilt und auf diese jeweils wieder der Quicksort-Algorithmus angewandt, und so weiter. Diese Selbstaufrufe werden als Rekursion bezeichnet. Wenn eine Teilliste der Länge eins oder null auftritt, so ist diese bereits sortiert und es erfolgt der Abbruch der Rekursion.

1.3.1 Ermitteln Sie für dieses Beispiel die Anzahl der nötigen Vergleiche.

Lösung: 6

1.3.2 Implementieren Sie ein entsprechendes Sortierverfahren (Bubblesort, Shellsort oder Quicksort) in der von Ihnen im Unterricht verwendeten Programmiersprache.

Lösung: ```java import java.util.ArrayList; public class quicksort2 { private static ArrayList<Integer> inputArrayList = new ArrayList<Integer>(); private static ArrayList<Integer> outputArrayList = new ArrayList<Integer>(); public quicksort2(ArrayList<Integer> inputArray) { quicksort2.inputArrayList = inputArray; } public ArrayList<Integer> sort(int l, int r) { int q; if (l < r) { q = partition(l, r); sort(l, q); sort(q + 1, r); } outputArrayList = inputArrayList; return outputArrayList; } int partition(int l, int r) { int i, j, x = inputArrayList.get((l + r) / 2); i = l - 1; j = r + 1; while (true) { do { i++; } while (inputArrayList.get(i) < x); do { j--; } while (inputArrayList.get(j) > x); if (i < j) { int k = inputArrayList.get(i); inputArrayList.set(i, inputArrayList.get(j)); inputArrayList.set(j, k); } else { return j; } } } } ```

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe Vorschlag C - 1 - Klassen und Methoden implementi… · LK 2022 · Aufgabe Vorschlag B - Aufgabe 1.5 · LK 2021 ›

Mehr Aufgaben zu Klassen und Methoden implementieren