Prof. Dr. Franz Schweiggert Abteilung Angewandte
Informationsverarbeitung 25.01.2006
Norbert Heidenbluth Blatt 13
Allgemeine Informatik I für Mathematiker/Wirtschaftsmathematiker
(WS 2005/2006)
Abgabetermin: 01. Februar 2006
Dieses Blatt behandelt nochmals intensiv die Themenbereiche
``Methoden'' und ``zweidimensionale Arrays'', und nebenbei werden
auch rudimentäre HTML-Kenntnisse vermittelt. Das Ablegen von Daten
in einfachen Textdateien, wobei die Datenfelder durch ein spezielles
Zeichen voneinander getrennt sind, ist in der Unix-Welt durchaus üblich
(sogenannte ``Unix-Datenbanken''), sodaß das Aufsplitten, Einlesen und
Verarbeiten derartiger Zeilen eine häufig zu lösende Aufgabe ist.
Kennen Sie ``Die dicken Kinder von Landau'' aus der
Harald-Schmidt-Show? Hier die Titel der ersten fünf Folgen:
- Folge 1:
- ``Mama, noch'n Brot!''
- Folge 2:
- ``Mama, mehr Zucker in's Cola!''
- Folge 3:
- ``Mama, 's Nutella is alle!''
- Folge 4:
- ``Mama, bring ma die Chipse!''
- Folge 5:
- ``Mama, der Papa hat's gegessen!''
Wie kamen wir jetzt darauf? Ach ja: die Anzahl übergewichtiger Kinder
nimmt stetig zu, und immer mehr Ärzte und Kliniken bieten Therapien
und Behandlungen für die Betroffenen an.
Auch Ihr Hausarzt hat die Behandlung übergewichtiger Kinder begonnen,
aber beim Ihrem letzten Besuch dort klagte er Ihnen sein Leid über seine
Patienten-Software. Denn diese speichert alle Untersuchungsdaten zwar
korrekt ab, aber irgendwie nicht so richtig übersichtlich. Und außerdem
sieht sie auch keinerlei Auswertungs- bzw. Statistikfunktionen vor.
Damit Sie auch als Kassenpatient in Zukunft nie mehr länger als 5
Minuten warten müssen, bieten Sie Ihrem Arzt daher an, mit Ihren nun
schon fortgeschrittenen Programmierkenntnissen ein kleines Tool zu
schreiben, das ihm aus den vorliegenden Daten einen tabellarischen
Überblick über alle Patienten gibt und eine minimale statistische
Auswertung erzeugt. Das alles soll in eine HTML-Datei geschrieben werden,
die sich der Arzt dann in seinem Web-Browser ansehen kann.
Konkret stellen Sie sich die Verwendung des Tools wie folgt vor:
Die Aufgabe lautet nun kurz und bündig:
``Schreiben Sie eine solches Programm (in Java) und verbrauchen Sie
dabei mindestens 1.000 Kalorien!''
Für diejenigen, die mit dem Programmieren noch nicht so vertraut sind,
gibt es nachstehend nun einen Vorschlag, wie man diese Aufgabe anpacken
kann. Dieser Vorschlag ist jedoch keinesfalls bindend, so daß jede(r)
auch davon abweichen darf!
- Machen Sie sich zuallererst Gedanken darüber, in welcher
Datenstruktur Sie die Daten (Tabelle) ablegen möchten. Da wir
bislang eigentlich nur zwei solche Strukturen kennen (wobei die
eine sogar noch ein Spezialfall der anderen ist) fällt die
Entscheidung sicherlich nicht allzuschwer!
- Skizzieren Sie auf einem Blatt Papier, wie die Ablauflogik Ihres
Programms aussehen soll (Einlesen, Berechnungen durchführen,
Ausgeben, etc.)
- Um das Programm übersichtlich zu halten, sollten Sie nach
Möglichkeit Methoden verwenden. Überlegen Sie sich daher,
für welche Funktionalitäten Methoden hilfreich und sinnvoll
sein könnten.
- Überlegen Sie für jede dieser Methoden, welche Eingabeparameter
sie benötigen (ggf. auch keine) und ob ein Rückgabewert
(wenn ja: von welchem Typ?) geliefert werden soll.
- Das alles war nur die Vorbereitung und setzte noch keinerlei
Programmieren voraus. Bis hierhin sollten Sie in der Gruppe gearbeitet
haben.
Wenn diese Schritte sorgfältig erledigt worden sind, besteht
der Rest der Aufgabe nun ``nur noch'' darin, die Funktionalitäten
zu implementieren, und dies kann man nun in der Gruppe aufteilen.
- Der Vorteil bei der Verwendung von Methoden ist auch folgender:
man kann (bei ``geschicktem'' Programmieren) jede Methode unabhängig
vom Rest des Programms testen, indem man eine passende Eingabe
liefert und das Verhalten der Methode beobachtet. Liefert sie das
erwartete Ergebnis, hat man das erste Puzzle-Teil des kompletten
Programms fertig.
- Somit besteht das Hauptprogramm nach Möglichkeit lediglich aus
dem Aufruf der einzelnen Methoden.
- Mit unseren momentanen Kenntnissen können wir in einem Array
nur Variablen vom gleichen Typ verwenden. Falls Sie sich zuvor
für die Verwendung eines zweidimensionalen Arrays entschieden
haben sollten1, so
bietet sich nur die Verwendung des Typs String an (wegen der
Patienten-Namen). Die Zahlenwerte müssen daher für Berechnungen
zunächst in ein entsprechendes Format (z.B. double)
konvertiert werden. Wie dies funktioniert, wird in den Übungen
vorgeführt.
- Zum ``Zerlegen'' der Zeilen beim Einlesen eignet sich die Methode
split aus der Klasse String. Auch hierzu erhalten
Sie in den Übungen ein Beispiel.
- Sie können für diese Aufgabe davon ausgehen, daß die eingehenden
Datenzeilen korrekt und vollständig vorliegen.
- Außerdem können Sie eine Obergrenze für die Anzahl von Datensätzen
(z.B. 200) annehmen.
- Achten Sie aber darauf, daß die Ausgabe auf die tatsächliche Anzahl
eingelesener Datensätze beschränkt ist.
- Um Ihr Programm zu testen, finden Sie auf unserem FTP-Server eine
Datei mit Beispieldaten.
- Beachten Sie, daß als Dezimaltrennzeichen der Punkt (``.'')
und nicht das Komma (``,'') verwendet wird.
- Die benötigten (minimalen) HTML-Kenntnisse erhalten Sie einerseits
in den Übungen, andererseits liegt auf unserem FTP-Server aber
bereits eine Beispielausgabe, an der Sie sich orientieren können / sollen / müssen.
- Auch diesmal gibt es nicht ``die eine'' Lösung, sondern es sind
mehrere Ansätze denkbar.
Viel Erfolg!
Fußnoten
- ... sollten1
- Kleiner Wink mit dem Zaunpfahl ;-)
Norbert Heidenbluth
2006-01-25