Java Programmierung
  Literatur
Übungsaufgaben:  Mit Lösungshinweisen

Gebiet-Index
 Ubg.1   Wirtschaftswissenschaften
 Ubg.1.1    Optimierung und Simulation
 Ubg.1.2    Sonstige kommerzielle Anwendungen
 Ubg.2   Informatik
 Ubg.2.1    Informationstechnologie
 Ubg.2.2    Ordnen und Sortieren 
 Ubg.2.3    Backtracking 
 Ubg.2.4    Sonstige Informatik-Anwendungen
 Ubg.3   Mathematik
 Ubg.3.1    Statistik und Kombinatorik
 Ubg.3.2    Sonstige mathematische Verfahren
 Ubg.4   Textverarbeitung und Graphik
 Ubg.5   Datenbanken
 Ubg.6   Sonstiges
  Die Übungsaufgaben sind nach Gebieten geordnet, mit ihrem Schwierigkeitsgrad l=leicht, m=mittel, s=schwer, ss=sehr_schwer gekennzeichnet und mit Hinweisen auf Aufgaben im Skript versehen.

Ubg.1    Wirtschaftswissenschaften

Ubg.1.1  Optimierung und Simulation

"Geldbetrag-Auszahlung" 
  l   Auszahlung eines beliebigen Geldbetrages mit möglichst
      wenig Scheinen und Münzen (5.3), z.B. in double
      EUR={500,200,100,50,20,10,5,2,1,.5,.2,.1,.05,.02,.01};
      mit Korrektur eines maximalen Rundungsfehlers von 0.01.
"Verfolgungsfahrt"
  m   Nach welcher Zeit überholt Fahrer A (Geschwindigkeit a)
      den Fahrer B (Geschwindigkeit b), wenn sie mit 1/2 Runde
      (Länge R) Abstand gleichzeitig starten?
"Abzählspiel" (nach Josephus Flavius)
  m   Aus einer Reihe (6.3) von im Kreis stehenden Personen wird
      durch Abzählen jede m-te Person ausgeschieden und nicht
      mehr mitgerechnet, d.h. count[i]=false; . Welche Person
      bleibt übrig ? Durch Gleichsetzung i=i%Reihe.length wird
      die Reihe zum geschlossenen Kreis. Als Alternative zur
      Simulation ist auch eine geschlossene Formel angebbar.
"Transit von Individuen durch Stationen"
  ss  Simulation paralleler Prozesse, z.B.
      Kunden an Schaltern, Individuen in Grippe-Stadien,
      Flugzeuge auf Flughafen-Holdings, Schiffe in Häfen,
      Autos im Automobilwerk, Verkehr auf Straßen.
"Simplex"
  ss  Lineare Optimierung nach dem Simplex-Verfahren.

Ubg.1.2  Sonstige kommerzielle Anwendungen

"Kapitalvermehrung"
  l   Heutiges Endkapital E(p) (z.B. Zins p=0.1 %)
      für 1 Cent angelegt am 1.1.1 (Anfang christlicher Zeit). 
"Abschreibungsplan"
  l   Bis zur Amortisation, degressiv oder linear.
"KFZ-Verbrauchsabrechnung"
  m   mit Fahrt- und Instandhaltungskosten.
"Werbungskosten und Sonderausgaben"
  ss  Einkommensteuererklärung (9.1.4) mit Berücksichtigung der
      Werbungskosten und Sonderausgaben.

Ubg.2    Informatik                

Ubg.2.1  Informationstechnologie

"Menu mit Fenster" 
  m   Als Applet (14.1.4) oder als Applikation (3.4).
"Applet in HTML"
  m   HTML-Dokuent (13.1.2) mit Java-Applet (14.1.1).

Ubg.2.2 Ordnen und Sortieren  

Hash-Sortier-Verfahren, ca. n Vergleiche, hoher Speicherbedarf,
         vgl. java.util.Hashtable<K,V> :
  m   "Sortieren durch Spreizung" 
         Ordnungstreue Abbildung auf ein endliches ganzzahliges
         Intervall und Auszählen der Häufigkeiten.
Binäre Sortier-Verfahren, ca. n*log(n) Vergleiche,
         vgl. MergeSort (6.4) :
  ss a) "BinBubbleSort" (Shell 1950)
         Nichtrekursiver Distanz-Nachbar Tausch über fortlaufend
         halbierte Distanzen, mit Nachbessern nach links, oder
  ss b) "QuickSort" (Hoare 1960)
         Rekursives Aufteilen in  kleinere, mittlere und
         größere Elemente, endend mit Einermengen, oder
  ss c) "HeapSort" (Williams 1964)
         Rekursiver Aufbau eines geordneten binären Baums und
         rekursive Ausgabe durch Links-vor-Rechts Traversierung.

Ubg.2.3  Backtracking                      

"Geldbetrag-Varianten"
  s   Alle Auszahlungsmöglichkeiten eines Geldbetrags in
      Scheinen und Münzen.
"Labyrinth"
  ss  Alle Wege vom Start zum Ziel.
      vgl. Feldmann: "Strukturiertes Programmieren in C" (1994)
"Travelling Salesman"
  ss  Kürzeste Rundreise durch n Städte,
      vgl. Feldmann: "Strukturiertes Programmieren in C" (1994)
      ISBN 3-528-05204-X .
"8-Damen-Problem"
  ss  8 Damen auf dem Schachbrett, die sich nicht bedrohen.

"Springer-Rundreise"
  ss  Springer besucht in einer Rundreise alle Felder auf dem
      Schachbrett. 180°-Symmetrie schränkt die Anzahl der 
      Lösungen ein und beschleunigt das Verfahren.

Ubg.2.4  Sonstige Informatik-Anwendungen  

"Life" (Conway 1967)
  m   Individuen '*' in einem ebenen quadratischen Gitter-Netz
      (6.3) aus Punkten '.' mit je 8 Nachbarpunkten werden

        # geboren, wenn 3 Nachbarindividuen existieren, und
        # überleben, wenn 2 oder 3 Nachbarindividuen existieren.

      Durch Gleichsetzung i=i%Gitter.length, j=j%Gitter.length
      wird das Gitter zum Torus ("Autoreifen").

"Polnische (Lukasiewicz-) Notation"
  ss  Konvertierung von Formeln aus Infix- in Präfix-Notation,
      z.B. (a+b)*c in *+abc .

Ubg.3    Mathematik                

Ubg.3.1  Statistik und Kombinatorik                

"Korrelationskoeffizient" r
  m   Berechnung aus (x1,..,xn), (y1,..,yn),
      Mittelwert m und mittlerer Streuung s:
                                 ,---------------------,
                   n            -|         n
      mx = 1/n * Summe xk,  sx = | 1/n * Summe (xk-mx)² ,
                  k=1                     k=1

                          n
      r = 1/(n*sx*sy) * Summe (xk-mx)*(yk-my), n>=2 .
                         k=1
"Häufigkeit von Zeichen" 
  m   in Texten (häufigste Buchstaben in Deutsch "enristdha") .
"Fußballmeisterschaft"
  s   Jeder Verein spielt gegen jeden anderen genau einmal;
      ein Sieg gibt 2 Punkte, ein Unentschieden 1 Punkt;
      bei Punktgleichheit entscheiden die Tordifferenzen aller
      geschossenen und erhaltenen Tore; sind auch die gleich,
      so ergeben sich gleiche Plazierungen.
"Sitzverteilung"
  s  a) d'Hondt'sches Höchstzahlverfahren oder
  s  b) andere Verfahren zur Auszählung von Sitzverteilungen aus
         Stimmmverteilungen.
"Monte Carlo Methode"
  s   Z.B. Bestimmung von pi/4 durch Bildung von Zufallszahlen-
      paaren (0,0)<=(a,b)<=(1,1) und Division durch Anzahl
      günstiger Fälle f(a,b) = a*a+b*b-1 <= 0 (im Viertelkreis)
      durch Anzahl aller Fälle (im Quadrat).

Ubg.3.2  Sonstige mathematische Verfahren

"Primzahl-Teppich" 
      (5.3.1) nur für ungerade Zahlen: 
  l  a) Primzahl-Vorkommen < 5 000 notiert mit 'P' für
         "Primzahl" und mit '.' für "keine Primzahl", oder
  l  b) Primzahlzwilling-Vorkommen < 10 000 notiert mit 'Z' für
         "Zwilling" und mit '.' für "kein Zwilling".
         Primzahlzwillinge sind (2,3),(3,5),(5,7),(11,13),...
"Quadratische Gleichung"
  m   x*x+p*x+q=0 (p,q reell, Lösungen x1,x2 ggf. komplex).
"Mehrfache Quersumme"
  s   einer natürlichen Zahl, z.B. sumMehr(99)=9,
      z.B. rekursiv: sumQuer(n)=sumQuer(n/10)+n%10 für n>9 .
"Lineares Gleichungssystem"
  s  a) Lösung nach Gauß oder
  s  b) zusätzlich mit Pivot-Suche oder
  s  c) nach einem Iterationsverfahren.

Ubg.4    Textverarbeitung und Graphik

"Visitenkarte mit Rand"
  l  a) mit System.out.print() (9.1.2) und CP850-Zeichen (2.3)
         oder
  m  b) mit g.drawRect(,,,), g.drawString(,,) und Unicode-Zeichen
         (14.1.1) oder
  m  c) mit <table border=... width=...>...</table> in HTML
         (13.1.4).
"Morsen"
  m   Text wird Morse-Schrift oder umgekehrt.
"Beleuchtete Kugel"
  m   Beleuchtungseffekt durch kleiner werdende versetzte
      gefüllte Kreise in heller werdenden Graustufen.
"Verkehrsampel"
  m   Einschaltbare Rot-Gelb-Grün Ampel mit Wartezeiten.
"Linien-Schriftzug"
  s   Mausklick-Punkte werden durch Linien zu einem Schriftzug
      verbunden (14.1.2)
"Graphik" 
  m  a) einfache Darstellungen (1.2.2) oder
  s  b) zweidimensionale Graphik mit Farbgebung (14.1.5), oder
  ss c) "dreidimensionale" Graphik, Schattierung.

Ubg.5    Datenbanken

"Lagerhaltung"
  ss  Applet für ResultSet-Zugriff auf eine DB Lagerhaltung,
      die z.B. in MySQL läuft. Nach SQL-Syntax (15.2)
      mit SELECT, UPDATE, INSERT, DELETE .
"Address-Datenbank"
      z.B. Kundenliste oder Speisekarte
  ss a) mit Aktualisierung (Zugänge, Abgänge) und
  ss b) mit Plausibilitätskontrolle, Tabellen und
  ss c) mit Statistik, Rechnungsstellung.
"Umsätze und Provisionen"
  ss a) mit Umsatz-, Provisions-DB, und 
  ss b) mit Vertreter-DB, Vertriebsgebieten, Vorjahrsergebnis.

Ubg.6    Sonstiges    

"Reaktionszeit"
  m   auf zufallsgesteuerte (graphische) Anzeige.
"Pfänderspiel"
  l   Ausdrucken der nat. Zahlen n von 1 bis 100 (5.3.1)
      ohne Zahlen, die 7 enthalten, d.h. n%10!=7 && n/10!=7 ,
      oder durch 7 teilbar sind, d.h. n%7!=0 .
"Magische Quadrate"
  s   für beliebiges n ungerade, nach de la Loube're (1687):
   ,-----------, 
   | 8 | 1 | 6 | # Beginnend mit 1 im mittleren Feld der ersten  
   |---+---+---|    Zeile zählt man diagonal nach rechts oben.
   | 3 | 5 | 7 | # Falls das Quadrat verlassen wird, denkt man   
   |---+---+---|    sich das Quadrat schachbrettartig angesetzt.                                   
   | 4 | 9 | 2 | # Trifft man auf ein bereits besetztes Feld,  
   '-----------'    zählt man weiter unter dem eigenen Feld.
      Durch Gleichsetzung i=i%Quadrat.length, j=j%Quadrat.length
      wird das Quadrat schachbrettartig angesetzt.

"Sudoku"
  ss  Lösung durch Eliminieren (dem backtracking vorzuziehen).
     -+-------+- # Das 9x9 Sudoku wird nicht mit Einzel-Feldern 
      | 1 2 3 |     notiert, sondern mit 3x3-Feldern aller 
      | 4 5 6 |     zulässigen Ziffern 1..9. 
      | 7 8 9 |  # Der Benutzer klickt auf die jeweils    
     -+-------+-    vorgeschriebene Ziffer.
      Das Programm eliminiert alle zu dieser Ziffer unzulässigen
      Ziffern in Feld, Reihe, Spalte, Block und klickt selbst
      auf alle neu entstandenen 1-Ziffern-Felder. Am Schluss
      sind bis zu einer Lösung i.a. nicht mehr als zwei Versuche
      erforderlich.