Auf dieser Seite finden Sie das Skript, Übungen, Zusatzmaterialien und Programmbeispiele für die Vorlesung.
Kap./Abschn. | Skript | Folien | Inhalt | Version |
---|---|---|---|---|
01 Einführung | 01_Einfuehrung.pdf | Folien zur Vorlesung | Organisatorisches, Einführung: Software-Systeme | |
02 Formale Sprachen | 02_SyntaxSemantik.pdf | Syntax und Semantik von Programmiersprachen | Update [30.11.]: Hinweise zu Fragen, [07.03.] Indentierung in Beispielen verbessert | |
03 Basisdatentypen | 03_BasisDatentypen.pdf | Unser erstes Java Programm, Basisdatentypen, Ausführen und Testen | Update [30.11.]: Hinweise zu Fragen | |
04 Algorithmen | 04_Algorithmus.pdf | 04_Algorithmus.pdf | Eigenschaften von Algorithmen, Variablen und Zustand, Anweisungen | Update [30.11.]: Hinweise zu Fragen |
05 Arrays | 05_Arrays.pdf | 05_Arrays.pdf | Arbeiten mit Arrays, for-Schleife, Simulationen, Lesen und Schreiben auf Ein- und Ausgabeströme | Update [30.11.]: Hinweise zu Fragen |
06 Prozeduren | 06_Prozeduren.pdf | 06_Prozeduren.pdf | Prozeduren deklarieren und verwenden, Gültigkeitsbereiche für Variablen und Parameter, Prozedurinkarnationen | Update [30.11.]: Hinweise zu Fragen |
07 Spezifikation und Testen | 07_Spezifikation_Testen.pdf | 07_Spezifikation_Testen.pdf | Spezifikation von Prozeduren, Vorbedingung, Nachbedingung, Seiteneffekte, JUnit | Update [16.11.]: Fehlerhaftes Bsp. auf S.11 ausgetauscht Update [30.11.]: Hinweise zu Fragen |
08 Rekursion und Terminierung | 08_Terminierung.pdf | 08_Rekursion_Terminierung.pdf | Rekursion vs. Iteration, Terminierung, Abstiegsfunktionen | Update [30.11.]: Hinweise zu Fragen |
09 Objekte | 09_Objekte.pdf | 09_Objekte.pdf | Objekt-Orientierung, Klassifizierungen, Objekte in Java | Update [30.11.]: Hinweise zu Fragen |
10 Klassendeklaration | 10_Klassendeklaration.pdf | 10_Klassendeklaration.pdf | Erstellen von Klassen (Konstruktor, Methode, Attribut), UML-Klassendiagramm | |
11 Listen | 11_Listen.pdf | 11_Listen.pdf | Datenstruktur Liste mit Implementierungen, Kapselung und Information Hiding, Iteratoren | Update[06.12.]: Hinweise zu Fragen, Korrektur von Code-Beispielen |
12 Subtyping | 12_Subtyping.pdf | 12_Subtyping.pdf | Interfaces, Sub-/Supertypen | Update[06.12.]: Korrektur von Code-Beispielen |
13 Bäume | 13_Baeume.pdf | 13_Baeume.pdf | Datenstruktur Baum, Suchbäume, Syntaxbäume, Terminierungsbeweise | |
14 Collections | 14_CollectionsGenerics.pdf | 14_CollectionsGenerics.pdf | Abstrakte Datentypen, Parametrische Polymorphie, Java Collections Framework | [09.01.] Fehler auf Seite 3 (Initialisierung des ArrayStack) + Seite 11 verbessert |
15 Maps | 15_Maps.pdf | 15_Maps.pdf | Maps, Hashing, Gleichheit von Objekten | Update[21.12.]: Hinweise zu Fragen und Korrektur von Code-Beispiel, [08.01.] Korrektur Code-Beispiel S.3, [10.01.] CodeBeispiel TreeNode S. 5 |
16 Vererbung | 16_Vererbung.pdf | 16_Vererbung.pdf | Vererbung von Methoden und Attributen, abstrakte Klassen | Update[21.01.] Hinweise zu Fragen sowie diverse Rechtschreibfehler |
17 Typhierarchien | 17_Typhierarchien.pdf | 17_Typhierarchien.pdf | Modellierung von Typhierarchien, Exceptions, Klassenmethoden und -attribute | Update[21.01.]: Hinweise zu Fragen |
18 Streams | 18_Streams.pdf | 18_Streams.pdf | Eingabe und Ausgabe mit Dateien, Streams, JSON | Update[19.12.]: Beispiel Gson mit Writer/Reader behoben |
19 Pakete | 19_Pakete.pdf | 19_Pakete.pdf | Modularisierung durch Pakete | Update[21.01.]: Beispiele zu Sichtbarkeiten + Hinweise zu Fragen |
20 Einführung in C | 20_Einfuehrung_C.pdf | siehe Abschnitt 21 | Einführung in C | |
21 Speichermanagement | 21_Funktionen_Speichermanagement.pdf | 21_Funktionen_Speichermanagement.pdf | Funktionen, Speichermanagement in C, Arrays | Update[23.01.] Tippfehler in free(ptr) Beispiel behoben |
22 Strings und Structs | 22_Strings_Structs.pdf | 22_Strings_Structs.pdf | Verwendung von Strings und Strukturen in C, Heartbleed-Bug | |
23 Speichermanagement | 23_Speichermanagement.pdf | 23_Speichermanagement.pdf | Speicherverwaltung im Vergleich | |
24 Suchen und Sortieren | 24_Sortieren.pdf | 24_Sortieren.pdf 24_Algorithmenanalyse.pdf | Sortieralgorithmen, Binäre Suche | Update[05.02.] Kleinere Korrektur der Indizes bei Ratespiel-Analyse |
25 Programmierparadigmen | 25_Programmierparadigmen.pdf | 25_Programmierparadigmen.pdf | Programmierparadigmen, Funktionale Programmierung, Lambda-Kalkül | Update [06.02.] Ergänzungen im Skript zu den Beispielen |
26 Lambda-Ausdrücke in Java | 26_JavaLambdas.pdf | 26_JavaLambdas.pdf | Streams, Operationen auf Streams mit Lambda-Ausdrücken |
Kap./Abschnitt | Programmtext | Beschreibung | Hinweis |
---|---|---|---|
01 Einführung | MensaWecker.java | MensaWecker Programm | |
04 Algorithmen | Schaltjahr.java Schaltjahr2.java | Schaltjahr Programme | |
04 Algorithmen | Zweierpotenz.java | Zweierpotzenzen ausgeben | |
05 Arrays | Sum.java Primzahlen.java Strings.java Arrayreferenz.java | Programme zu Arrays | |
06 Prozeduren | Mittelwert.java Aufrufbaum.java | Programme zu Prozeduren | |
09 Objekte | ColorSquares.java LuminanceTest.java | ||
10 Klassendeklaration | Entry.javaDate.java CoderDiary.java CoderDiaryApp.java MenschTest.java | ||
11 Listen | IntList.zip IntArrayList.zip | Update[19.12.] IntArrayListVisualizer korrigiert | |
12 Subtyping | ListOfInt.java UniversityManagement.zip | ||
13 Bäume | TreeNode.java BinTree.javaSortedBinTree.javaSortedBinTreeTest.java | ||
14 Collections | GenericList.zip Stack.zipQueue.zip Word.java CollectionsTest.java | ||
15 Maps | Maps.zip Birthdays.zip | [08.01.] Korrektur in TreeMap und MapTests | |
16 Vererbung | GeometrischeFiguren.zip Wetterdaten.zip | ||
17 Typhierarchien | 17_Typhierarchien.zip | Hinweis: Klassen sind z.T. umbenannt, damit es keine Namenskonflikte gibt | |
18 Streams | SearchReplace1.java SearchReplace2.java | Programm zum Suchen und Ersetzen von Strings in Dateien. Variante ohne Streams und mit Streams. | |
19 Pakete | sichtbar.zip | Beispiele für Zugriffsmodifikatoren | |
20 C | 20_C.zip | Code-Beispiele für C | |
24 Sortieren | 24_SuchenSortieren.zip | Implementierung der Sortieralgorithmen, Binäre Suche, Ratespiel |
Die in der Vorlesung und Übung verwendeten Bibliotheken finden Sie hier:
Datei | Beschreibung |
---|---|
StdIn.java | Prozeduren zum Verwenden der Standard-Eingabe |
StdOut.java | Prozeduren zum Verwenden der Standard-Ausgabe |
StdDraw.java | Prozeduren zum Zeichnen |
junitrunner.jar | JUnit-Runner (Anleitung in Kapitel 07, Abschnitt 2.1) |
gson-2.8.2.jar | Gson Bibliothek zum Arbeiten mit JSON (siehe Kapitel 18) |
Nr. | Blatt | LHV | Material | Bemerkungen / Korrekturen |
---|---|---|---|---|
01 | - | Keine Abgabe | ||
02 | Parser.java FemtoParser.java femto-test-eingaben.zip | 30.10. Vorlage Parser.java aktualisiert: In der alten Version wurde typ_int statt typeInt als Name für das Terminalsymbol verwendet. | ||
03 | 07.11. Zu Aufgabe 4 wurde noch ein Hinweis zur Modulo-Operation mit negativen Zahlen eingefügt. | |||
04 | ArraysAndProcedures.java ShowMatrix.java (benötigt StdDraw.java) wahlen.txt wahlen17.txt Bibliotheken: siehe oben | |||
05 | Aufgabe 1: Intersection.java IntersectionTests.java Aufgabe 2: Procs.java Aufgabe 3: Recursion.java Aufgabe 4: Histograms.java klausur.txt Zusatzaufgabe: superpowers.in.txt superpowers.out.txt | 23.11. In Aufgabe 2 wurde eine Datei namens „ProcTests.java“ gefordert, es sollte aber „ProcsTest.java“ sein In Aufgabe 4 bezieht sich ReadStrings.readStrings() auf die in Aufgabe 3 Blatt 4 geschriebene Prozedur. Kopieren Sie die ReadStrings.java zusammen mit StdIn.java und StdOut.java in den gleichen Ordner wie die Datei Histograms.java und kompilieren Sie das Programm mit javac Histograms.java . |
||
06 | Aufgabe 1: StringProcsTests.java Aufgabe 2: PicEditTests.java Picture.java Aufgabe 3: AufzugTests.java IntQueue.java Aufgabe 4: SpreadsheetTest.java | 30.11. Beispiel in Aufgabe 4 korrigiert, Details zum Runden in Aufgabe 3 | ||
07 | Aufgabe 1: DLIntList.java DNode.java Aufgabe 2: Vec2Tests.java Aufgabe 3: carambolage4.zip | 07.12. Neue Version von Gui.java in Carambolage-Vorlage sollte Treiber-Probleme unter Windows beheben 08.12. Neue Version von Gui.java und SEGraphics.java, verhindert Flackern auf manchen Rechnern |
||
08 | Aufgabe 1: Subtyping.java Aufgabe 2: Figures.java FigurenTest.java Aufgabe 4: MonitoringTest.java Aufgabe 5: BinTreeTest.java | 12.12. Freiwillige Zusatzaufgabe zu Aufgabe 2 | ||
09 | Aufgabe 4: StoreTest.java | |||
10 | Aufgabe 2: Grafikeditor.zip Aufgabe 3: femto_parser.zip | |||
PK | Probeklausur | |||
11 | Aufgabe 1: Entry.java DefProg.java Aufgabe 2: Queue.java QueueTest.java Aufgabe 3: Grafikeditor11b.zip gson-2.8.2.jar Aufgabe 4: StringStream.java StringStreamTests.java Aufgabe 5: Installation von C | 19.01. Grafikeditor Vorlage korrigiert (vorherige Version hatte in Gui.java zum Speichern auch einen Lade-Dialog verwendet) | ||
12 | Aufgabe 4: sort.c Aufgabe 6: flatten.c | |||
13 | Aufgabe 2: dict.c Aufgabe 3: linkedlist.c Aufgabe 4: mergesort.c | |||
14p | zur Bearbeitung in der Übung und Vorbereitung auf Blatt 14 | |||
14 | Zu Aufgabe 6: Lambdas.java Zu Aufgabe 7: lambda.zip | 08.02. Klarstellung in Aufgabe 3: α-Konversionen dürfen direkt in einem Schritt durchgeführt werden 10.09. Lösung zu Aufgabe 1 korrigiert (Lambda-Zeichen fehlten) |
||
15 |
Als Hilfestellung zu den Funktionen in der C-Standardbibliothek können Sie C_stdlib.pdf verwenden. Dort sind wichtige Parameter, Beschreibungen der Rückgabewerte sowie wichtige Hinweise zu Randfällen zusammengefasst.
Die Abgabe erfolgt über das Exclaim System. Bei Programmier-Aufgaben sind kompilierbare Java-Dateien abzugeben. Bitte halten Sie Ihren Code lesbar und halten Sie sich an den Java Style Guide für SE1.