Einführung in die Wirtschaftsinformatik Programmierung 20.11.2005 Prof. Dr. Andreas Schmietendorf 1 Übersicht zu Lehreinheit § Spezifikation und Algorithmen § Überblick zu Programmiersprachen - Maschinenorientierte Programmiersprachen - Prozedurale Programmiersprachen - Deskriptive Programmiersprachen - Objektorientierte Programmiersprachen § Programmiersprache Java § Programmierung von Web-Anwendungen 20.11.2005 Prof. Dr. Andreas Schmietendorf 2 Spezifikation und Algorithmen 20.11.2005 Prof. Dr. Andreas Schmietendorf 3 Spezifikation Eine Spezifikation ist eine vollständige, detaillierte und unzweideutige Problembeschreibung. Dabei heißt eine Spezifikation - Vollständig, wenn alle Anforderungen und alle relevanten Rahmenbedingungen angegeben worden sind - Detailliert, wenn klar ist, welche Hilfsmittel, insbesondere welche BasisOperationen zur Lösung zugelassen sind - Unzweideutig, wenn klare Kriterien angegeben werden, wann eine Lösung akzeptabel ist Quelle: Gumm, H. P.; Sommer, M.: Einführung in die Informatik, 5. Auflage. München, Oldenbourg Verlag, 2002 20.11.2005 Prof. Dr. Andreas Schmietendorf 4 Spezifikation Berechnung des größte größten gemeinsamen Teiler zweier Zahlen: Potentielle informelle Spezifikation: Für beliebige Zahlen M und N berechne den größten gemeinsamen Teiler ggT(M,N), also die größte Zahl, die sowohl M als auch N teilt. Ein informelle Spezifikation lässt viele Fragen offen: Vollständigkeit: Welche Zahlen M, N sind zugelassen? Dürfen M und N nur positive Zahlen oder auch negative oder gar rationale Zahlen sein? Ist 0 erlaubt? Detailliertheit: Welche Operationen sind erlaubt? (+, -, div, mod) Unzweideutigkeit: Was heißt berechnen? Soll das Ergebnis ausgedruckt werden oder in einer bestimmten Variablen gespeichert werden? Quelle: Gumm, H. P.; Sommer, M.: Einführung in die Informatik, 5. Auflage. München, Oldenbourg Verlag, 2002 20.11.2005 Prof. Dr. Andreas Schmietendorf 5 Spezifikation Verwendung von Vor- und Nachbedingungen durch Angabe eines Paares P und Q von logischen Aussagen. {P} {Q}: Beispiel ggt(a,b): Vorbedingung {a und b sind ganze Zahlen mit 0<a<32767 und 0<b<32767} Nachbedingung {z = ggt(a,b), d.h., z ist Teiler von a und b und für jede andere Zahl z‘, die auch a und b teilt, gilt z‘=z} Quelle: Gumm, H. P.; Sommer, M.: Einführung in die Informatik, 5. Auflage. München, Oldenbourg Verlag, 2002 20.11.2005 Prof. Dr. Andreas Schmietendorf 6 Algorithmen Ein Algorithmus ist eine detaillierte und explizite Vorschrift zur schrittweisen Lösung eines Problems. D.h. im einzelnen: - Die Ausführung des Algorithmus erfolgt in einzelnen Schritten - Jeder Schritt besteht aus einer einfachen und offensichtlichen Grundaktion - Zu jedem Zeitpunkt muss eindeutig definiert sein, welche Schritte als nächste auszuführen sind. Quelle: Gumm, H. P.; Sommer, M.: Einführung in die Informatik, 5. Auflage. München, Oldenbourg Verlag, 2002 20.11.2005 Prof. Dr. Andreas Schmietendorf 7 Algorithmen Eine Maschine wird deterministisch genannt, wenn ihre Tätigkeiten oder Ausgaben Funktionen ihres Anfangsstatus und der Folge der erhaltenen Eingaben sind. Wenn in zwei Fällen eine deterministische Maschine in denselben Anfangszustand versetzt wird und dieselbe Eingabemenge präsentiert bekommt, so wird sie die exakt gleiche Ausgabe produzieren. Computer sind deterministische Maschinen! Quelle: Goldschlager, L.; Lister, A.: Informatik – Eine moderne Einführung, 3. Auflage. München, Hanser Verlag, 1990 20.11.2005 Prof. Dr. Andreas Schmietendorf 8 Algorithmen Sichten auf Algorithmen Ein Algorithmus löst typischerweise eine ganze Klasse von Problemen. Das jeweils zu bearbeitende Problem wird durch Parameter bestimmt. Ein Algorithmus liefert zu einer solchen Eingabe jeweils ein Resultat. Repräsentationsformen: - informell formal Funktionale Sicht: Operationale Sicht: - Welche Aufgabenklasse soll der Algorithmus bewältigen? Wie sollen die Aufgaben bewältigt werden? Angabe von elementaren Verarbeitungsschritten Beschreibung des Kontrollflusses Angabe von Daten und Parametern 20.11.2005 Prof. Dr. Andreas Schmietendorf 9 Algorithmen Der Euklidsche Algorithmus (3. Jh. V. Chr.) zur Berechnung des größten gemeinsamen Teilers zweier natürlicher Zahlen. Eine informelle Beschreibung Aufgabenstellung: Gegeben: Zwei ganze Zahlen a und b mit a>0 und b>0. Gesucht: Der größte gemeinsame Teiler ggt(a,b) von a und b. Der Algorithmus ggt(a,b): - (1) Falls a gleich b ist, gilt ggt(a,b) = a; - (2) Falls a kleiner als b, wende ggt auf a und b-a an; - (3) Falls a größer b ist, wende ggt auf a-b und b an. 20.11.2005 Prof. Dr. Andreas Schmietendorf 10 Algorithmen Für den ggt(a,b) Algorithmus gilt: § Die arithmetische Operation „-“ und die Vergleichsoperationen „kleiner als“, „größer als“ und „gleich“ werden als elementare Verarbeitungsschritte vorausgesetzt. § Der Algorithmus ist deterministisch, d.h. für jede Eingabe ist die Folge der einzelnen Schritte genau festgelegt. Für deterministische Algorithmen ist die Relation zwischen Eingabeund Ausgabewerten eine partielle Abbildung. Der Algorithmus heißt korrekt, wenn diese Funktion der Aufgabenstellung entspricht, die der Algorithmus bewältigen soll. 20.11.2005 Prof. Dr. Andreas Schmietendorf 11 Algorithmen Algorithmen werden u.a. durch folgende Merkmale klassifiziert. Ein Algorithmus heißt - terminierend, wenn er für alle zulässigen Schrittfolgen nach endlich vielen Schritten endet, - deterministisch, wenn die Abfolge der einzelnen Verarbeitungsschritte eindeutig festgelegt ist, - determiniert, wenn es zu jeder Eingabe höchstens eine Ausgabe gibt, d.h. der Algorithmus berechnet eine (partielle) Funktion, - endlich, wenn er mit einer endlichen Anzahl von Worten beschrieben werden kann, - sequentiell, wenn die Verarbeitungsschritte stets hintereinander ausgeführt werden, - parallel, wenn gewisse Verarbeitungsschritte nebenläufig ausgeführt werden. 20.11.2005 Prof. Dr. Andreas Schmietendorf 12 Übung Algorithmen § Wann kann man einen Algorithmus als korrekt bezeichnen? Wie könnte man diese Eigenschaft nachweisen? § In welchem Bezug stehen Algorithmen und Programme zueinander? Entscheiden Sie für die folgenden Bereiche, ob es sich um einen Algorithmus oder ein Programm (oder um keines von beiden) handelt: - Ergebnis einer Routenplaneranfrage im WWW - Wahlprogramm einer Partei - Backanleitung für den Brotbackautomat - Verhalten eines kundenfreundlichen Fahrscheinautomaten - Musiknoten auf einem Notenblatt § Warum ist der als Beispiel gegebene Algorithmus (ggt) deterministisch? 20.11.2005 Prof. Dr. Andreas Schmietendorf 13 Überblick zu Programmiersprachen 20.11.2005 Prof. Dr. Andreas Schmietendorf 14 Der Programmbegriff Algorithmen, die von einem automatischen Prozessor abgearbeitet werden, bezeichnet man als Programme. Ein Programm stellt die Realisierung eines Algorithmus dar. Im Gegensatz zu einem Algorithmus ist ein Programm konkreter und eingeschränkter. - Es wird eine Programmiersprache gewählt, die auf der Basis definierter Grundelemente den Algorithmus vollständig beschriebt. - Für benötigte Daten wird eine bestimmte Darstellung (Repräsentation) gewählt. Quelle: Balzert, H.: Lehrbuch Grundlagen der Informatik, Spektrum Adademischer Verlag, Heidelberg/Berlin 1999 20.11.2005 Prof. Dr. Andreas Schmietendorf 15 Programmieren und Programmiersprachen § Kommunikation „Mensch – Maschine“ § Unterschiede im Sprachvorrat § Mensch Umfangreicher Sprachvorrat § Maschine Eingeschränkter Sprachvorrat 20.11.2005 Prof. Dr. Andreas Schmietendorf 16 Generationen von Programmiersprachen 1. Binäre Maschinensprachen 2. Assemblersprachen 3. Problemorientierte, imperative/prozedurale Sprachen 4. Anwendungsorientierte 4GL-Sprachen 5. Deklarative Programmiersprachen 20.11.2005 Prof. Dr. Andreas Schmietendorf 17 Programmiersprachen und Programmierparadigmen Imperativ Prozedural Objektorienitert C + + C++ + + C# + + EIFFEL + + + + Pascal + + + + Java + + SMALLTALK + + 20.11.2005 + Logikbasiert Regelbasiert Wissensbasiert + + PROLOG SQL Funktionsorientiert + LISP VB Deklarativ + + + + Prof. Dr. Andreas Schmietendorf 18 Algorithmen und Programmiersprachen Syntax und Semantik § Die Menge der grammatikalischen Regeln, die bestimmen, wie die Symbole einer Sprache korrekt zu benutzten sind, heißen Syntax der Sprache. § Die Bedeutung besonderer Ausdrucksformen einer Sprache heißt die Semantik einer Sprache. 20.11.2005 Prof. Dr. Andreas Schmietendorf 19 Algorithmen und Programmiersprachen Syntax von Programmiersprachen: Programmiersprachen sind umfangreiche formale Sprachen. Programme sind dementsprechend syntaktisch korrekte Sätze. int ggt(int a, int b) { if (a == b){ return a; } else if (a < b){ return ggt(a, b - a); } else{ return ggt(a - b, b); } } 20.11.2005 Prof. Dr. Andreas Schmietendorf 20 Algorithmen und Programmiersprachen Semantik von Programmiersprachen: § Grundsätzlich lässt sich die Bedeutung eines Programms durch die spezielle Wirkungsweise bei Ausführung auf einem konkreten Rechner beschreiben. § Um die Bedeutung von Programmen jedoch unmissverständlich zu beschreiben, werden für Programmiersprachen vorzugsweise formale Semantiken angegeben, d.h. es wird eine mathematische Beschreibungsform gewählt. - - Operationale Semantik: Beschreibung der Abfolge einzelner Bearbeitungsschritte -> elementare Schritte auf einer sehr einfachen Maschine Funktionale Semantik: Beschreibung der Funktion durch Festlegung des Ein-/Ausgabeverhaltens (extensionales oder beobachtbares Verhalten) 20.11.2005 Prof. Dr. Andreas Schmietendorf 21 Algorithmen und Programmiersprachen Implementierung von Programmiersprachen (I) § Computer verwenden prozessoreigene Befehlssätze. Diese können in der maschinennahen Programmierung zur Umsetzung von Algorithmen verwendet werden. § Jedoch: - § Komplexere Programme sind unübersichtlich und schwer lesbar. Lösung: - Verwendung höherer Programmiersprachen - Übersetzung der Programme in Maschinensprache durch einen Übersetzer (Compiler) - Interpretation, d.h. unmittelbare Ausführung der Programme durch einen Interpretierer (Interpreter). 20.11.2005 Prof. Dr. Andreas Schmietendorf 22 Algorithmen und Programmiersprachen Implementierung von Programmiersprachen (II) § Compiler und Interpreter sind selbst Programme, die Programme in der entsprechenden Programmiersprache als Eingabe akzeptieren. § Compiler - § erzeugen als Ausgabe ein entsprechendes Programm in der jeweiligen Maschinensprache. Forderung: Die Übersetzung ist semantikerhaltend, d.h. das erzeugte Maschinenprogramm hat die gleiche Wirkung wie das Quellprogramm (siehe auch Fachgebiet Compilerbau) Interpreter - führen das eingegebene Quellprogramm unmittelbar aus, d.h. sie stoßen die Aktionen an, die durch das Programm vorgegeben sind. 20.11.2005 Prof. Dr. Andreas Schmietendorf 23 Algorithmen und Programmiersprachen Programmiersprache Basic: - - Basic hat aufgrund der Verfügbarkeit entsprechender Interpreter im ROM eine starke Verbreitung erfahren. Wegen anfänglich fehlender Strukturierungsmöglichkeiten wurden Konzepte der prozeduralen- und objektorientierten Programmierung sukzessive aufgenommen. Beispiel: 10 INPUT M 20 INPUT N 30 IF M = N THEN GOTO 90 40 IF M <= N THEN GOTO 70 50 LET M = M – N 60 GOTO 30 70 LET N = N – M 80 GOTO 30 90 PRINT M 100 END 20.11.2005 Prof. Dr. Andreas Schmietendorf 24 Algorithmen und Programmiersprachen Programmiersprache Pascal: - - Programme setzen sich aus Folgen von Anweisungen zusammen. Elementar ist die Wertzuweisung. Der Zustand im Speicher und des Ablaufs gibt den Stand eines Programms an. Iteration ist wichtige Kontrollstruktur. Beispiel: PROGRAM ggT; CONST M = 60; N = 30; VAR x,y,z : Integer; BEGIN x:= M; y:= N; WHILE x <> y DO IF x > y THEN x:= x – y ELSE y:= y – x z:= x END. 20.11.2005 Prof. Dr. Andreas Schmietendorf 25 Algorithmen und Programmiersprachen Programmiersprache Java: - Programme sind Familien von Klassen, die Daten als Attribute und Algorithmen als Methoden zusammenfassen (Prinzip der Kapselung). Strukturierung erfolgt durch hierarchische Anordnung von Klassen und das Prinzip der Vererbung (von Attributen und Methoden). Beispiel: public class MathGGT { public static void main(String[] args) { int x = 30; int y = 80; int z; while (x != y){ if (x > y) x = x-y; else y = y-x; } z = x; System.out.println(z); } } 20.11.2005 Prof. Dr. Andreas Schmietendorf 26 Übung Programmiersprachen § Welche Möglichkeiten gibt es, sich wiederholende Programmteile zu programmieren? § Nennen Sie Vor- und Nachteile von Compiler- bzw. Interpretersprachen. § Die Programmiersprache Java ist eine Interpretersprache. Zur Steigerung der Ausführungsgeschwindigkeit werden anstatt des Interpreters so genannte Just-in-Time-Compiler eingesetzt. Machen Sie Vorschläge, wie ein solcher Compiler arbeiten könnte! 20.11.2005 Prof. Dr. Andreas Schmietendorf 27 Programmiersprache Java 20.11.2005 Prof. Dr. Andreas Schmietendorf 28 Java-im Überblick § 1990 James Gosling beginnt Arbeiten an Oak - Idee einer portablen objektorientierten Sprache - Einsatz im Bereich eingebetteter Systeme (Microchips) § 1992 Experiment Video on Demand (interaktives Fernsehen) § 1993 Plattformunabhängiges Programmiersystem Oak § 1995 System Oak zu Java (entspricht Kaffee umbenannt) § 1996 erste industriell verwendbare Version 20.11.2005 Prof. Dr. Andreas Schmietendorf 29 Java-im Überblick § § § Java-Softwareentwicklungskit – Java 2 SDK oder kurz JDK - http://java.sun.com - http://developer.java.sun.com Java ist auf unterschiedlichsten Plattformen verfügbar - Windows95/98, Windows 2000, Windows XP - SUN Solaris (SPARC- und Intel-Version) - LINUX/Intel-Version Strategische Positionierung - Portierbare Anwendungen „Write once run anyware“ - SUN plaziert Java als Middleware und Programmiersprache 20.11.2005 Prof. Dr. Andreas Schmietendorf 30 Java-im Überblick § Java-Softwareentwicklungskit - § Werkzeuge z.B. unter C:\j2sdk1.4.2_08\bin (je nach Installation) Auswahl verfügbarer Werkzeuge - javac - Java Compiler übersetzt Quellcode in Bytecode - appletviewer - lädt HTML-Dokumente und zeigt Applets an - java - Java-Interpreter lädt Java-Bytecode und führt ihn aus - javadoc - erzeugt aufgrund spezieller Kommentare HTML-Doku - javah - Verknüpfung von Java-Klassen mit ext. Code (z.B. mit C++) - javap - Java-Disassembler Java Bytecode in Quelltext zurückübersetzen - jdb - Java Debugger (Test und Fehlersuche) - jar - Java-Archive (Klassen einen Applets mit einem Transfer übertragen) 20.11.2005 Prof. Dr. Andreas Schmietendorf 31 Java-Eigenschaften § einfach: hinsichtlich seiner Erlernbarkeit, u.a. keine Zeiger, einer ausschließlich einfachen Vererbungsmöglichkeit, der Vermeidung der GOTO's, des C-Präprozessors und der Überladungstechniken, § objektorientiert: mit der Ausnahme der einfachen Datentypen, wie int, char und boolean, sind alle anderen Verarbeitungskomponenten Objekte, § verteilt: Java-Klassenbibliotheken wurden von Anfang an so ausgelegt, dass sie eine Realisierung verteilter Systeme über Netzwerke unterstützen, § interpretiert: durch eine virtuelle Maschine (Java Virtual Machine (JVM)) wird der Java-Code als so genannter Bytecode einheitlich interpretiert, § robust: durch die Einfachheit werden eine Reihe typischer Programmierfehler bereits vermieden bzw. sind durch Testhilfen analysierbar, 20.11.2005 Prof. Dr. Andreas Schmietendorf 32 Java-Eigenschaften § sicher: durch die Bereitstellung unterschiedlichster Sicherheitsfunktionen, wie beispielsweise durch für die sogenannte Applet-Technik (s. u.), § architekturneutral: durch die Berücksichtigung der meisten, gängigen Plattformen und deren Spezifika, § portabel: durch die strenge Kapselung plattformabhängiger Merkmale, § performant: Java-Code läuft zwar ca. 20-mal langsamer als übersetzter CCode, jedoch sind dafür die Entwicklungszeiten wesentlich kürzer, § dynamisch: Java lädt genau die Klassen (übers Netz), die die Anwendung benötigt, und passt sich leicht neuen Umgebungen an. 20.11.2005 Prof. Dr. Andreas Schmietendorf 33 Java-Eigenschaften Applets vs. Applikationen § Kleine Anwendung die zur Ausführung einen Web-Browser (inkl. virtuelle Java-Maschine) benötigt und in einer HTML-Seite eingebunden ist. (enthalten keine main()-Methode) § Anwendungen enthalten eine main()-Methode als Startpunkt der Applikation. 20.11.2005 Prof. Dr. Andreas Schmietendorf 34 Java-Beispiel // Ein erstes einführendes Beispiel eines einfachen Java-Programms /* Einführung in die Programmierung */ public class HalloStudenten { public static void main (Strings [ ] args) { System.out.println(„Hallo Studenten an der FHW Berlin“); } } 20.11.2005 Prof. Dr. Andreas Schmietendorf 35 Erläuterungen I § Die ersten beiden Zeilen zeigen die Verwendung unterschiedlicher Java-Kommentare § public steht für ein Zugriffsrecht (aus anderen Klassen und Paketen), class bezeichnet eine Klassendefinition. § System.out.println() ist eine Bibliotheksfunktion, die eine Ausgabe im Konsolenfenster produziert. § Dieser Quellcode muss in einer Datei mit dem Namen „HalloStudenten.java“ gespeichert werden (Eclipse übernimmt durch Angabe des Klassennamens diese Aufgabe). 20.11.2005 Prof. Dr. Andreas Schmietendorf 36 Erläuterungen II § Durch Aufruf des Java-Compilers javac wird die Klasse übersetzt und der Bytecode in der Datei „HalloStundenten.class“ generiert. Mit dem JavaInterpreter java kann der Bytecode dann ausgeführt werden. § Geschweifte Klammern trennen die Teile eines Programms (Anweisungsblöcke). Sie treten immer paarweise auf. § Jedes Programm muss eine Main-Funktion der Form public static void main(String[ ] args) haben. Diese wird als Einstiegspunkt (driving class) in das Programm zuerst ausgeführt. 20.11.2005 Prof. Dr. Andreas Schmietendorf 37 Programmierung von Web-Anwendungen 20.11.2005 Prof. Dr. Andreas Schmietendorf 38 Hypermediale Informationssysteme Hypertextfunktionalität als Kern der Verbreitung § § § § § Vision von Ted Nelson für System zum Finden von Informationen Prototyp eines Hypertextsystems 1990 bei CERN 50 WWW-Server bereits 1993 auf der Basis des HTTP erster grafisch arbeitender Browser „NCSA Mosaic“ sprunghafter Anstieg der Web-Server und ISP‘s (Internet Service Prov.) Hypertext - Verweise auf weitere Textstellen oder Dateien (ursprüngliche Idee der Dokumentenbeschreibungssprache). Hypermedia - Verweise nicht nur auf Textstellen sondern auch auf andere Medien (z.B. *.wav-Dateien) oder komplette Anwendungen. 20.11.2005 Prof. Dr. Andreas Schmietendorf 39 Hypermediale Informationssysteme Interne Funktionen des HTTP-Protokolls § GET - Datei vom Server laden, z.B. zu einem Web-Browser § HEAD - Datei-Information laden § POST - Daten an den Web-Server senden § PUT - Dateien an den Web-Server senden § DELETE - Datei auf dem Web-Server löschen § LINK - Ressourcen verknüpfen § UNLINK - Verknüpfung zwischen Ressourcen aufheben Beispiel: GET /http://www.tpc.org/index.htm HTTP/1.1 If-Modified-Since: Thu, 12 Dec 1997 23:12:32 GMT 20.11.2005 Prof. Dr. Andreas Schmietendorf 40 Hypermediale Informationssysteme Unterschiede HTTP V1.0 zu V1.1 - HTTP V1.0 (3-way-handshake) • Aufwendiger „Hand-Shake“-Mechanismus • Für die Übertragung einer HTML-Seite und referenzierter Dateien (z.B. eingebettete Grafiken) sind mehrere TCP-Verbindungen notwendig • Keine parallele Übertragung von Dateien einer Web-Seite • HTTP V1.0 kann nur ca. 10% der Bandbreite effektiv nutzen - HTTP V1.1 • „Keep Alive“ ermöglicht eine Verbindung aufrecht zu halten bis alle Dateien der Web-Seite übertragen sind. - HTTP-NG (Next Generation) • Ansätze für eine stärkere Modularisierung • Berücksichtigung der Anwendungs-Charakteristika im Sinne eine Quality of Service (ermöglicht z.B. Multimedia-Anwendungen) 20.11.2005 Prof. Dr. Andreas Schmietendorf 41 Hypermediale Informationssysteme Medientypen (MIME-Types) (Multipurpose Internet Mail Eytension) § Darstellung verschiedener Medientypen (Text, Audio, Video) erfordert im Browser verschiedene Programme - § Web-Client kann dem Web-Server die darstellbaren Medientypen mitteilen (Anfragezeile Accept: typ/untertyp ) Web-Server schickt vor dem eigentlichen Dokument eine Antwortzeile mit dem entsprechenden Medientyp (Content-type: image/gif ) Browser verwaltet Tabelle für Zuordnung von Medientypen und die erforderliche Darstellung - Medientypen die vom Browser selbst dargestellt werden können: • text/html, image/gif, image/jpeg - Medientypen deren Darstellung Hilfsprogramme erfordern • model/vrml • Medientyp nicht in der Tabelle >>> Ablegen im Speicher § Zugang zur Web-Technologie für Handy‘s, Pager, PDA‘s - HDML Handheld Device Markup Language 20.11.2005 Prof. Dr. Andreas Schmietendorf 42 Hypermediale Informationssysteme Dokumentenbeschreibungsprache HTML: § logische Elemente eines Dokuments in abstrakter Form beschreiben § logische Elemente sind Kapitel, Unterkapitel, Textabsätze, Listen, Tabellen, Grafiken, Querverweise § physische Elemente für Textformatierungen, Formatvorlagen § Fomulare zur Möglichkeit der Dateneingabe (Eingabefelder, Auswahllisten, Buttons,...) § Eindeutige Adressierung der Dokumete im Internet über einen Unified Ressource Locator (URL) § Befehle des HTML sind sogenannte Tags, wobei es zumeist einen einleitenden und abschließenden Tag gibt, dazwischen steht der entsprechend auszugebende Text. 20.11.2005 Prof. Dr. Andreas Schmietendorf 43 Hypermediale Informationssysteme HTML-Versionen im Vergleich (W3 Konsortiums): HTML V1.0 - Überschriften, Textabsätze, Grafikreferenzen, Hypertext-Links HTML V2.0 - 1995 (noch akademisch geprägt) - kleinster gemeinsamer Nenner für Web-Seiten HTML V3.2 - 1997 (Zusammenarbeit mit der Industrie) - Tabellen, physische Textformatierungen HTML V4.0 - 1998 - Verwendung von Frames (geteilte Seiten) - Cascading Style Sheets - festlegen von z.B. Schriftgröße, -farbe, ... - Verwendung von Scriptsprachen (z.B. JavaSkript) XML V1.0 - 1998 (eXtensible Markup Language) - eXtensible Markup Language 20.11.2005 Prof. Dr. Andreas Schmietendorf 44 Hypermediale Informationssysteme Aufbau des Unified Ressource Locator: Ziel: einheitliche Schnittstelle zum Internet PROTOKOLL://SERVER/VERZEICHNISPFAD/DOKUMENT § Protokoll: http, file, ftp, mailto, ftp, https, ... § Server: - § § IP-Adresse z.B. 164.19.200.20 alternativ Domain Name Service (DNS-Name) Verzeichnispfad: Verzeichnis innerhalb des lokalen Filesystems Dokument: eigentliche auszugebende Datei, über Dateiextension erfolgt die Wahl möglicher Plug-Ins (z.B. *.htm, *.pdf, ...) Beispiel eines URL: http://www.uni-magdeburg.de/schmiete/home/diss/index.html 20.11.2005 Prof. Dr. Andreas Schmietendorf 45 Hypermediale Informationssysteme Erstellung von HTML-Dokumenten: § Einfache ASCII-Datei, neu erstellt oder übernommen z.B. von Word und mit HTML-Befehlen versehene Datei § Verwendung einfacher Editoren (Vorschlag: UltraEdit-32) § Nutzung von Generatoren (Bsp.: Office-Produkte, HotMeTaL, ...) § Verwendung von Entwicklungsumgebungen wie z.B. MS Visual Interdev und Frontpage (für Formulare sinnvoll) § Nutzung der Generatorfunktionen von Textverarbeitungsprogrammen wie z.B. der Microsoft Office-Produktfamilie Einstiegsdatei typischerweise index.htm oder default.htm (*.htm unter DOS und *.html unter UNIX oder WindowsNT) 20.11.2005 Prof. Dr. Andreas Schmietendorf 46 Hypermediale Informationssysteme Möglichkeiten der Einstellung § Angebot der Internet-ServiceProvider (ISP), z.B. T-Online § Im Rahmen von direkten InternetZugängen und eigenem HTTPServer § Verwendung akademischer ServerSysteme § Probleme bei dynamischen Komponenten, z.B. zu startende Services HTTP-Server Beispiel: WindowsNT Server inetpub/wwwroot/default.htm TCP/IP-Netz Modem Laptop DFÜ IBM RS/6000 IBM RS/6000 Einstellung per FTP (RAS), NW-Laufwerke, NFS, 20.11.2005 Prof. Dr. Andreas Schmietendorf 47 Hypermediale Informationssysteme Grundaufbau einer einfachen HTML-Datei: <HTML> <!-----Kommentarzeile-------> <HEAD> <TITLE>Dokumente und Informationen</TITLE> </HEAD> <BODY> <H1>Dokumente und Informationen</H1> <HR> </BODY> </HTML> 20.11.2005 Prof. Dr. Andreas Schmietendorf 48 Hypermediale Informationssysteme Merkmale der HTML-Syntax: § Befehle meist aus einleitenden und abschließenden Tag, keine Beachtung von Groß- und Kleinschreibung § Leerzeichen im Text zusammengefaßt, explizit mit &#160 § Verschachtelte Tags führen zu Fehlern § Zusätzliche Attribute bei einleitenden Tag möglich, z.B. die Ausrichtung einer Überschrift der 2. Kategorie. Bsp.: <h2 align=center>Ausgabetext<h2> § Kommentare in HTML <!--Kommentar--> § Sonderzeichen im Ausgabetext wie z.B. „ä“ sollten für die international richtige Darstellung durch „&auml“ ersetzt werden 20.11.2005 Prof. Dr. Andreas Schmietendorf 49 Hypermediale Informationssysteme Vorgehensweise zur Erstellung von HTML-Systemen: § Analyse der auszugebenden Daten (über was soll informiert werden) § Navigationsstruktur grob entwerfen (z.B. Baumstrukturen verwenden) § Grundgerüst der HTML-Datei erstellen § Maskierungsvorschriften für Umlaute, Sonderzeichen beachten § Seiten durch Zeilenumbrüche und Leerzeilen verwenden § Verwenden von mehreren kleinen HTML-Dateien § - nicht größer als 64 KByte (typische Größen ca. 5 KByte) - Audio/Video-Sequenzen sollten explizit angekündigt werden Test der erstellten Seiten unter verschiedenen Browser-Systemen 20.11.2005 Prof. Dr. Andreas Schmietendorf 50 Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (1): § § § Textformatierung (Überschriften <H1>Text</H1>, Absätze <P>, Zentrieren <CENTER>, Zeilenumbruch <BR>, Trennlienie <HR> ) Textattribute - physikalische à <I>...</I>, <B>...</B>, <blink>...</blink> - logische à <CITE>...</CITE>, <CODE>...</CODE> Listen (z.B. numerierte und unnumerierte Listen) <OL> <UL> <LI> &Auml;pfel </OL> § § <LI> </UL> Grafiken anzeigen (<IMG SRC=„Adresse des Bildes>, die Angabe einer alternativen Text-Ausgabe ist möglich) Tabellen <TABLE> <TR> <TH>Kopfzeile der Tabelle</TH> </TR> <TR> <TD>Datenzelle</TD></TR> </TABLE> 20.11.2005 Prof. Dr. Andreas Schmietendorf 51 Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (2): § Frames für Teilung der Seite in z.B. linken und rechten Bereich <frameset cols="20%,60%"> <frame src="cmgverw.htm" name="links"> <frame src="ov_cmg.htm" name="rechts"> </frameset> § Hypertextlinks (Start- und Zielpunkt) Links auf Dokumente: <A HREF = „Adresse des Zieldokuments“>...</A> Link innerhalb der WWW-Seite: <A HREF = „#Marke“>...</A> <A NAME = „Marke“>...</A> § Link auf Internetdienste: email, news, ftp, gopher, telnet Imagemaps à Einteilung einer Grafik in anklickbare Bereiche 20.11.2005 Prof. Dr. Andreas Schmietendorf 52 Hypermediale Informationssysteme Übersicht zum HTML-Befehlsumfang (3): § Multimedia- und Fremdprogrammreferenzen (Browserabhängig) Standard ist das OBJECT-Tag, bei MS Audio mit SOUND-Tag <OBJECT DATA=„test.avi“ TYPE=„video/x-msvideo></OBJECT> § Java-Applets mit APPLET-Tag Interaktive Formulare zur Dateneingabe Formulardefinition: <FORM ACTION=mailto:...METHOD=POST> Eingabefelder: <INPUT TYPE=„text“ NAME=„VARIABLE“> Auswahlcheckboxen: <INPUT TYPE=„checkbox“ NAME=„VARIABLE“> Auswahllisten (Scrollbar): <SELECT NAME="BenchmarkNutzung“SIZE=4 MULTIPLE> <OPTION>Harwarekenndaten Bestätigungsbutton: <INPUT 20.11.2005 TYPE=„submit“ [NAME=„OK-Button“]> Prof. Dr. Andreas Schmietendorf 53