Eprog - Geleitete Uebungsgruppen 2008/09

  1. Einfuehrung in das System, Hello World

    Linux, Laborumgebung, Bash, Java-Installation. ein erstes Programm.

    Was man nicht machen sollte...

    Man liest sehr viel was man machen koennte und mache Sachen hoeren sich auch plausibel an, aber bitte folgende Sachen beachten, sie sind wichtig fuer die Qualitaet und in spaeterer Folge fuer das Finden von Fehlern:
  2. Zahlen, Bedingungen, Schleifen, Arrays

    Definitiv viel.

    Einige Uebungsaufgaben

    Mit Schleifen und if kann man schon so ziemlich jedes Problem loesen. Die folgenden Uebungsaufgaben sind keine Voraussetzung um Eprog zu schaffen, einige sind sehr schwer: Man kann auch Arrays von Arrays erstellen: double[][] matrix = new double[3][3]; erstellt eine 3x3-Matrix. Und bei Matrizen gibt es einen nahezu unerschoepflichen Fundus an Uebungsbeispielen (sind aber schwer und aufwendig):

    Zune-Bug

    Und eine praxisrelevante Aufgabe: Am 31. Dezember 2008 liessen sich die Zune-MP3-Player von MS nicht starten. Der Grund war folgender Programmcode, der die aktuelle Jahreszahl ermitteln soll und der beim Start des Zunes ausgefuehrt wird. Aufgabe: Warum liessen die Zunes nicht starten? An welchen weiteren Tagen tritt das Problem noch auf? Wie laesst sich der Fehler korrigieren?
    boolean isLeapYear(int year) {
        // Gibt true zurueck, wenn year ein Schaltjahr ist, ansonsten false.
    }
    
    // ...
    year = 1980
    // days = Tage vergangen seit dem 1.1. 1980
    
    while (days > 365) {
        if (isLeapYear(year)) {
            if (days > 366) {
                days -= 366;
                year += 1;
            }
        } else {
            days -= 365;
            year += 1;
        }
    }
    
    Quelle: Zune bug explained in detail
  3. OOP: Eigene Objekte erstellen

    Weitere Aufgaben zum ueben:

  4. Algorithmik: Sortieren und Rekursion

    Btw. in der Testwoche gibt es keine Stunde, also am 28. 11. entfaellt die Stunde. Anregungen fuer Uebungswillige findet ihr im Source Code.
  5. Testvorbereitung

    Ich habe hier mal die besten Loesungen vom Freitag zusammengestellt. Sorry die Verspaetung. Test Beispiele
  6. Collections: Dynamische Datenstrukturen

    Fokus hier auf LinkedList, TreeSet und TreeMap. Beides praktische und nette Sachen.
  7. Vererbung, Polymorphismus, Interfaces/Schnittstellen

    Und finally wie sollte ein Object mit equals und hashCode aussehen: Ein einfaches Zahlenobjekt. Siehe dazu auch How to avoid traps and correctly override methods from java.lang.Object
  8. Nochmals Algorithmen und Datenstrukturen: Dynamische Datenstrukturen selber schreiben

    Eine verkettete Liste mit einem Iterator
  9. Graphische Oberflaechen

    Braucht man zwar nicht fuer Eprog, ist aber trotzdem nett und wir werden etwas sehr ansehnliches machen, wer "vorlesen" moechte: