• Keine Ergebnisse gefunden

Ludwig-Maximilians-Universit¨ at M¨ unchen WS 2014/15

N/A
N/A
Protected

Academic year: 2021

Aktie "Ludwig-Maximilians-Universit¨ at M¨ unchen WS 2014/15"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Ludwig-Maximilians-Universit¨ at M¨ unchen WS 2014/15

Institut f¨ ur Informatik Ubungsblatt 11 ¨

Prof. Dr. R. Hennicker, A. Klarl

Ubungen zu Einf¨ ¨ uhrung in die Informatik:

Programmierung und Software-Entwicklung

Aufgabe 11-1 Rekursion und Terminierung Pr¨ asenz Gegeben ist folgende rekursive Methode zur Berechnung einer Funktion:

1

p u b l i c s t a t i c i n t f ( i n t x ) {

2

i f ( x == 0)

3

return 0;

4

e l s e i f ( x > 0)

5

return f ( x - 2);

6

e l s e

7

return f ( x + 2);

8

}

a) Welcher Wert wird von f f¨ ur die folgenden Funktionsaufrufe berechnet?

f(2), f(8), f(9), f(-1), f(-8), f(-9)

b) Charakterisieren Sie die Menge aller Integerzahlen x, f¨ ur die der Funktionsaufruf f(x) terminiert.

Aufgabe 11-2 T¨ urme von Hanoi Pr¨ asenz

Bei dem Spiel “T¨ urme von Hanoi“ sind drei S¨ aulen A, B und C gegeben. Auf S¨ aule A sind n Scheiben unterschiedlicher Gr¨ oße so aufgesteckt, dass jeweils eine kleinere Scheibe auf einer gr¨ oßeren zu liegen kommt.

Die Aufgabe des Spiels besteht darin, die n Scheiben von A nach C zu transportieren, wobei B als Zwischenlager benutzt werden darf. Spielregel ist, dass nur einzelne Scheiben bewegt werden d¨ urfen und dass nach jedem Einzelschritt niemals eine gr¨ oßere Scheibe auf einer kleineren zu liegen kommt.

In dieser Aufgabe sollen Sie ein Programm mit einer grafischen Benutzeroberfl¨ ache implemen- tieren, welches f¨ ur eine beliebige Zahl n eine L¨ osung des Problems f¨ ur n Scheiben ausgibt. Die Anzahl der Scheiben n soll vom Benutzer frei w¨ ahlbar sein und wie gewohnt durch einen modalen Dialog zu Beginn der Anwendung abgefragt werden.

1

(2)

a) Die grafische Benutzeroberfl¨ ache soll wie folgt aussehen:

Es soll einen Button mit der oben angegebenen Aufschrift geben. Darunter soll der Ausga- bebereich f¨ ur die Protokollierung der Scheibenbewegungen platziert werden. Da die Proto- kollierung aller Schritte relativ lang sein kann, k¨ onnen Sie mit Hilfe der Klassen ScrollPane und ScrollPaneConstants der Swing-Bibliothek dem Ausgabebereich auf folgende Weise eine vertikale Scrollbar hinzuf¨ ugen:

1

J S c r o l l P a n e s c r o l l P a n e = new J S c r o l l P a n e ( a u s g a b e B e r e i c h );

2

s c r o l l P a n e . s e t H o r i z o n t a l S c r o l l B a r P o l i c y (

3

S c r o l l P a n e C o n s t a n t s . H O R I Z O N T A L _ S C R O L L B A R _ N E V E R );

Schreiben Sie eine Klasse HanoiFrame, die die Hauptklasse dieser grafischen Benutzerober- fl¨ ache sein soll und das Fenster erzeugt. Um Ihr Programm ausf¨ uhren zu k¨ onnen, schreiben Sie eine weitere Klasse HanoiFrameMain, die Sie wie gewohnt im gleichen Ordner wie Ihre Klasse HanoiFrame abspeichern.

b) Erweitern Sie Ihre Klasse HanoiFrame um eine Ereignisbehandlung f¨ ur den Button. Wird dieser Button gedr¨ uckt, soll der Benutzer zun¨ achst mit Hilfe der Klasse JOptionPane nach der Anzahl n der zu bewegenden Scheiben gefragt werden. Anschließend sollen die korrekten Scheibenbewegungen zur L¨ osung des Problems der T¨ urme von Hanoi pro- tokolliert werden. Verwenden Sie dazu eine rekursive Methode mit dem Kopf public void hanoi(int scheiben, char quelle, char mitte, char ziel), die beim Aufruf von hanoi(n, ’A’, ’B’, ’C’) die einzelnen Scheibenbewegungen der Reihe nach durch Ausgaben der Form “Scheibe von x nach y“ mit x, y ∈ {A, B, C} im Ausgabebereich pro- tokolliert.

Das folgende Protokoll zeigt eine Ausgabe des gew¨ unschten Programms f¨ ur drei Scheiben:

Scheibe von A nach C Scheibe von A nach B Scheibe von C nach B Scheibe von A nach C Scheibe von B nach A Scheibe von B nach C Scheibe von A nach C

2

(3)

Aufgabe 11-3 T¨ urme von Hanoi Hausaufgabe In dieser Aufgabe soll die Pr¨ asenzaufgabe 11-2 soll erweitert werden, dass auch die Nummer der aktuellen Scheibenbewegung mit ausgegeben wird. Modifizieren Sie das in Aufgabe 11-2 erstellte Programm so, dass die einzelnen Scheibenbewegungen durch Ausgaben der Form “i-ter Schritt:

Scheibe von x nach y“ durchnummeriert werden. Benennen Sie die abzugebenden Klassen mit HanoiFrameH und HanoiFrameHMain.

Das folgende Protokoll zeigt eine Ausgabe des gew¨ unschten Programms f¨ ur 3 Scheiben:

1-ter Schritt: Scheibe von A nach C 2-ter Schritt: Scheibe von A nach B 3-ter Schritt: Scheibe von C nach B 4-ter Schritt: Scheibe von A nach C 5-ter Schritt: Scheibe von B nach A 6-ter Schritt: Scheibe von B nach C 7-ter Schritt: Scheibe von A nach C

Hinweis: Verwenden Sie ein Klassenattribut iterSchritt vom Typ int. Das Attribut ist ent- sprechend der Auswertungsreihenfolge der rekursiven Aufrufe an geeigneter Stelle in der Methode hanoi zu inkrementieren.

Aufgabe 11-4 Rekursion und Iteration Hausaufgabe

Wir betrachten die Funktion log

2

, die f¨ ur jede Integerzahl n ≥ 1 den ganzzahligen Logarithmus zur Basis 2 berechnet, d.h. das Ergebnis ist vom Typ int. Die Funktion log

2

ist folgendermaßen spezifiziert: F¨ ur alle n ≥ 1 gilt:

2

log2(n)

≤ n < 2

log2(n)+1

Beispielsweise ist:

log

2

(1) = 0,

log

2

(2) = log

2

(3) = 1, log

2

(4) = ... = log

2

(7) = 2, log

2

(8) = ... = log

2

(15) = 3.

Es sollen zwei Methoden, die jeweils die Funktion log

2

implementieren, geschrieben werden:

a) eine nicht-rekursive Methode mit Kopf public static int logiterativ(int n) b) eine rekursive Methode mit Kopf public static double logrek(int n)

c) Schreiben Sie wie ¨ ublich eine Umgebung mit Benutzerschnittstelle, in der Sie beide Me- thoden testen k¨ onnen. Verwenden Sie dabei zwei Buttons, einen zum Testen der iterativen Methode und einen zum Testen der rekursiven Methode.

Besprechung der Pr¨ asenzaufgaben in den ¨ Ubungen vom 17.12.2014 bis zum 24.12.2014. Abgabe der Hausaufgaben bis Mittwoch, 14.01.2015, 14:00 Uhr ¨ uber UniworX (siehe Folien der ersten Zentral¨ ubung). Erstellen Sie zu jeder Aufgabe Klassen, die die Namen tragen, die in der Aufgabe gefordert sind. Geben Sie nur die entsprechenden .java-Dateien ab. Wir ben¨ otigen nicht Ihre .class-Dateien.

3

Referenzen

ÄHNLICHE DOKUMENTE

In dieser Aufgabe sollen Sie ein Programm mit einer grafischen Benutzeroberfläche implemen- tieren, welches für eine beliebige Zahl n eine Lösung des Problems für n Scheiben

Im Unterschied zum ersten Teil bewegt sich S jetzt auf einer Kurve die stets senkrecht zum Tangentenvektor der ersten Kurve steht... Da sich Verfolger und Verfolgte quasi aufeinander

(b) Begr¨ unden Sie kurz, warum {¬·} nicht funktional vollst¨ andig ist.. (c) Begr¨ unden Sie kurz, warum {¬·} funktional vollst¨ andig f¨ ur einstellige

Zeigen Sie, dass es zu jeder Formel ϕ eine ¨ aquivalente termreduzierte Formel gibt, dessen Gr¨ oße linear in der Gr¨ oße von ϕ beschr¨ ankt ist..

Zeigen Sie, dass es zu jeder Formel ϕ eine ¨ aquivalente termreduzierte Formel gibt, dessen Gr¨ oße linear in der Gr¨ oße von ϕ beschr¨ ankt ist..

eine Formel- menge Γ eine Eigenschaft des Universum ausdr¨ uckt, wenn f¨ ur jede Menge U gilt: Die Eigenschaft trifft auf U zu gdw.. es ein Modell von

Wenn ja, begr¨ unden Sie dies, wenn nicht, dann geben Sie jeweils ein k an, so dass der Duplikator das Spiel G N,A i n f¨ ur alle i ≤ k, aber der Spoiler das Spiel G N k+1 ,A

Vom Server k ¨onnen ¨uber die Schnitt- stelle Modelle neuer Autos sowie die Fragen f ¨ur die Umfrage abgerufen werden, um diese in dem lokalen Speicher der Car Review Software