24.03.2015 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!