Aktuelles
Stand: 12. 2. 2008
Stichworte zum Stoff der Vorlesung, Beispielprogramme und weitere Materialien zur Vorlesung Einstieg in die Informatik mit Java im Wintersemester 2007/2008 des IANM2 werden hier im Laufe der Vorlesung bereitgestellt.
Die Folien sind im PDF-Format, Sie benötigen zur Anzeige ggf. den Acrobat Reader. Neu: alle pdf-Dateien mit Folien zur Vorlesung sind jetzt wesentlich verkleinert - auch die bisher erschienenen. Sie enthalten nicht mehr die Überblendeffekte, sondern nur noch den kompletten Text.
1. (Montag, 22.10.) Einführung
- Inhalt der Vorlesung
- Parallele Veranstaltungen Java und C++
- Organisation des Praktikums
- Was ist Java?
- Geschichte von Java
- Folien zu Einführung
2. (Dienstag, 23.10.) Grundlagen
- Literaturangaben
- Entwicklung eines einfachen Programms unter Linux: Editieren, Übersetzen, Ausführen
- HalloWS07.java
- Übertragung nach Windows: funktioniert ohne neu Übersetzen
- Grundelemente
- Kommentare
- Bezeichner
- Wortsymbole
- weitere Symbole
- Folien zu Grundelemente
- Vordefinierte Datentypen
- Ganze Zahlen
- Gleitkommazahlen
- Weitere Datentypen
- Folien zu Vordefinierte Datentypen
3. (Montag, 29.10.) Einfache Anweisungen
- Programmentwicklung
- Einleitende Beispiele
- Literalkonstanten
- Variablen
- Ausdrücke, insbesondere:
- Ganzahlige Division
- Rest bei Division
- Inkrement- und Dekrementoperatoren
- Zuweisungsoperator
- Mathematische Standardfunktionen
- Folien zu einfachen Ausdrücken
- Anweisungen
- Ausdrucksanweisung, insbesondere Wertzuweisung
- Ausgabe mit println und print, Mehrdeutigkeit von +
- Eingabe mit Scanner
- Folien zu einfachen Anweisungen
4. (Dienstag, 30.10.) Übungen zu einfachen Anweisungen
- Anleitung zu Aufgabenblatt 1
- Bemerkungen zur Lösung einer Gleichung dritter Ordnung
- Wiederholung zu Ausdrücken und Anweisungen
- Beispiel KugelUmfang.java
- Quadratische Gleichung
5. (Montag, 5.11.) Weitere Ausdrücke
- Beispiel quadratische Gleichung, 3. Variante
- QuadGleichung3.java
- Diskussion des Einflusses der Rundungsfehler
- Weitere Ausdrücke
- Vergleichsoperatoren
- kombinierte Zuweisungen
- logische Operatoren
- weitere Operatoren
- Klassifizierung von Operatoren
- Typumwandlungen
- Priorität der Operatoren
- Folien zu weiteren Ausdrücken
- Weitere Anweisungen
- Verbundanweisung
- bedingte Anweisung
- Auswahlanweisung
- for-Schleifen
- while-Schleifen
- do-Schleifen
- break-Anweisung
- continue-Anweisung
- leere Anweisung
- Folien zu weiteren Anweisungen
6. (Dienstag, 6.11.) Übungen zu Anweisungen
- Anleitung zu Aufgabenblatt 2
- Wiederholung zu Ausdrücken und Anweisungen
- Beispiele
- InfDemo2.java Rechnen mit Unendlich
- RandomDemo.java Erzeugen von Zufallszahlen
7. (Montag, 12.11.) Übungen zu Anweisungen, Felder
- Beispielprogramme zu Anweisungen
- Ein elektrotechnisches Experiment: Reihen- und Parallelschaltung von Widerständen
- Realisierung mit do-Schleife: Einlesen bis eine Null kommt ReiheParallel.java
- mit while-Schleife so ähnlich: Einlesen bis eine Null kommt ReiheParallelWhile.java
- mit for-Schleife: Anzahl der Werte vorab eingeben ReiheParallelFor.java
- Ein physikalisches Experiment: BrownscheBewegung.java
- ForDouble5.java for-Schleife mit double-Variable - gefährlich!
- SinTab5.java for-Schleife: verwendet double-Werte, zählt aber mit int-Variable
- Felder
- Vereinbarung von Feldern
- Erzeugen von Feldern
- Zugriff auf Feldkomponenten
- Folien zu Feldern
8. (Dienstag, 13.11.) Übungen zu Feldern
- Felder
- Wiederholung zu Feldern
- Mehrdimensionale Felder
- Felder als Objekte, Referenzen
- Anleitung zu Aufgabenblatt 3
- Datenanalyse: Mittelwert, Streuung
- Wikipedia: Sortieralgorithmen
- Ablauf von Gnomesort an einem Beispiel
- Wikipedia: Kapitalwert
- Beispiele zu Feldern, Sortieren mit Bubble Sort
- Ablauf von Bubble Sort an einem Beispiel
- BUBBLE-4.zip Veranschaulichung zu Bubble Sort
- BubbleSort3.java beliebig viele Zahlen einlesen, sortieren und ausgeben
9. (Montag, 19.11.) Übungen zu Feldern, Effizienz
- Ein Ausflug in die lineare Algebra
- Vektoren als eindimensionale Felder
- Wikipedia: Vektoren
- VekAdd5.java Addition von Vektoren beliebiger Dimension
- VekMul5.java Multiplikation von Vektoren ...
- Matrizen als zweidimensionale Felder
- Wikipedia: Matrizen
- MatAdd5.java Addition von Matrizen beliebiger Dimension
- MatMul5.java Multiplikation von Matrizen ...
- MatVekMul5.java Matrix-Vektor-Multiplikation ...
- Beispiele zum Einsatz von Feldern mit nicht-numerischen Datentypen
- KartenGeben.java Spielkarten zufällig erzeugen
- KartenGeben2.java ... aber jede nur einmal
- Folien zur Effizienz von Algorithmen
10. (Dienstag, 20.11.) Übungen zu Feldern
- Bemerkungen zur Effizienz
- Anleitung zu Aufgabenblatt 4
- Noch etwas lineare Algebra: Berechnung der Determinante
- Wikipedia: Determinante
- Regel von Sarrus
- Vergrößern einer Matrix durch Umkopieren
- Hinweise zur Aufgabe Wärmeleitung
- Beispiele zur grafischen Darstellung einer Matrix
- DrawMatrix.java zeichnet Grafik (enthält fortgeschrittene Sprachelemente, die Sie hier nicht verstehen müssen)
- DrawMatrixTest0.java zeichnet eine Matrix mit Temperaturverlauf
- DrawMatrixTest2.java die Temperaturen schwanken zufällig zwischen zwei Werten
- Bemerkungen zum Programmierstil
- Beispiel zur Analyse von Daten: Minimum, Maximum, arithmetisches Mittel
- Notendurchschnitte.java liest Werte in Feld ein, berechnet Durchschnitt etc. und gibt Ergebnisse aus
11. (Montag, 26.11.) Klassen als Datenstruktur
- Präsentation an Tafel (Beamer defekt)
- Klassen als Datenstruktur
- Beispiele
- Vereinbarung von Klassen
- Erzeugen von Objekten - Instanzen einer Klasse
- Zugriff auf Attribute
- Initialisierung
- Geschachtelte Datentypen
- Konstruktoren
- Referenzen
12. (Dienstag, 27.11.) Klassen als Datenstruktur, Übungen
- Hinweise zu Aufgabenblatt 5
- Wiederholung zu Klassen als Datenstruktur (Beamer)
- Beispiele und Bemerkungen zu Sortieralgorithmen
- Wikipedia: Sortieralgorithmen, Eigenschaften von Sortieralgorithmen, Stabilität
- Wikipedia: Sortieren mit Combsort
- CombSort.java Feld ganzer Zahlen sortieren mit CombSort
- Handy.java Klasse zur Beschreibung eines Handys
- Handy.txt Liste von 10 Handys, zum Einlesen
- CombSortHandyPreis.java Handys nach Preis sortieren mittels CombSort; Ausführen mit: java CombSortHandyPreis <Handy.txt
13. (Montag, 3.12.) Instanzmethoden
- Instanzmethoden
- Definition von Instanzmethoden
- Formale Parameter
- Parameterübergabe, Aufruf einer Instanzmethode
- Referenztypen als Argument
- Zugriffe in einer Instanzmethode
- Folien Instanzmethoden
- Beispiele am Rechner
- CombSortHandyHM.java Handys nach Hersteller und Modell sortieren mittels CombSort; Ausführen mit: java CombSortHandyHM <Handy.txt
14. (Dienstag, 4.12.) Übungen zu Instanzmethoden
- Wiederholung zu Instanzmethoden
- Ergänzungen
- Datenkapselung, Zugriffsrechte
- Überladen von Methoden
- Variable Argumentliste
- Laufanweisung für Felder
- Methode toString()
- Hinweise zu Aufgabenblatt 6
- Beispiele
- Handy2.java Klasse zur Beschreibung eines Handys mit Vergleichsmethode
- CombSortHandyHM2.java Handys nach Hersteller und Modell sortieren mittels CombSort; Ausführen mit: java CombSortHandyHM2 <Handy.txt
- Vorführung Dr Java
15. (Montag, 10.12.) Variablen
- Interaktive Arbeitsweise von Dr Java
- Auswertung von Ausdrücken
- Ausführung von Anweisungen
- Beispiele am Rechner, interaktive Ausführung mit Dr Java
- Prozent.java Einführung in die Prozent- und Zinseszinsrechnung
- ProzentDemo.java Hauptprogramm zu Prozentrechnung
- Name.java Angaben zu einer Person und zu einem Nachfolger (in einem beliebigen Sinn)
- Namensliste.java Hauptprogramm zu Name: es werden verkettete Listen von Bundeskanzlern bzw. Bundespräsidenten aufgebaut und durchlaufen
- Drawing.java Objektorientierte Arbeitsweise bei Zeichnungen; die Klasse Drawing stellt einen Konstruktor und viele Methoden zum Zeichnen bereit
- Variablenarten
- Lokale Variablen
- Formale Parameter
- Instanzvariablen
- Klassenvariablen
- Unterschiede Klassen- und Instanzvariablen
- Initialisierung von Variablen
- Folien Variablenarten
- Einleitung zu Klassenmethoden
16. (Dienstag, 11.12.) Klassenmethoden
- Klassenmethoden
- Besonderheiten von Klassenmethoden
- Aufruf von Klassenmethoden
- Hauptprogrammparameter
- Rekursion
- Folien Klassenmethoden
- Hinweise zum Aufgabenblatt 7
- Einsatz von Klassen- und Instanzvariablen und -methoden
- Wikipedia: Euklidischer Algorithmus
- Hinweise zum Einlesen einer rationalen Zahl
- Rationale Multiplikation als Klassen- oder Instanzmethode
17. (Montag, 17.12.) Schnittstellen
- Beispiele am Rechner zu Klassen- und Instanzkomponenten
- InstanzenZaehlen.java Einsatz von Klassen- und Instanzvariablen
- KlasseOderInstanz.java Gegenseitige Beziehungen zwischen Klassen- und Instanzvariablen
- KlasseOderInstanzMethode.java Gegenseitige Beziehungen zwischen Klassen- und Instanzmethoden
- Beziehungen zwischen Klassen
- Assoziation
- Aggregation, Komposition
- Generalisierung, Vererbung
- Folien Beziehungen zwischen Klassen
- Schnittstellen
- Einführung
- Definition einer Schnittstelle
- Implementierung einer Schnittstelle
- Vergleich zu abstrakten Klassen
- Folien Schnittstellen
- Evaluation der Vorlesung
18. (Dienstag, 18.12.) Übungen zu Schnittstellen
- Hinweise zum (freiwilligen) Programmierprojekt 1: Lösen eines Sudoku
- Wiederholung Schnittstellen
- Hinweise zum Aufgabenblatt
- Beispiel zur Parameterübergabe über die Programmparameter
- ProgrammParameter.java Ausgabe aller Programmparameter, Hinweise zur Anwendung
- Beispiel zur numerischen Integration
- Mathematische Grundlagen zur Trapezregel
- Funktion.java Interface zur Darstellung einer reellen Funktion
- Trapezregel.java Numerische Integration mittels Trapezregel
- Funktion1.java Berechnung von x*x
- Funktion2.java Aufruf der Standardfunktion sin
- FunktionN.java Berechnung von x hoch n
- TrapezregelBeispiel.java Hauptprogramm zum Einlesen der Parameter über die Programmparameter und zur Auswahl der Funktion
- Beispiel zur Datenkompression
- xmas.txcn Dieses merkwürdige File wurde uns zugeschickt - offenbar ist es kodiert
- XmasCode5.java Zum Glück haben wir das Programm entdeckt, mit dem es kodiert wurde. Schreiben Sie ein passendes Dekodierprogramm und entschlüsseln Sie den Inhalt
- Wikipedia: ASCII-Art Das File enthält angeblich ein Bild aus ASCII-Zeichen; hier finden Sie Informationen zu diesem Thema
- Wikipedia: Lauflängenkodierung Ein paar Informationen zum Hintergrund des angewendeten Datenkompressions-Verfahrens
- Evaluation der Übungen und Tutorien
19. (Montag 07.01) Anfangswertprobleme, Polygonzüge
- Wiederholung der bisher behandelten Sprachelemente
- Anfangswertprobleme
- Polygonzüge
- Das Eulersche Polygonzugverfahren
- Folien zur Vorlesung
20. (Dienstag 08.01) Anwendung: Das Diffusionsmodell nach Bass
- Wiederholung: Polygonzüge, Anfangswertprobleme
- Das Diffusionsmodell nach Bass
- Erweiterung des Modells
- Parameteranpassungsproblem (Hinführung auf das Aufgabenblatt 10)
- Folien zur Vorlesung
21. (Montag 14.01) Vererbung
- Präsentation an Tafel (Beamer defekt)
- Wiederholung Klassen und Schnittstellen
- Lösung zur Aufgabe Datenkompression vom 18.12.: XmasDecode5.java
- Grundlagen zu Vererbung
- Beispiel zu Vererbung
- PersonS.java Eigenschaften einer beliebigen Person
- Sportler.java Spezielle Eigenschaften eines Sportlers: Sportart und Bestwert
- Rekordinhaber.java Spezielle Eigenschaften eines Rekordinhabers: Medaillen etc.
- RekordinhaberMain.java Hauptprogramm dazu
- Folien zu Vererbung, Grundlagen
22. (Dienstag 15.01) Übung zu Vererbung
- Präsentation an Tafel (Beamer defekt)
- Besprechung der Evaluation
- Hinweise zum Aufgabenblatt 10
- Wiederholung Vererbung
- Beispiel zu Vererbung
- Punkt2D.java Punkt in der Ebene
- RechteckVererbung.java Rechteck als Punkt mit Breite und Höhe
23. (Montag 21.01) Vererbung
- Klausurmerkblatt, Hinweise zur Klausur
- Präsentation am Overhead-Projektor (Beamer defekt)
- Vererbung, Wiederholung und Ergänzungen
- Verdeckte Variablen
- Verdeckte Methoden, Polymorphie bei Instanzmethoden
- Klassen und final
- Zugriffsrechte und Vererbung
- Abstrakte Methoden und Klassen
- Vergleich zu Schnittstellen
- Folien zu Vererbung, Polymorphie
- Beispiel zu Vererbung
- Haustier.java Basisklasse mit den grundlegenden Eigenschaften, u.a. Sortieralgorithmus
- Hund.java abgeleitete Klasse mit speziellen Eigenschaften für Hunde
- Katze.java abgeleitete Klasse mit speziellen Eigenschaften für Katzen
- HaustierTest1.java Testprogramm, das diverse Haustiere bearbeitet und sortiert
- Rassekatze.java abgeleitete Klasse mit speziellen Eigenschaften für Rassekatzen, u.a. eine neue Methode wert, die beim Sortieren verwendet wird
- HaustierTest2.java Testprogramm, das Rassekatzen bearbeitet und anders als andere Haustiere sortiert (mittels Polymorphie der Methode wert!)
24. (Dienstag 22.01) Übung zu Vererbung, Polymorphie
- Hinweise zum Aufgabenblatt 11
- Beispiel Projektteam, Polymorphie bei toString()
- Beispiel Verhaltensmuster: Modellierung kooperativen / nicht kooperativen Verhaltens mit polymorphen Methoden
- Wiederholung Vererbung, Polymorphie
- Beispiele zu instanceof
- Fahrzeug.java diverse Fahrzeuge ...
- Auto.java
- Pkw.java
- Fahrrad.java
- AutoTest.java Test, welche Klasse vorliegt
- AutoTest2.java weitere Anwendungsmöglichkeiten und Probleme beim Einsatz von instanceof
- Beispiele zur Initialisierung
- InitialisiererStatic.java Initialisierung von Klassenvariablen
- InitialisiererNichtStatic.java Initialisierung von Instanzvariablen (anstelle oder zusätzlich zu Konstruktor)
- Initialisierungen.java Reihenfolge der Anweisungen bei der Initialisierung von Größen
- InitialisierungenErbe.java ... bei abgeleiteten Klassen
25. (Montag 28.01) Ein-Ausgabe mit Streams
- Hüllklassen
- Folien zu Hüllklassen
- StringTokenizer
- Folien zu StringTokenizer
- Ausnahmebehandlung
- Einführung
- Klassenhierarchie
- Try-Catch
- Folien zu Ausnahmen
- Files, Ein-Ausgabe mit Streams
- Einführung
- Klassenhierarchie byteorientierte Ein-/Ausgabe
- Klassenhierarchie textorientierte Ein-/Ausgabe
- Auftretende Probleme
- Folien zu Streams
- Beispiele zu Streams
- BinFileWrite.java schreibt Daten in interner Darstellung auf ein File
- BinFileRead.java liest Daten in interner Darstellung von einem File
- TextFileWrite.java schreibt Daten in Text-Darstellung auf ein File
- TextFileRead.java liest Daten in Text-Darstellung von einem File
- BufferedRW.java liest und schreibt Daten gepuffert, es darf nur eine Zahl in einer Zeile stehen
- BufferedRWTokenizer.java liest und schreibt Daten gepuffert und mit Tokenizer, es dürfen mehrere Zahlen in einer Zeile stehen
- TextFileWriteMatrix.java schreibt eine Matrix auf ein Textfile
- TextFileReadMatrix.java liest eine Matrix von einem Textfile
26. (Dienstag 29.01) Programmierprojekt, Internet-Zugriff, Threads
- Programmierprojekt Ameisen
- Aufgabenblatt 12 mit alten Klausuraufgaben
- Kommunikation via Internet, Beispiele
- TheTimeMain.java liest die Zeit von einem Server in USA
- MiniBrowser.java ruft eine Webseite auf und stellt sie als Text dar
- ChatServer.java, ChatClient.java realisieren ein Chat-Protokoll zwischen zwei entfernten Rechnern (Achtung: der verwendete Port muss ggf. in der Firewall des Betriebssystems freigegeben werden)
- Threads
- Eigenschaften von Threads
- Typisches Thread-Beispiel
- Interface Runnable
- Folien zu Threads
- Beispiele zu Threads
- PingPong.java, Uhrzeit.java Demo-Programme zu Threads
- UhrzeitApplet.java / UhrzeitApplet.html Applet zur Ausgabe der aktuellen Zeit
- Wecker.java Zwei schlafende Threads werden manchmal vorzeitig aufgeweckt
- Ueberweisungen.java Demoprogramm mit 3 Threads, demonstriert Probleme beim unkontrollierten Zugriff mehrerer Threads auf die gleichen Daten; 9 Überweisungen pro Thread pro Sekunde
- Ueberweisungen2.java ebenso, aber Überweisungen werden mit maximaler Geschwindigkeit ausgeführt
- Ueberweisungen6.java verbesserte Version, bei der die Überweisungen synchronisiert werden; dadurch treten keine Unstimmigkeiten mehr auf
27. (Montag 04.02) Java 5
- Beispiele zu Kommunikation via Internet
- MiniBrowser2.java Erweiterung von MiniBrowser, kann Links verfolgen
- Beispiele zu Threads
- MeinThread.java Klasse zu Threads, besitzt leere Methode aktion()
- MeinThreadTest.java erzeugt 2 Threads aus MeinThread, ersetzt die Methode aktion()
- MeinThreadTest2.java erzeugt 2 Threads aus MeinThread, ersetzt die Methode aktion() mit ganz verschiedenen Aktionen
- MeinThreadTestDMT.java Simulation Wärmeleitung mit gesteuertem zeitlichem Ablauf
- MeinThreadTestDMT3.java 4 Threads erzeugen 4 unabhängig blinkende Felder
- Programbeispiele zu den Neuerungen von Java 5 - jeweils zum Vergleich in Java 1.4 und Java 5:
- Eingabe mit Scanner
- Ausgabe mit printf
- Formeln mit static-import
- for-Schleifen
- Variable Argumentlisten
- Hüllklassen: automatische Konversion
- Generische Programmierung
- siehe Ordner java5
28. (Dienstag 05.02) Klausurvorbereitung
- Wiederholung klausurrelevanter Stoff
- Hinweise zur Klausur
- Beispiele zu Klassen, Vererbung und Schnittstellen
- Fasching5.java veranstaltet eine Faschingsparty, die Liste der Gäste können Sie einlesen von Fasching.gaeste
- Punkt.java, Kugel.java, Quader.java demonstrieren den Einsatz von Vererbung bzw. Aggregation
- Fastnachtsumzug ein Fastnachtsumzug wird aus verschiedenen Zugnummern zusammengestellt
29. (Montag 11.02) Klausurbesprechung, Applets
- Besprechung der Klausuraufgaben
- Applets
- Einsatz von Applets
- Abstract Window Toolkit
- Komponenten (Button, Label, ...)
- Ereignisbehandlung
- Folien zu Applets
- Ausblick auf das Sommersemester
30. (Dienstag 12.02) Programmierberatung
- Beratung zu
- Klausurergebnissen
- Stoff der Vorlesung aus dem Wintersemester
- Ausblick auf die Themen des Sommersemesters
Hinweise
Sie dürfen Beispielprogramme und Foliensätze von dieser Seite zum Erlernen der Sprache Java verwenden. D.h. sie dürfen sie (auf eigenes Risiko) kopieren, ausdrucken, ausführen, verändern, erweitern, usw. Eine Veröffentlichung der Programme, z.B. als Aufgabensammlung, bzw. der Folien ist dagegen nicht erlaubt.