Aufgaben

HTML

  1. Verbessern Sie die folgenden HTML Fragmente

    1. <H1>Überschrift A
      <H2>Überschrift B</H3>
      
    2. <P>Ein Paragraph mit 
      <B>fettem <I>und fett-italic</B> 
      Text</I>.</P>
      
    3. <I><H2>kursive Überschrift</H2></I>
      
  2. Was bedeutet die folgende Zeile in HTML-Dateien?

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
    
  3. Wie stellen Sie Links innerhalb einer HTML-Seite her?

  4. Wozu dient das HTML Element META ?

  5. 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.

Übungsaufgaben

Erstellen Sie Web Seiten, die weitestgehend wie folgt aussehen.

Aufgabe 1
Aufgabe 2

XHTML

  1. Geben Sie mindestens vier Unterschiede zwischen HTML (4.0) und XHTML (1.0) an.

  2. Wie müssen sich User Agents bei unbekannten Elementen, unbekannten Attributen, bzw. unbekannten Attribut-Werten verhalten?

  3. Browser haben meist gute Heuristiken um fehlerhaftes HTML doch noch am Bildschirm darzustellen. Wozu benötigt man trotzdem Tools wie HTML-Tidy?

Übungsaufgaben

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).

CSS

  1. Geben Sie die CSS-Regel für das Layout eines Paragraphen mit gelber Schrift auf blauem Hintergrund an.

  2. Mit welchen CSS-Eigenschaften kann das Layout einer Box definiert werden?

  3. Auf welche Arten kann CSS Stilinformation mit HTML Seiten verknüpft werden?

  4. Nennen Sie mindestens drei der neuen Medien, die durch CSS2 unterstützt werden sollen.

  5. Mit CSS2 wird man Überschriften automatisch numerieren können. Erläutern Sie die dazu benutzten Konstrukte :before und content:.

Übungsaufgaben

Erstellen Sie eine Web Seite, die wie folgt aussieht.

Aufgabe 3

Validieren Sie die CSS Teile der Antwort mit dem CSS-Checker vom W3 Consortium.

Java

  1. Erläutern Sie die Aussage: Java ist die Programmiersprache des Web.

  2. Wozu benötigt man die Tools javac, java, javadoc und appletviewer?

Übungsaufgaben

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.

Java Sprache

  1. Erläutern Sie den Unterschied zwischen einer Variablen und einem Wert.

  2. 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.

  3. Schreiben Sie folgende Methoden für die in der Vorlesung entwickelte Klasse BitString:

    1. public static String bitString(short b)
    2. public static String bitString(int b)
    3. 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.

  4. 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.

    Musterlösungen für einige Aufgaben

  5. Erläutern Sie den Unterschied zwischen Klassen und Objekten.

  6. (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.

  7. 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.

  8. 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.

  9. 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),

    Musterlösungen für einige Aufgaben

  10. Leiten Sie die in der vorhergehenden Aufgabe entwickelte Klasse Complex von der abstrakten Klasse Number ab. Implementieren Sie die fehlenden Mwthoden.

  11. (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.

  12. 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.

  13. 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.

    Musterlösungen für diese Aufgabe

  14. 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).

    Musterlösungen für einige Aufgaben

XML

  1. Erläutern Sie das Verhältnis zwischen XML und HTML sowie SGML.

  2. Erläutern Sie den Grundaufbau eines gültigen XML Dokuments.

  3. Geben Sie eine DTD für folgendes XML Dokument an.

         <mitarbeiter pnr="123456">
         <name>Karl Dall</name>
         <abteilung>Jux und Dollerei</abteilung>
         </mitarbeiter>
    
  4. 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).

  5. Nennen und Beschreiben Sie wichtigsten Hilfsmittel die im Umfeld von XML entwickelt und verwendet werden.

  6. Nennen Sie einige XML Anwendungen.

DOM

  1. Erläutern Sie die Bedeutung von DOM.

  2. Was sind die Unterschiede zwischen einer Interface Beschreibung und Implementierungen?

  3. Wie können Sie mit DOM Methoden auf ein Element zugreifen, dessen Namen Sie kennen?

JAXP

  1. Installieren Sie JAXP (also den DOM und SAX Parser).

  2. 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.

    Hinweise und Anleitung

  3. 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.

  4. Validieren Sie die Dokumente mit den DTDs zu Lager, Bestellung, Lieferung und Rechnung.

  5. Erweitern Sie 'Bestellung' um eine Unterscheidung zwischen Lieferanschrift und Rechnungsanschrift. Untergliedern Sie die Adresse in 'Name, Straße, PLZ, Ort'.

  6. 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