From 7347bb8139b83dee6a06c1a98b5a236c8a612cde Mon Sep 17 00:00:00 2001 From: "harald.mueller@tbz.ch" Date: Fri, 6 Aug 2021 21:59:06 +0200 Subject: [PATCH] muh --- ...eTask04_Files-und_Daten_lesen_schreiben.md | 37 +++++ m411/3/AufgabeTask05_LinkedList.md | 21 +++ m411/3/AufgabeTask06_ArraySortStackQueue.md | 27 ++++ m411/3/AufgabeTask07_BubbleSort.md | 24 ++++ m411/3/AufgabeTask07_BubbleSort_Aufgabe.md | 129 ++++++++++++++++++ m411/5/AufgabeTask09_HashMap.md | 17 ++- .../AufgabeTask13_Datastructures_XML_JSON.md | 13 +- m411/7/AufgabeTask15_PageRankAlgo.md | 4 +- 8 files changed, 257 insertions(+), 15 deletions(-) create mode 100644 m411/2/AufgabeTask04_Files-und_Daten_lesen_schreiben.md create mode 100644 m411/3/AufgabeTask05_LinkedList.md create mode 100644 m411/3/AufgabeTask06_ArraySortStackQueue.md create mode 100644 m411/3/AufgabeTask07_BubbleSort.md create mode 100644 m411/3/AufgabeTask07_BubbleSort_Aufgabe.md diff --git a/m411/2/AufgabeTask04_Files-und_Daten_lesen_schreiben.md b/m411/2/AufgabeTask04_Files-und_Daten_lesen_schreiben.md new file mode 100644 index 0000000..02273c4 --- /dev/null +++ b/m411/2/AufgabeTask04_Files-und_Daten_lesen_schreiben.md @@ -0,0 +1,37 @@ +Aufgabe/Task: Nr. 04 + +Thema: Files lesen & schreiben + +Geschätzter Zeitbedarf: 30-70 min pro Aufgabe + +Aufgabenbeschreibung: + +2.1 Textfiles einlesen mit BufferedReader + + + +2.2 Textfiles einlesen BufferedReader oder Scanner + + + +2.3 Strukturierte Textfiles einlesen + + + +2.4 Textfiles schreiben + + + +2.5 Zufallszahlen-Datei + +Schreiben Sie ein einfaches Text-File. Der Inhalt sind ganzzahlige Zufallszahlen +zwischen 0 und 10000. Pro Zeile schreiben Sie eine Zahl. Programmieren Sie eine +Einstellung (Parameter), dass Sie wahlweise z.B. 500 oder 3'000’000 +Zufallszahlen-Zeilen erzeugen können. + +Zeigen Sie der Lehrperson jede Übung (entweder einzeln oder mehrere Übungen +zusammen) und zeigen Sie auch diese Zufallszahlen-Datei. + +Bewertung: + +Aufgaben / Übungen der Lehrperson einzeln oder zusammen zeigen diff --git a/m411/3/AufgabeTask05_LinkedList.md b/m411/3/AufgabeTask05_LinkedList.md new file mode 100644 index 0000000..dd2cfd9 --- /dev/null +++ b/m411/3/AufgabeTask05_LinkedList.md @@ -0,0 +1,21 @@ +Aufgabe/Task: Nr. 05 + +Thema: Linked List / Verkettete Liste + +Geschätzter Zeitbedarf: 30-70min pro Aufgabe + +Aufgabenbeschreibung: + +Zur Unterstützung und weitere Anleitung, schauen Sie sich dieses Video an. + + + +Bauen Sie gemäss dieser Anleitung eine (einfache) Verlinkte Liste. + + + + + +Bewertung: + +Keine, ist aber prüfungsrelevant diff --git a/m411/3/AufgabeTask06_ArraySortStackQueue.md b/m411/3/AufgabeTask06_ArraySortStackQueue.md new file mode 100644 index 0000000..d43a26c --- /dev/null +++ b/m411/3/AufgabeTask06_ArraySortStackQueue.md @@ -0,0 +1,27 @@ +Aufgabe/Task: Nr. 06 + +Thema: Arrays, Sort, Stack, Queue + +Geschätzter Zeitbedarf: 180-240 min + +Aufgabenbeschreibung: + +Arrays + + + +Stacks + + + + + + + + + + + +Bewertung: + +Keine, ist aber prüfungsrelevant diff --git a/m411/3/AufgabeTask07_BubbleSort.md b/m411/3/AufgabeTask07_BubbleSort.md new file mode 100644 index 0000000..18ce22b --- /dev/null +++ b/m411/3/AufgabeTask07_BubbleSort.md @@ -0,0 +1,24 @@ +Aufgabe/Task: Nr. 07 + +Thema: Bubble-Sort + +Geschätzter Zeitbedarf: 90-120 min + +Aufgabenbeschreibung: + +Bubble Sort + + (5:32 min) + +Bauen Sie ein Bubble-Sort-Algorithmus. Die Daten lesen Sie über eine Liste von +Nummern aus einer Text-Datei ein. Lassen Sie die Veränderungen nach jedem +Durchgang in eine Datei herausschreiben (Zahlenreihe hintereinander und Komma +separiert / Stand vorher eine Zeile, Stand nachher eine Zeile, Stand nachher +eine Zeile, …) damit man sehen kann, wie sich der Algorithmus verhält und sich +die Resultate entwickeln. + + + +Bewertung: + +Keine, ist aber prüfungsrelevant diff --git a/m411/3/AufgabeTask07_BubbleSort_Aufgabe.md b/m411/3/AufgabeTask07_BubbleSort_Aufgabe.md new file mode 100644 index 0000000..b581018 --- /dev/null +++ b/m411/3/AufgabeTask07_BubbleSort_Aufgabe.md @@ -0,0 +1,129 @@ +**Der Bubblesort** + +**Lernziele:** + +- Sie haben das Prinzip des Bubblesort verstanden + +- Sie können eine Aussage über die Effizienz des Bubblesorts machen + +**1 Sortieren in Schritten** + +Für die folgenden Aufgaben brauchen Sie Papierschnitzel mit den unten stehenden +Zahlen: + +**51, 13, 9, 44, 18, 93, 25** + +Schreiben Sie diese Zahlen auf Notizpapier auf und zerschneiden Sie es. + +**1.1 Aufgabe: Sortieren nach Grösse** + +Sortieren Sie die Papierschnitzel ausgehend von der obigen Reihenfolge der +Grösse nach aufsteigend, so dass die kleinste Zahl links und die grösste rechts +zu liegen kommt. + +- Können Sie beschreiben, wie Sie vorgegangen sind? + +**1.2 Aufgabe: nur benachbarte Schnipsel vertauschen** + +Bringen Sie die Papierschnipsel wieder in die Ausgangssituation und sortieren +Sie zum zweiten Mal der Grösse nach aufsteigend. Aber: dieses Mal ist nur eine +**einzige Operation** auf den Papierschnipsel erlaubt, und zwar dürfen Sie nur +jeweils zwei benachbarte Schnipsel vertauschen. + +**1.3 Aufgabe: systematisch von links nach rechts** + +Bringen Sie die Papierschnipsel wieder in die Ausgangssituation und sortieren +Sie sie wieder durch Vertauschen von Nachbarn, aber wählen Sie diesmal die +Nachbarn systematisch von links nach rechts. Sie tauschen also – falls nötig – +die erste mit der zweiten Zahl, dann die zweite mit der dritten, usw. bis Sie +beim letzten Paar ganz rechts angekommen sind. + +- Können Sie etwas darüber sagen, was bei einem einzelnen Durchgang passiert? + +- Wann können sie aufhören und brauchen keinen weiteren Durchgang mehr? + Notieren Sie sich die Zwischenschritte. + +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +**2 Definition Bubblesort-Algorithmus** + +Der Bubblesort-Algorithmus sortiert eine Liste von Elementen aufsteigend, indem +er so lange von links nach rechts durch die Liste geht und benachbarte Elemente +vertauscht (falls das linke Element grösser als das rechte ist), bis ein ganzer +Durchgang durch die Liste zu keiner Änderung mehr führt. + +Als Flussdiagramm: + +![](media/0bf179a2c5f431b207fe5c6804bbcfab.jpg) + +**2 Effizienz von Bubblesort** + +**2.1 Anzahl Durchgänge** + +Überlegen Sie sich, wie viele Durchgänge von links nach rechts maximal nötig +sind, um eine Liste mit *n* Elementen zu sortieren. Sortieren Sie folgende Liste +mit dem Bubblesort-Algorithmus und schreiben Sie sämtliche Zwischenschritte auf: + +97 15 33 28 25 11 73 + +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +Wie Sie vermutlich gemerkt haben, genügen *n* Durchgänge. Mit jedem Durchgang +landet mindestens eine der Zahlen an seinem definitivem Platz (es genügen sogar +*n-1* Durchgänge, weil die letzte Zahl keinen Nachbar mehr hat, mit dem sie +vertauscht werden könnte). + +**2.2 Anzahl Vergleichsoperationen** + +In einer Liste mit *n* Zahlen gibt es *n*-1 Paare von benachbarten Zahlen, die +bei einem Durchgang verglichen werden müssen. Und wir haben höchstens *n* +Durchgänge. Somit sind *n*(*n*-1) Vergleichsoperationen maximal nötig. + +Wir können somit sagen, dass es ungefähr *n2* Vergleichsoperationen für eine +Liste mit n Elementen gibt. + +**2.3 Aufwand im besten und im schlechtesten Fall** + +Wenn die Liste bereits sortiert ist, vergleicht der Algorithmus alle *n-1* +benachbarten Zahlenpaare einmal und stellt fest, dass es nichts zu tun gibt. +Damit ist er fertig und es werden keine Zahlen vertauscht. Das ist der beste und +schnellste Fall und benötigt *n-1* Vergleiche und 0 Vertauschungen. + +**2.4 Aufgabe: der schlechteste Fall** + +Überlegen Sie sich die Effizienz im schlechtesten Fall (d.h. wenn eine Liste +absteigend sortiert ist und aufsteigend sortiert werden soll). + +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---| +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + +Lösung: + +Die grösste Zahl steht zu Beginn ganz links und wird im ersten Durchgang in n-1 +Vertauschungen ans rechte Ende der Liste gebracht. Die übrigen Elemente der +Liste wandern einen Platz nach links. Jetzt liegt die zweitgrösste Zahl ganz +links und wird im zweiten Durchgang in n-2 Vertauschungen ans rechte Ende der +Liste links der grössten Zahl verschoben. Usw. + +Das heisst, wir haben: + +*(n-1) + (n-2) + …. + 1 = n(n-1)/2* + +Quelle: ETH-Unterlagen, Stand August 2015 diff --git a/m411/5/AufgabeTask09_HashMap.md b/m411/5/AufgabeTask09_HashMap.md index dbe78ee..4dbe64f 100644 --- a/m411/5/AufgabeTask09_HashMap.md +++ b/m411/5/AufgabeTask09_HashMap.md @@ -2,20 +2,23 @@ Aufgabe/Task: Nr. 09 Thema: HashMaps in Java -Geschätzter Zeitbedarf: 60 min +Geschätzter Zeitbedarf: 60-120 min Aufgabenbeschreibung: Schauen Sie sich zwei der angebotenen Videos über Java HashMap an - - +- [../docs/Videos-Tutorials-Anleitungen](Videos-Tutorials-Anleitungen) + - +- [./HashMapUndRekursion.pdf](HashMapUndRekursion.pdf) +- [./HashMapUndRekursion.pptx](HashMapUndRekursion.pptx) + + + - - .. und bauen Sie in Java eine eigene HashMap nach und geben Sie den Java-Code im -Teams ab. +Teams ab oder zeigen Sie es der Lehrperson. -Bewertung: -Keine, ist aber prüfungsrelevant +Bewertung: Keine, ist aber prüfungsrelevant diff --git a/m411/7/AufgabeTask13_Datastructures_XML_JSON.md b/m411/7/AufgabeTask13_Datastructures_XML_JSON.md index c8081a4..8da15e7 100644 --- a/m411/7/AufgabeTask13_Datastructures_XML_JSON.md +++ b/m411/7/AufgabeTask13_Datastructures_XML_JSON.md @@ -1,12 +1,13 @@ -Aufgabe/Task: Nr. 10 +Aufgabe/Task: Nr. 13 -Thema: Data-Files-Structures -XML & JSON +Thema: Data-Files-Structures, XML, JSON -Geschätzter Zeitbedarf: min + +Geschätzter Zeitbedarf: 120 min Aufgabenbeschreibung: +Bilden Sie sich über den Java-Syntax bezüglich xml und json und probieren Sie es aus. +Gehen Sie dem Dokument [script6_weitereDatenstrukturen_XML_JSON.pdf](./script6_weitereDatenstrukturen_XML_JSON.pdf) nach. -Bewertung: -Keine, ist aber prüfungsrelevant +Bewertung: Keine. diff --git a/m411/7/AufgabeTask15_PageRankAlgo.md b/m411/7/AufgabeTask15_PageRankAlgo.md index 7914859..e03605f 100644 --- a/m411/7/AufgabeTask15_PageRankAlgo.md +++ b/m411/7/AufgabeTask15_PageRankAlgo.md @@ -13,6 +13,6 @@ Erwartet wird etwa eine A4-Seite (in 11 Pt Schrift) -Bewertung: -Keine, ist aber prüfungsrelevant + +Bewertung: Keine