Testklausur zur Vorlesung Informatik II Prof. Dr. Nikolaus Wulff Juni 2016
Diese Klausur besteht aus sieben Aufgaben, von denen Sie f¨ unf bearbeiten und l¨ osen m¨ ussen, d.h. maximal f¨ unf richtig gel¨oste Aufgaben entsprechen 100% der Gesamtpunktzahl. 1. Schauen Sie sich daher die Aufgaben zun¨achst in Ruhe an und w¨ahlen Sie dann die Aufgaben, die Ihnen am leichtesten erscheinen. 2. Sofern Sie mehr als f¨ unf Aufgaben abgeben, werden die f¨ unf schlechtesten Aufgaben bewertet. 3. Schreiben Sie auf jedes L¨osungsblatt Ihren Namen und zu welcher Aufgabe es geh¨ ort. Nummerieren Sie die L¨osungsbl¨atter durch. 4. Kommentieren Sie ihre Programmlistings, schreiben Sie leserlich, Hieroglyphen werden nicht gewertet. 5. Geben Sie Gedanken- und Zwischenschritte explizit an. Reine Endergebnisse ohne L¨ osungsweg gelten als T¨ auschungsversuch. 6. F¨ ur diese Klausur sind als Hilfsmittel • ein Lineal f¨ ur saubere Zeichnungen oder zum eventuellen Durchstreichen, • sowie ein selbst beschriebener “Merkzettel“ DIN A4 zugelassen. 7. Sie haben zum Bearbeiten der Aufgaben 120 Minuten Zeit. Viel Erfolg!
Aufgabe 1 2 3 4 5 6 7 Punkte 1
class MyListener implements ActionListener { public void actionPerformed(ActionEvent evt) { // macht doch was ihr wollt... } } public class SimpleGUI { private JFrame fenster = new JFrame("Java Beispiel"); private JButton knopf = new JButton("Press Me"); public SimpleGUI() { knopf.addActionListener(new MyListener()); fenster.add(knopf,BorderLayout.CENTER); fenster.setVisble(true); } public static void main(String[] args) { SimpleGUI app = new SimpleGUI(); } } Netzadr. = Geraetenr. = Broadcast =
IP & Maske IP & !Maske Netzadr. | !Maske
Html Beispiel Achtung Html Seiten sollen immer wohlgeformt sein. Type
Tag
Verweis ¨ Uberschrift Zeilenumbruch Horiz. Linie Liste Listeintrag Tabelle Tabellen¨ uberschrift Tabelleneintrag Tabellenreihe Ebene
gehe zu ..., ...., ...
... , ..., ... ... , ...... ... ... ... ... ...
bundespraesidenten (bundespraesident+)> name (titel*, vorname, nachname)> titel (#PCDATA)> amtsperiode EMPTY> amtsperiode von CDATA #REQUIRED
> CREATE SELECT UPDATE INSERT
TABLE xyz (x integer not null PRIMARY KEY, y char(2) ... ) x,y FROM xyz WHERE xyz.u=... xyz SET ... WHERE name=’Kai’ INTO xyz (id, name,...) VALUES (1,’Tom’,...);
1
Netzwerke A:B:C:D:E:1
A
C A:B:C:D:E:2
R A:B:C:D:E:3
B
D
174.168.3.0
174.168.3.192
Abbildung 1: Schematische Netzwerkdarstellung. Die Rechner A,B,C und D befinden sich wie in Abbildung 1 abgebildet in den Netzen 174.168.3.0 und 174.168.3.192, die mit dem Router R als Default Gateway verbunden sind, ebenfalls eingetragen sind die fiktiven MAC Addressen von A, D und R. Die Netzwerkmaske in beiden Netzen lautet 255.255.255.192. Da es noch weitere nicht abgebildete Subnetzwerke gibt, hat der Netzwerkadminstrator als einfache Regel gesetzt: • Broadcast Addresse: Die jeweils h¨ochste Subnetzwerk Addresse • Gateway Addresse: Die Broadcast Addresse - 1 Host A und B, bzw. C und D sind jeweils fortlaufend in ihrem jeweiligen Netzwerksegment durchnumeriert, d.h. A hat die IP Addresse 174.168.3.1, B hat 174.168.3.2 etc.
Aufgabe • Welche beiden IP Addressen hat das Gateway R? • Host A schickt ein IP Paket an Host D. Welche IP und MAC Addresse wird D als Absender vorfinden? • Host D schickt eine Antwort an Host A. Welche IP und MAC Addresse wird A als Absender vorfinden?
1
2
Swing Logon-Panel
Benutzer Passwort OK
Cancel
Abbildung 2: Schematische Skizze des Logon-Formulars. Erstellen Sie f¨ ur eine Java Swing Anwendung ein Formular zum Anmelden eines Benutzers, wie in Abbildung 2 skizziert. Das Anmeldeformular soll als wiederverwendbare Komponente mit einem JPanel entwickelt werden. Es beinhaltet zwei JLabels mit dem Text ”Benutzer” und ”Passwort”, sowie zwei zugeh¨orige Eingabefelder vom Typ JTextField bzw. JPasswordField, letzters zeigt die Benutzereingaben nur als Punkte/Sternchen an. Ferner sollen zwei JButtons ”OK” und ”Cancel” vorhanden sein. Das Bet¨atigen des ”Cancel”-Knopfes l¨oscht die Eingaben, beim Bet¨ atigen des ”OK”-Knopfes soll eine Ausgabe der Feldinhalte auf die Konsole erfolgen.
Tip Registieren Sie an den jeweiligen Widgets einen geeigneten ActionListener mit entsprechender actionPerformed-Methode. Zum Ausrichten der Widgets reicht ein einfaches GridLayout mit starem Gitter aus.
3
Unix Tail Utitlity
Entwickeln Sie das Tail Utility in Java. Das Programm gibt die letzten n Zeilen (Vorgabe n = 10) einer Quelldatei auf der Konsole aus. • Tail wertet die Kommandozeilenargumente aus: – -s datei: u ¨bergibt den Namen der Eingabedatei – -l n: u ¨bergibt die Anzahl an Zeilen • Bei einem Aufruf ohne Argumente, beendet sich das Programm mit der Ausgabe usage: Tail -s dateiname -l n.
Tip Verwenden Sie zum Lesen der Datei die Java Klassen aus dem java.io-Paket, hier insbesondere FileReader und LineNumberReader, letztere Klasse bietet mit der Methode readLine() die M¨oglichkeit eine Textdatei Zeile f¨ ur Zeile auszulesen. Die letzten n Zeilen der Datei lassen sich am Einfachsten in einer ArrayList als Puffer verwalten. 2
4 1 2 3
Minkowski Raum
public class FourVector { // attributes missing .... private ...
4
public FourVector add(FourVector y) { // implement me return ... } public double multiply(FourVector y) { // implement me return ... }
5 6 7 8 9 10 11 12 13
}
Listing 1: Auszug aus der Java Klasse FourVector. Vierervektoren x im Minkowski-Raum M4 bestehen aus vier reelen Koordinaten x ≡ (x0 , x1 , x2 , x3 ) ∈ R4 , wobei ~x ≡ (x1 , x2 , x3 ) ∈ R3 als ”normale dreidimensionale Raumkoordinaten” und x0 ≡ ct als Zeitkoordinate interpretiert wird. Addition und Subtraktion zweier Vierervektoren x und y erfolgen komponentenweise, das Skalarprodukt erfordert eine Sonderbehandlung der Zeitkomponente: x±y x·y
(x0 ± y0 , x1 ± y1 , x2 ± y2 , x3 ± y3 )
:=
(1)
:= x1 y1 + x2 y2 + x3 y3 − x0 y0 = ~x · ~y − x0 y0
(2)
Die Definition (2) entspricht der Einsteinschen nichteuklidischen Geometrie. Modellieren Sie die Java Klasse FourVector, wie im Listing 1 angedeutet mit geeignet ausgepr¨ agten Feldern und Methoden f¨ ur die Operationen + und ∗.
5
Messreihen vereinigen Spannung p 1 2 3 4 5
U 8.40 7.83 9.12 3.35 2.78
Frequenz p 1 2 3 4 5
Messwert
f 1039.438 1079.844 1019.755 1076.823 1055.397
=⇒
p 1 2 3 4 5
U 8.40 7.83 9.12 3.35 2.78
f 1039.438 1079.844 1019.755 1076.823 1055.397
Abbildung 3: Auszug der Tabellen Spannug und Frequenz, sowie die davon abgeleitete View Messwert. Sie haben f¨ ur Ihr Praktikum mehrere umfangreiche Messreihen aufgenommen und deren Ergebnisse in den zwei Tabellen Spannung und Frequenz eines relationallen RDBMS abgelegt wie in Abbildung 3 abgebildet. In der ersten Spalte haben Sie jeweils mit dem Bezeichner ”p” den Messpunkt eingetragen und dann die Spannung ”U”, bzw. die Frequenz ”f”.
3
Aufgabe Diese Trennung in zwei Tabellen erweist sich nachtr¨aglich als sehr ungeschickt. • Formulieren Sie eine select-Anweisung, um die Messwerte zu vereinen, so dass die Spannungen mit den zugeh¨origen Frequenzen assoziiert werden. • Erstellen Sie mit Hilfe dieser select-Anweisung die View Messwert. • Formulieren Sie eine Abfrage zum Ermitteln aller Messwerte mit einer Frequenz f > 1050.
6
HTML-Template head
menu
content
footer 20%
80%
Abbildung 4: Schematisches Template einer HTML-Seite. Sie entwickeln f¨ ur einen Web-Auftritt eine HTML-Template als Mustervorlage. Zum Layout der vier Bereiche head, menu, content und footer verwenden Sie eine visuell nicht sichtbare Blindtabelle.
Aufgabe • Erstellen Sie eine HTML Tabelle, die dem Layout 4 entspricht. • Beachten Sie die relativen Gr¨oßenangaben, die eingehalten werden sollen. • In die jeweiligen Datenfelder setzen Sie ein -Tag, dessen id-Attribut Sie zur Kennzeichnung den Namen des jeweiligen Bereichs geben.
Tip Einige Tabellenbereiche erstrecken sich u ¨ber mehrere Zeilen oder Spalten. Denken Sie daran wohlformatiertes HTML zu verwenden, d.h. alle Elemente zu beenden und richtig zu verschachteln.
4
7 1 2 3 4 5 6 7 8 9 10 11 12
Das EM Fußballtournier
7. Juni 2008
13 14 15
16 17
18 19 20 21 22 23 24 25 26 27 28 29
19. Juni 2008
30 31 32 33 34 35
36 37 38 39 40 41
29. Juni 2008
42 43 44
Listing 2: Auszug aus dem EM-Spielplan als XML Dokument. Sie haben f¨ ur die EM ein XML Dokument erstellt, das die Mannschaften mit den Ergebnissen verwaltet, wie in Abbilung 2 zu sehen.
5
Aufgabe • Analysieren Sie das XML Dokument. Erstellen Sie eine Liste der verwendeten Markup-Elemente und deuten Sie an welche Attributte diese besitzen. • Schreiben Sie eine eine passende DTD f¨ ur das XML Dokument. • Schreiben Sie die Java Klassen Tournier und Match, so dass Sie die Strukturinformationen des XML Dokuments passend auf Java Attribute abbilden k¨ onnen.
Tip In dem Dokument sind nicht alle Spiele im Detail abgebildet, aber die wesentlichen Informationen sind angedeutet. Das Tournier hat vier Gruppen mit jeweils vier Mannschaften in der Vorrunde. Dann kommen vier Viertelfinal- und zwei Halbfinalspiele abschließend das Finale. Tournier und Match sind zwei eigenst¨ andige Klassen, die jeweiligen Gruppierungen m¨ ussen dies allerdings nicht sein, sondern k¨ onnen recht einfach Feldern oder dynamischen Kontainer-Klassen abgebildet werden.
6