Inform. Klaus-Bernd Sch ¨urmann Algor - Universität Bielefeld
Inform. Klaus-Bernd Sch ¨urmann Algor - Universität Bielefeld
Inform. Klaus-Bernd Sch ¨urmann Algor - Universität Bielefeld
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Universität <strong>Bielefeld</strong><br />
Technische Fakultät<br />
AG Genominformatik<br />
Prof. Dr. Jens Stoye<br />
Dipl.-<strong>Inform</strong>. <strong>Klaus</strong>-<strong>Bernd</strong> <strong>Sch</strong>ürmann<br />
<strong>Algor</strong>ithmen und Datenstrukturen II<br />
Sommersemester 2004<br />
Übungen zur Vorlesung<br />
Blatt 11, Abgabe: 09.07.2004<br />
Aufgabe 11.1 - Stack-Rechner (12 Punkte) Implementieren Sie in Java einen kleinen<br />
Rechner, der in ”Umgekehrt-polnischer Notation” (UPN) rechnet. In dieser Notation werden<br />
erst die Operanden angegeben und dann der Operator. Die natürliche Implementierung<br />
verwendet dafür einen Stack (s. Seite 62 des Skripts).<br />
Beispiele:<br />
> java UpnRechner 7 3 x 9 +<br />
Ergebnis: 30<br />
><br />
> java UpnRechner 15 5 /<br />
Ergebnis: 3<br />
><br />
> java UpnRechner 3 4 5 6 - + x<br />
Ergebnis: 9<br />
Da auf dem Java-Stack (java.util.Stack) nur Objekte liegen dürfen, werden die Zahlen<br />
als Integer-Objekte (java.lang.Integer) auf den Stack gelegt. Die Operatoren liegen als<br />
String-Objekte (java.lang.String) auf dem Stack.<br />
1. <strong>Sch</strong>reiben Sie eine Java-Klasse UpnRechner.java, die die Operationen ”+”, ”-”, ”x”<br />
und ”/” behandeln kann. Auf der Web-Seite ist das Grundgerüst dieser Klasse gegeben.<br />
2. Überlegen Sie sich, wo im Programm Fehler behandelt werden sollen, zum Beispiel<br />
falsche Operanden, Operatoren oder Division durch 0.<br />
Aufgabe 11.2 - Kopieren (6 Punkte) Harry Hacker hat wieder einmal programmiert,<br />
ohne genau nachzudenken. Er wollte mit der folgenden Methode einen Stack kopieren (d.h.:<br />
einen neuen Stack mit den gleichen Werten kreieren):<br />
public static Stack copy (Stack stack) {<br />
Stack cpStack = stack;<br />
return cpStack;<br />
}<br />
1. Was hat Harry nicht bedacht? Und wie kann man Harry helfen? <strong>Sch</strong>reiben Sie in Java eine<br />
Methode betterCopy, die den ursprünglichen Gedanken von Harry erfüllt. Ergänzen
Sie ebenfalls eine main-Methode, in der die beiden copy-Methoden aufgerufen werden,<br />
so daß der Unterschied deutlich wird.<br />
2. Implementieren Sie statt der klassenbezogenen Methode betterCopy eine objektbezogene<br />
Methode gleichen Namens, die dasselbe leistet.<br />
Verwenden Sie die Stack-Definition aus dem Skript.<br />
Aufgabe 11.3 - Konstruktoren (6 Punkte) Das Modell eines Walkman soll folgende<br />
Datenfelder enthalten:<br />
idNum: Identifikationsnummer eines Gerätes. (long)<br />
watt: Musikleistung des Walkman. (int)<br />
radio: Enthält es ein integriertes Radio oder nicht? (boolean)<br />
type: Ein String, der die Seriennummer des Walkman enthält. (java.lang.String)<br />
Nehmen Sie an, die Parameter eines Konstruktors dienen nur der Initialisierung der Datenfelder.<br />
1. Wieviele Konstruktoren sind bei 4 Datenfeldern theoretisch möglich (ohne Permutationen<br />
der Parameterliste)? Wieviele sind in diesem Fall möglich?<br />
2. <strong>Sch</strong>reiben Sie eine Klasse Walkman in Java, die für unseren Fall alle möglichen Konstruktoren<br />
zur Erzeugung von Walkman-Geräten enthält. Wird der Konstruktor z.B.<br />
mit nur einem Parameter aufgerufen, sollen die restlichen auf voreingestellte Werte initialisiert<br />
werden.<br />
Denken Sie daran, daß jede Geräteidentifikationsnummer nur einmal vergeben werden<br />
darf; also kann jedes Gerät durch die idNum eindeutig identifiziert werden.<br />
3. Zusatzaufgabe (2 Punkte)<br />
Wieviele Konstruktoren sind bei n Datenfeldern theoretisch möglich, falls<br />
(a) Permutationen der Parameterliste nicht mitgezählt werden,<br />
(b) Permutationen der Parameterliste berücksichtigt werden?<br />
Geben Sie geschlossene Formeln an.<br />
Abgabe der Lösungen zu den Übungsaufgaben: Freitag, 09.07.2004, zu Beginn der Vorlesung.<br />
Beachten Sie, dass die Namen aller Gruppenmitglieder und der Name des Tutors/der Tutorin<br />
auf dem Deckblatt erscheint.<br />
Auf der Web-Seite<br />
http://www.techfak.uni-bielefeld.de/ags/gi/teaching/2004summer/aud2/<br />
finden sich weitere <strong>Inform</strong>ationen zur Vorlesung und zu den Übungen, sowie elektronische<br />
Versionen der Übungsblätter.