• 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 9 ¨

Prof. Dr. R. Hennicker, A. Klarl

Ubungen zu Einf¨ ¨ uhrung in die Informatik:

Programmierung und Software-Entwicklung

Aufgabe 9-1 Erzeugen von Arrays Pr¨ asenz

Gegeben ist folgendes Programm, welches nach verschiedenen Prinzipien Arrays erzeugt. Geben Sie f¨ ur dieses Programm den Zustand des Speichers (Stack und Heap) nach den Zeilen 3, 5, 7, 9 und 15 in grafischer Repr¨ asentation an.

1

p u b l i c c l a s s C r e a t e A r r a y s {

2

p u b l i c s t a t i c void m a i n ( S t r i n g [] a r g s ) {

3

i n t [] a = new i n t [ 3 ] ;

4

f o r ( i n t i = 0; i < a . l e n g t h ; i ++)

5

a [ i ] = 2 * i ;

6

7

i n t [] b = { 1 , 3 };

8

9

i n t [] c = new i n t [ a . l e n g t h + b . l e n g t h ];

10

f o r ( i n t i = 0; i < c . l e n g t h ; i ++) {

11

i f ( i < a . l e n g t h )

12

c [ i ] = a [ i ];

13

e l s e

14

c [ i ] = b [ i - a . l e n g t h ];

15

}

16

}

17

}

Aufgabe 9-2 Erzeugen von Arrays Hausaufgabe

Gegeben ist folgendes Programm, welches nach verschiedenen Prinzipien Arrays erzeugt. Geben Sie f¨ ur dieses Programm den Zustand des Speichers (Stack und Heap) nach den Zeilen 3, 5, 10, und 12 in grafischer Repr¨ asentation an.

1

p u b l i c c l a s s C r e a t e A r r a y s 2 {

2

p u b l i c s t a t i c void m a i n ( S t r i n g [] a r g s ) {

3

char [] a = { ’ A ’ , ’ L ’ , ’ L ’ , ’ E ’ , ’ N ’ , ’ E ’ , ’ U ’ , ’ N ’ , ’ E ’ };

4

5

char [] b = new char[ a . l e n g t h /2 + 1];

6

f o r ( i n t i = 0; i < a . l e n g t h / 2 + 1 ; i ++) {

7

b [ i ] = a [ i + a . l e n g t h / 2 ] ;

8

}

9

b [3] = ’ E ’ ;

10

b [4] = ’ S ’ ;

11

12

char [] c = { ’ G ’ , ’ U ’ , ’ T ’ , ’ E ’ , ’ S ’ };

13

}

14

}

1

(2)

Aufgabe 9-3 Operationen auf Arrays Pr¨ asenz In dieser Aufgabe sollen Sie ein Programm mit einer grafischen Benutzeroberfl¨ ache implemen- tieren, welches verschiedene Operationen auf Arrays zur Verf¨ ugung stellt.

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

Es soll zwei Buttons, einen zum Revertieren eines Arrays und einen zum lexikografischen Vergleich zweier Arrays, geben. Darunter soll ein Ausgabebereich platziert werden, in dem R¨ uckmeldung ¨ uber die Ergebnisse gegeben wird.

Schreiben Sie eine Klasse ArrayFrame, 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 ArrayFrameMain, die Sie wie gewohnt im gleichen Ordner wie Ihre Klasse ArrayFrame abspeichern.

b) Erweitern Sie Ihre Klasse ArrayFrame um eine Ereignisbehandlung f¨ ur den Button zum Revertieren eines Arrays. Wird der Button zum Revertieren eines Arrays gedr¨ uckt, soll der Benutzer zun¨ achst mit Hilfe der Klasse JOptionPane nach dem zu revertierenden int-Array gefragt werden und anschließend dieses int-Array revertiert werden, d.h. die Reihenfolge der Eintr¨ age umgedreht werden. Nach dem Revertieren soll der Benutzer im Ausgabebereich dar¨ uber informiert werden, was seine Eingabe war und was die Ausgabe (d.h. das revertierte Array) ist.

Hinweis: Auf der Vorlesungswebseite finden Sie eine Klasse Konverter.java, mit der Sie in der Methode public static int[] konvertiereZuIntArray(String string) einen Komma-separierten String (ohne Leerzeichen) in ein int-Array konvertieren k¨ onnen (d.h.

die Eingabe 1,2,3 wird konvertiert in ein Array [1,2,3]). Umgekehrt konvertiert die Me- thode public static String konvertiereZuString(int[] intArray) ein int-Array in einen Komma-separierten String.

c) Erweitern Sie Ihre Klasse ArrayFrame um eine Ereignisbehandlung f¨ ur den Button zum lexikografischen Vergleich zweier int-Arrays, die nach Knopfdruck einzulesen sind. Ein int- Array a = [a

1

, ..., a

m

] ist genau dann kleiner als ein int-Array b = [b

1

, ..., b

n

] falls gilt:

• Entweder m < n und f¨ ur alle i = 1, ..., m gilt a

i

= b

i

,

• oder es gibt ein k ∈ N mit k ≤ m und k ≤ n , so dass a

k

< b

k

gilt und f¨ ur alle i ∈ N mit i < k gilt a

i

= b

i

(also z. B. [1, 2, 3] < [1, 3, 1], hier ist k = 2).

Beispielsweise ist das int-Array [1, 2, 8, 7, 3] kleiner als [1, 2, 8, 7, 3, 1], kleiner als [1, 2, 8, 7, 4]

sowie kleiner als [1, 2, 9]. Nach dem lexikografischen Vergleich soll der Benutzer im Aus- gabebereich dar¨ uber informiert werden, was seine Eingabe war und ob das erste Array lexikografisch kleiner als das zweite Array ist.

2

(3)

Aufgabe 9-4 Operationen auf Arrays Hausaufgabe In dieser Aufgabe sollen Sie ein Programm mit einer grafischen Benutzeroberfl¨ ache implemen- tieren, welches die unten beschriebenen Operationen auf Arrays zur Verf¨ ugung stellt.

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

Es soll zwei Buttons, einen zum Mischen zweier int-Arrays und einen zum Teilmengen- test zweier int-Arrays, geben. Darunter soll ein Ausgabebereich platziert werden, in dem R¨ uckmeldung ¨ uber das Mischen und den Teilmengentest gegeben wird.

Schreiben Sie eine Klasse ArrayFrameH, 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 ArrayFrameHMain, die Sie wie gewohnt im gleichen Ordner wie Ihre Klasse ArrayFrameH abspeichern.

b) Erweitern Sie Ihre Klasse ArrayFrameH um eine Ereignisbehandlung f¨ ur den Button zum Mischen zweier int-Arrays. Wird der Button zum Mischen zweier int-Arrays gedr¨ uckt, soll der Benutzer zun¨ achst mit Hilfe der Klasse JOptionPane nach den zu mischenden int- Arrays gefragt werden und anschließend diese int-Arrays gemischt werden, d.h. die Eintr¨ age der beiden Arrays Schritt f¨ ur Schritt durchgegangen und nach dem Reißverschlussverfahren in einem neuen Array mit der Gesamtl¨ ange der beiden Arrays zusammengef¨ ugt werden. Es kann davon ausgegangen werden, dass die beiden Arrays gleich lang sind. Das Mischen der Arrays [0, 2, 4, 6, 8] und [1, 3, 5, 7, 9] ergibt also das Ergebnis [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]. Nach dem Mischen soll der Benutzer im Ausgabebereich ¨ uber seine Eingabe und Ausgabe infor- miert werden.

Hinweis: Verwenden Sie wieder die Klasse Konverter.java mit den beiden Methoden zum Konvertieren.

c) Ein Array a ist eine Teilmenge eines Arrays b, wenn jedes Element von Array a auch im Array b vorkommt. Erweitern Sie Ihre Klasse ArrayFrameH um eine Ereignisbehandlung f¨ ur den Button zum Teilmengentest von int-Arrays. Wird der Button gedr¨ uckt, soll der Be- nutzer zun¨ achst mit Hilfe der Klasse JOptionPane nach dem int-Array a und anschließend nach dem int-Array b gefragt werden. Nach dem Teilmengentest sollen im Ausgabebereich nochmal die beiden Eingabe-Arrays a und b gezeigt werden sowie eine Information, ob das int-Array a Teilmenge des int-Arrays b ist.

Besprechung der Pr¨ asenzaufgaben in den ¨ Ubungen ab 04.12.2014. Abgabe der Hausaufgaben bis Mittwoch, 17.12.2014, 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

(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

Assume for simplicity that a transaction consists just of the amount x of money to be transferred (and ignore account numbers and the like). The amount x is encoded by the group

Exercise 10-2 The RSA hardness assumption states that P (RSA-inv A (n) = 1) ≤ negl(n) for any probilistic polynomial time adversary A. Show that the RSA hardness assumption implies

The distinguisher D is a probabilistic polynomial time algorithm, so it can make at most polynomially many different requests to the oracle function, say with arguments x