Verbessern Sie die folgenden HTML Fragmente
<H1>Überschrift A <H2>Überschrift B</H3>
<P>Ein Paragraph mit <B>fettem <I>und fett-italic</B> Text</I>.</P>
<I><H2>kursive Überschrift</H2></I>
Was bedeutet die folgende Zeile in HTML-Dateien?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
Wie stellen Sie Links innerhalb einer HTML-Seite her?
Wozu dient das HTML Element META
?
Geben Sie das HTML Fragment für ein Formular
mit einem Texteingabefeld und einem Submit-Button
zu dem CGI Programm
http://parallel.rz/cgi-bin/ex2.cgi
an.
Erstellen Sie Web Seiten, die weitestgehend wie folgt aussehen.
Geben Sie mindestens vier Unterschiede zwischen HTML (4.0) und XHTML (1.0) an.
Wie müssen sich User Agents bei unbekannten Elementen, unbekannten Attributen, bzw. unbekannten Attribut-Werten verhalten?
Browser haben meist gute Heuristiken um fehlerhaftes HTML doch noch am Bildschirm darzustellen. Wozu benötigt man trotzdem Tools wie HTML-Tidy?
Installieren Sie tidy
und
wenden Sie es auf Ihre Seiten aus den
vorhergehenden Aufgaben an.
Erstellen Sie die Antwort als wellformed XHTML 1.0
(Kontrolle durch tidy -e -xml
).
Erstellen Sie die Antwort als valid XHTML 1.0
(Kontrolle durch einen validierenden XML Parser,
wie in Abschnitt XML beschrieben).
Geben Sie die CSS-Regel für das Layout eines Paragraphen mit gelber Schrift auf blauem Hintergrund an.
Mit welchen CSS-Eigenschaften kann das Layout einer Box definiert werden?
Auf welche Arten kann CSS Stilinformation mit HTML Seiten verknüpft werden?
Nennen Sie mindestens drei der neuen Medien, die durch CSS2 unterstützt werden sollen.
Mit CSS2 wird man Überschriften automatisch numerieren können.
Erläutern Sie die dazu benutzten Konstrukte
:before
und content:
.
Erstellen Sie eine Web Seite, die wie folgt aussieht.
Validieren Sie die CSS Teile der Antwort mit dem CSS-Checker vom W3 Consortium.
Erläutern Sie die Aussage: Java ist die Programmiersprache des Web.
Wozu benötigt man die Tools javac
, java
,
javadoc
und appletviewer
?
Installieren Sie ein Java Entwicklungskit (zum Beispiel Sun JDK 1.3 oder IBM JDK 13.). Entwickeln Sie eine (Applet oder Kommandozeilen Version) des 'Hallo Welt'-Programms.
Erläutern Sie den Unterschied zwischen einer Variablen und einem Wert.
Gegeben seien drei reele Zahlen 3.0
, 5.0
,
und 7.0
. Schreiben Sie ein Programm, mit dem Sie
das arithmetische Mittel der drei Zahlen berechnen und ausgeben.
Schreiben Sie folgende Methoden für die
in der Vorlesung entwickelte Klasse BitString
:
public static String bitString(short b)
public static String bitString(int b)
public static String bitString(long b)
Verwenden Sie für eine Version a) die schon vorhandene Methode
public static String bitString(byte b)
,
und für eine zweite Version b) Felder und Schleifen geeigneter Länge.
Schreiben Sie ein Programm mit dem Sie Sekunden in normale
Stunden, Minuten und Sekunden umrechnen.
Die Methode getHMS(int)
soll eine Zeichenkette
zurückgeben, in der aus dem Parameter (der Sekunden)
die Stunden (HH), Minuten (MM) und Sekunden (SS) in folgendem
Format ausgibt HH:MM:SS
.
Also aus der Eingabe 3661
soll die
Zeichenkette 01:01:01
werden.
Erläutern Sie den Unterschied zwischen Klassen und Objekten.
(freiwillig) Entwickeln Sie analog zu den Klassen *BitString*
Klassen *HexString*
, mit denen die hexadezimal Darstellung
von ganzen Zahlen erzeugt werden kann.
Überlegen Sie wie Sie bezüglich einer beliebigen Basis b
eine Darstellung erzeugen können.
Schreiben Sie ein Programm das mit Hilfe von Math.random()
100 Zufallszahlen im Intervall [0.0, 1.0]
generiert.
Zählen Sie (mit einem Programm) wieviele Zahlen davon
im Intervall [0.0, 0.5)
und wieviele
im Intervall [0.5, 1.0]
liegen.
Schreiben Sie ein Programm, das beliebig viele Wörter von der Kommandozeile
entgegen nehmen kann. Jedes Wort soll dann im umgekehrter Reihenfolge
ausgegeben werden. Ist bei einem Wort der erste Buchstabe gross, soll auch
im Ergebnis nur der erste Buchstabe gross sein.
Zum Beispiel das Wort 'Java' soll zu 'Avaj' umgewandelt werden.
Verwenden Sie für die Zeichenketten Verarbeitung die Klasse StringBuffer
.
Schreiben Sie eine Klasse Complex
, die
für die Arithmetik komplexer Zahlen verwendet werden kann.
Der Konstruktor soll aus einem Paar reeler Zahlen (a,b)
eine komplexe Zahl a + i b
machen.
Null ist 0 + i 0
, Einz ist 1 + i 0
,
Feststellen des Real- und Imaginär-Teils,
Test auf Gleichheit,
Addition: (a + i b) + (c + i d)
= (a+c) + i (b+d)
,
Subtraktion analog, negative Zahl,
Multiplikation: (a + i b) * (c + i d)
= (ac-bd) + i (ad+bc)
,
Konjugation: con(a + i b)
= a - i b
,
Betrag: abs(a + i b)
= a a + b b
,
Inverses: inv(a + i b)
= con(a + i b)/abs(a + i b),
Division: (a + i b) / (c + i d)
= (a + i b) * inv(c + i d),
Leiten Sie die in der vorhergehenden Aufgabe entwickelte
Klasse Complex
von der abstrakten Klasse Number
ab. Implementieren Sie die fehlenden Mwthoden.
(freiwillig) Schreiben Sie eine Klasse Rational
, die
für die Arithmetik rationaler Zahlen verwendet werden kann.
Der Konstruktor soll aus einem Paar ganzer Zahlen (long) (a,b)
eine rationale Zahl a / b
machen.
Null ist 0 / 1
, Einz ist 1 / 1
,
Feststellen des Zählers und des Nenners,
Berechen des größten gemeinsaman Teilers ggT(a,b)
,
Kürzen: (a / b)
= ( a / ggT(a,b) ) / ( b / ggT(a,b) )
,
Nenner positiv machen: (a / -b)
= ( -a / b )
(falls b > 0
),
Test auf Gleichheit (?),
Vergleich: (a / b) < (c / d)
<==> ad < bc
,
Addition: (a / b) + (c / d)
= (ad + cb) / (bd)
,
Subtraktion analog, negative Zahl,
Multiplikation: (a / b) * (c / d)
= (a c) / (b d)
,
Betrag: abs(a / b)
= ( abs(a) / b )
(?),
Inverses: inv(a / b)
= ( b / a )
(?),
Division: (a / b) / (c / d)
= (a / b) * inv(c / d)
,
Bei den mit (?) bezeichneten Methoden muss sehr genau überlegt werden wie es gemacht werden soll.
Schreiben Sie ein Programm das mit Hilfe von Math.random()
100 ganze Zufallszahlen im Intervall [0, 1000]
generiert.
Schreiben Sie ein Programm, das diese Zahlen aufsteigend sortiert
und ausgibt. Als Sortierverfahren können Sie zum Beispiel Buble-Sort
verwenden.
Schreiben Sie ein
Programm Grep <wort> [<datei>]
,
das analog zum (Unix-)Kommando 'grep' funktioniert.
D.h. alle Zeilen, die die Zeichenkette 'wort' enthalten
sollen ausgegeben werden. Wenn kein 'datei'-Name angegeben ist,
soll die Standard-Eingabe durchsucht werden.
Lokalisieren Sie das Programm Persistenz
in drei Sprachen: Deutsch, Englisch und eine weitere Sprache
Ihrer Wahl (z.B. Französisch, Italienisch, Türkisch, Russisch,
Schwäbisch, Pfälzisch, Bayrisch, Sächsisch, Platt).
Erläutern Sie das Verhältnis zwischen XML und HTML sowie SGML.
Erläutern Sie den Grundaufbau eines gültigen XML Dokuments.
Geben Sie eine DTD für folgendes XML Dokument an.
<mitarbeiter pnr="123456"> <name>Karl Dall</name> <abteilung>Jux und Dollerei</abteilung> </mitarbeiter>
Installieren Sie einen validierenden XML Parser (zum Beispiel Apache Xerces). Validieren Sie das in der vorhergehenden Aufgabe 3 gegebene Dokument (erweitert entsprechend Aufgabe 2) gegen die erstellte DTD. Validieren Sie damit die XHTML Beispielseite von oben (freiwillig).
Nennen und Beschreiben Sie wichtigsten Hilfsmittel die im Umfeld von XML entwickelt und verwendet werden.
Nennen Sie einige XML Anwendungen.
Erläutern Sie die Bedeutung von DOM.
Was sind die Unterschiede zwischen einer Interface Beschreibung und Implementierungen?
Wie können Sie mit DOM Methoden auf ein Element zugreifen, dessen Namen Sie kennen?
Installieren Sie JAXP (also den DOM und SAX Parser).
Verwenden Sie die Klassen DOMLeser und SAXLeser auf die XML Dokumente und DTDs aus dem Abschnitt XML an. Vollziehen Sie den Ablauf der Programme nach.
Entwickeln Sie eine XML DTD für Wechselkurse. Zum Beispiel für folgende XML-Datei:
<kurse> <kurs datum="2002-01-10 von="USD" nach="EUR" >1.10</kurs> <kurs datum="2002-01-10 von="EUR" nach="USD" >0.90</kurs> ... </kurse>
Entwickeln Sie (analog zu DOMLager) eine Klasse Kurse,
die eine Methode konvertiere(datum,von,nach,betrag)
basierend auf der DTD für 'kurse' bereitstellt.
z.B. konvertiere("2002-01-10","USD","EUR",2.0)
soll 2.20
liefern.
Validieren Sie die Dokumente mit den DTDs zu Lager, Bestellung, Lieferung und Rechnung.
Erweitern Sie 'Bestellung' um eine Unterscheidung zwischen Lieferanschrift und Rechnungsanschrift. Untergliedern Sie die Adresse in 'Name, Straße, PLZ, Ort'.
Schreiben Sie eine eigene Anwendung 'Nachbestellung', die den Lagerbestand analysiert, und bei Produkten, die einen zu geringen Bestand aufweisen eine Nachbestellung generiert.
Seite mit weiterem Material aus den Übungen.
© Universität Mannheim, Rechenzentrum, 1998-2005.
Heinz Kredel Last modified: Sat Aug 6 23:11:04 CEST 2005