• Nenhum resultado encontrado

L A TEX

6.1 HTML

6.2.3 Wohlgeformte Texte

6-20 Wohlgeformte und gültigeXML-Texte 6-20

I

Definition

Ein xml-Text heißtwohlgeformt, wenn alle Tags korrekt geschachtelt sind.

I

Definition

EineDocument Type Description (DTD)gibt eine Menge von erlaubten Tags und erlaubten Parametern an. (Beispiel: Es gibt eine DTD für html.)

I

Definition

Ein xml-Text heißtgültig in Bezug auf eine DTD, wenn die Tags wie von der DTD vorge- schrieben benutzt werden.

Zusammenfassung dieses Kapitels

6-21 1. html-Texte beschreiben Inhalt und Struktur, xml-Texte ebenso. 6-21

2. html- und xml-Texte bestehen auskorrekt geschachtelten Tags.

Zum Weiterlesen

[1] Götz Bürkle et al.http://de.selfhtml.org/, Zugriff Mai 2007.

56 6 Hypertext Markup Language Übungen zu diesem Kapitel

Übungen zu diesem Kapitel

Übung 6.1 XML-Syntax benutzen, mittel

DieProtein Database (PDB)stellt die Raumkoordinaten der Atome von einer sehr großen Zahl von Atomen zur Verfügung. Hier ist ein typisches Beispiel:

HEADER HYDROLASE 25-JUL-03 1UJ1

TITLE CRYSTAL STRUCTURE OF SARS CORONAVIRUS MAIN PROTEINASE TITLE 2 (3CLPRO)

COMPND MOL_ID: 1;

COMPND 2 MOLECULE: 3C-LIKE PROTEINASE;

COMPND 3 CHAIN: A, B;

COMPND 4 SYNONYM: MAIN PROTEINASE, 3CLPRO;

COMPND 5 EC: 3.4.24.-;

COMPND 6 ENGINEERED: YES SOURCE MOL_ID: 1;

SOURCE 2 ORGANISM_SCIENTIFIC: SARS CORONAVIRUS;

SOURCE 3 ORGANISM_COMMON: VIRUSES;

SOURCE 4 STRAIN: SARS;

...

REVDAT 1 18-NOV-03 1UJ1 0

JRNL AUTH H.YANG,M.YANG,Y.DING,Y.LIU,Z.LOU,Z.ZHOU,L.SUN,L.MO, JRNL AUTH 2 S.YE,H.PANG,G.F.GAO,K.ANAND,M.BARTLAM,R.HILGENFELD, JRNL AUTH 3 Z.RAO

JRNL TITL THE CRYSTAL STRUCTURES OF SEVERE ACUTE RESPIRATORY JRNL TITL 2 SYNDROME VIRUS MAIN PROTEASE AND ITS COMPLEX WITH JRNL TITL 3 AN INHIBITOR

JRNL REF PROC.NAT.ACAD.SCI.USA V. 100 13190 2003 JRNL REFN ASTM PNASA6 US ISSN 0027-8424

....

ATOM 1 N PHE A 3 63.478 -27.806 23.971 1.00 44.82 N ATOM 2 CA PHE A 3 64.607 -26.997 24.516 1.00 42.13 C ATOM 3 C PHE A 3 64.674 -25.701 23.723 1.00 41.61 C ATOM 4 O PHE A 3 65.331 -25.633 22.673 1.00 40.73 O ATOM 5 CB PHE A 3 65.912 -27.763 24.358 1.00 44.33 C ATOM 6 CG PHE A 3 67.065 -27.162 25.108 1.00 44.20 C ATOM 7 CD1 PHE A 3 67.083 -27.172 26.496 1.00 43.35 C ATOM 8 CD2 PHE A 3 68.135 -26.595 24.422 1.00 43.49 C ...

Das Format der PDB ist sowohl für Computer wie für Menschen etwas »schwer lesbar«. Wie würde die Beschreibung in XML aussehen? Teilen Sie diese Aufgabe gegebenenfalls auf mehrere Teilgruppen auf: Eine Gruppe kümmert sich um die XML-Beschreibung derJRNL-Einträge, eine andere um die ATOM-Einträge und so weiter.

Übung 6.2 HTML-Syntax üben, leicht

Erstellen Sie eine HTML-Seite, die eine Liste Ihrer persönlichen Bookmarks enthält.

Prüfungsaufgaben zu diesem Kapitel

Übung 6.3 Modellierung von Daten als XML, leicht, original Klausuraufgabe

Ändert sich das Klima oder nicht? Zur endgültigen Beantwortung dieser Frage sind Sie mit der Er- stellung einer Datenbank beauftragt worden, die die Entwicklung der monatlichen Temperaturen im Laufe der Jahre festalten soll. Dabei sollen für jeden Monat jeweils Tiefst-, Höchst-, und Durchschnitts- temperaturen gespeichert werden. Hier sehen Sie einige Beispieldaten der Wetterstation in Lübeck- Blankensee:

Jahr Monat Minimum Mittel Maximum

2004 Juli 7.2 16.8 28.3

2009 August 8.6 18.5 33.6

Stellen Sie diese Daten im XML-Format dar! Dabei soll dielogische Strukturder Daten wiedergegeben werden und nicht etwa die visuelle Formatierung der Tabelle. Führen Sie deshalb geeignet benannte Tags und/oder Attribute ein, z.B. kann ein Jahr durch ein Tag<jahr>modelliert werden.

Übung 6.4 Modellierung von Daten als XML, leicht, original Klausuraufgabe

Es soll eine Gendatenbank aufgebaut werden, in der Gene als XML-Dateien gespeichert werden. Zu jedem Gen sollen gespeichert werden:

Der Name des Gens,

die Nummer des Chromosoms,

die Startposition auf dem Chromosom und die Endposition auf dem Chromosom.

Erstellen Sie eine XML-Datei, die die Daten der folgenden zwei Gene enthält:

6 Hypertext Markup Language

Übungen zu diesem Kapitel 57

1. malT, Start 8986, Ende 11751, Chromosom 2, 2. pspG, Start 395473, Ende 395685, Chromosom 1.

Modellieren Sie die genannten Eigenschaften der Gene durch geeignete XML-Tags und/oder Attribu- te.

Übung 6.5 XML und Shell-Programmierung, leicht bis mittel, original Klausuraufgabe

In einer Datei liegt eine XML-Beschreibung eines Moleküls vor. Leider kannte sich der Verfasser dieser Datei offensichtlich nicht besonders gut mit XML aus. Ihm sind daher zwei Syntaxfehler unter- laufen:

1 <?xml version="1.0"?>

2 <molecule name="hydrogen fluoride">

3 <atom protons1>hydrogen</atom>

4 <atom protons="6">fluorine</atom>

5 </mol>

Geben Sie an, welches diese Syntaxehler sind, und wie man sie sinnvoll (also z.B. nicht durch Löschen von Zeilen) korrigieren könnte.

Zum Finden solcher und ähnlicher Fehler in XML-Dateien kann man das Shell-Werkzeugxmllint benutzen. Dieses analysiert eine als Argument gegebene XML-Datei und gibt gefundene Fehler zei- lenweise aus. Wird kein Fehler gefunden, ist die Ausgabe leer. Sei zum Beispieltest.xmleine (feh- lerhafte) XML-Datei mit folgendem Inhalt:

<?xml version="1.0" >

<molecule>

Dann sieht die Ausgabe vonxmllint test.xmlwie folgt aus:

test.xml:1: error: parsing XML declaration: ’?>’ expected test.xml:2: error: Premature end of data in tag molecule line 2

Verwenden Sie die Befehlexmllint undwc, um sich direkt die Anzahl der Fehler in der Datei molekuel.xmlanzeigen zu lassen. Erzeugen Sie dabei keine zusätzlichen Dateien!

Schreiben Sie ein Shell-Skriptfehleranalyse.bash, das die Anzahl der Fehler in einer als Para- meter übergebenen XML-Datei ausgibt. Geben Sie dabei nicht nur die Zahl selbst, sondern auch eine sinnvolle Meldung aus. Geben Sie nur den Inhalt des Skripts an.

Sie erfahren in einer weiterführenden Vorlesung, dass es wie in Java auch in Shell-Skripten das Kon- zept derfor-Schleife gibt, allerdings mit einer etwas anderen Syntax. Da Sie den Ausführungen des Dozenten nicht gut folgen konnten, informieren Sie sich stattdessen bei Wikipedia. Sie stoßen dabei auf folgendes Beispielskript, das für jede im aktuellen Ordner vorhandene Datei mit der Endung.xml die Anzahl der Zeilen ausgibt:

for i in *.xml ; do wc -l $i

done

Passen Sie dieses Beispielskript so an, dass für jede Datei mit der Endung.xmlim aktuellen Ordner das Shell-Skript aus der vorigen Aufgabe aufgerufen wird, statt die Anzahl der Zeilen auszugeben.

58 Teil IIIProgrammieren in Java

Teil III

Programmieren in Java

Wenn man die Vorlesungskarte am Anfang dieses Skripts betrachtet, so erscheint die Infor- matik als ein großes, komplexes Gebiet, das durch Querbezüge mit vielen anderen Diszipli- nen verwoben ist. Manche Teile der Informatik erscheinen dabei (je nach Betrachterstand- punkt) wichtiger als andere. Gibt es aber etwas, ohne das die Informatik aufhört, Informatik zu sein? Zwei spontane Ideen könnten die Begriffe »Computer« und »Information« sein.

Könnte man Informatik betreiben, wenn es keine Rechner gäbe? Die Antwort ist erstaun- licherweise »Yes, we can!«: Die zentrale Frage »Gibt es etwas, das Computer prinzipiell nicht können?« wurde von Alan Turing bereits beantwortet, als es noch gar keine Computer gab. Der Begriff der »Information« ist ebenso ungeeignet, um die Informatik (trotz des Na- mens) an ihm aufzuhängen: Die Informationstheorie ist lange vor der Informatik entwickelt worden, nämlich zu der Zeit, als Draht- und Funkübertragung von Daten möglich wurde.

Wo liegt also der »Kern« der Informatik? Es ist derAlgorithmusbegriff. Er macht das spezi- fische, das Wesen der Informatik aus. Ein Algorithmus ist eine manchmal abstrakte, manch- mal ganz konkrete Vorschrift, wie man ein Problem löst. Er besteht aus einzelnen Schrit- ten, die nacheinander abgearbeitet werden, er kann aber auch so genannte Schleifenund bedingte Anweisungenenthalten, wodurch ein beliebig komplexes Gebilde entstehen kann.

Ein bekanntes Beispiel eines Algorithmus ist der Gauß-Algorithmus zur Lösung eines Li- nearen Gleichungssystems: Für jede Zeilen (= eine Schleife) überprüfe, ob (= eine bedingte Anweisung) die Zahl in Spalte. . .

Ähnlich wie bei der Beschreibung von Seiten stellt sich bei Algorithmen das Problem, wie man sie »aufschreibt«. Die verschiedenen Jargons, wie man Algorithmen aufschreibt, nennt man nicht, was passend wäre, »Algorithmenbeschreibungssprachen«, sondern Program- miersprachen. Wir werden uns im Rahmen dieser Veranstaltung die Programmiersprache Java genauer anschauen.

Die spezielle Wahl der Sprache Java für diese Veranstaltung war ein wenig willkürlich und hat ihre Vor- und Nachteile. Ein Vorteil ist, dass sie weit verbreitet ist und »auch wirklich real genutzt wird«; nachteilig ist, dass sie nicht gerade nach didaktischen Kriterien entwickelt wurde (im Gegensatz zu beispielsweise Pascal). Auf jeden Fall wird es wichtiger sein, die Grundideen zu verstehen, als jede Besonderheit von Java perfekt zu beherrschen.

7 Der Algorithmusbegriff 59

7-1 7-1

Kapitel 7

Der Algorithmusbegriff

Von der vagen Idee zur Instruktionsfolge

7-2 7-2

Lernziele dieses Kapitels

1. Den Begriff des Algorithmus verstehen

2. Einfache Lösungsideen als Algorithmen formulieren können

3. Probleme spezifizieren können

4. Programmiersprachen als Kommunikationsmittel für Algorithmen begreifen

5. Das Konzept des Übersetzers verstehen

Inhalte dieses Kapitels

7.1 Algorithmen 60

7.1.1 Geschichte . . . 60 7.1.2 Definition . . . 60 7.1.3 Steuerungsanweisungen . . . 61

7.2 Spezifikationen 62

7.3 Programmiersprachen 62

7.3.1 Wozu dienen Programmiersprachen? . . 62 7.3.2 Übersetzer . . . 64

Worum es heute geht

Worum es heute geht

Das Wort »Algorithmus« ist schon ein wenig unheimlich, finden Sie nicht? Für Menschen mit einer Mathematikphobie klingt es irgendwie nach Logarithmus – und mit diesem standen sie schon immer auf Kriegsfuß. Für Technikverliebte klingt es irgendwie griechisch und damit altmodisch und uninteressant. Hypochonder hoffen inständig, nie einen Algorithmus zu bekommen, da die Apothekenrundschau noch nie über ein Heilmittel berichtet hat. Selbst einige Informatikstudenten weigern sich, Algorithmen als eigenständigen Wesen die nötige Aufmerksamkeit zu schenken – für sie gibt es Programmcode und alles andere ist von Übel.

Dabei benutzen wir alle Algorithmen Tag ein, Tag aus. Der Grund ist, dass jedem einiger- maßen strukturierten Arbeitsablauf ein Algorithmus zu Grunde liegt. Wenn Sie zwei Zahlen schriftlich multiplizieren (was man zugegebenermaßen nicht jeden Tag macht), so gehen Sie ja nicht völlig planlos zu Werke, sondern Sie haben in der Schule mehr oder minder müh- selig gelernt, was alles wie in welcher Reihenfolge aufgeschrieben werden muss. Das, was Sie gelernt haben, ist ein Algorithmus, nämlich der »Algorithmus für die schriftliche Mul- tiplikation nach der Schulmethode«. Ein anderes Beispiel ist das Suchen eines Namens in einem Telefonbuch, wo man ja nicht Zeile für Zeile nach dem gesuchten Namen durchgeht, sondern zwischen den Seiten »hin- und herspringt« (wieder zugegebenermaßen kein alltäg- liches Geschäft heutzutage; was aber hauptsächlich daran liegt, dass wir das Ausführen des Im-Telefonbuch-suchen-Algorithmus heutzutage unserem Telefon überlassen).

Was könnte man tun, um dem Wort »Algorithmus« ein besseres Image zu verpassen? Am einfachsten wäre es wohl, einfach ein anderes, freundlicheres Wort zu benutzen. Dies hat sich in der Geschichte immer wieder bewährt: bei der Bundeswehr ist aus einem schreckli- chen »Krieg« der an eine gemütliche, holzkohleofengewärmte Amtsstube erinnernde »Ver- teidigungsfall« geworden; die mittelalterliche, voraufklärerische »Folter« ist den zackigen

»verschärften Verhörmethoden« gewichen; und »Raider« heißt jetzt »Twix« (warum auch immer). Wie wäre es mit »Berechnungsvorschrift«? Zu dirigistisch. Vielleicht »Rechenan- leitung«? Schon besser, klingt aber etwas nach einer Mathematiknachhilfestunde. Letzter Vorschlag: »Kochrezepte für Computer«. Da stellt man sich unwillkürlich tomatensoße- bespritzte Roboter in einer Küche vor und ist damit schonmal in einer positiven mentalen Grundhaltung.

Am Ende bleiben wir dann doch bei »Algorithmus«.

60 7 Der Algorithmusbegriff