© 2007 Prof. Dr. Alfred Schreiber Einführung zu den Teilmodulen "Algorithmen" und "Modellbildung / Simulation" Sommersemester 2007,Universität Flensburg ----------------------------------------------------------------------------- Informatik als problemlösende Disziplin "Mechanisierung der Abstraktion" Die Informatik löst praktische und theoretische Probleme nach einem allgemeinen Schema, in dem sich folgende Teilprozesse identifizieren lassen: 1. geeignete Abstraktionen (Modellbildungsprozesse nach dem Muster der angewandten Mathematik) 2. Abbildung der Modelle in Datenstrukturen, die in einem Rechner (Computer) darstellbar sind 3. maschinelle Verarbeitung der zugehörigen Ausgangsdaten eines Problems (Eingabe), wobei möglichst effiziente Algorithmen benutzt werden 4. Aufbereitung und Ausgabe der Daten, welche die Lösung des gestellten Problems beschreiben Man hat die Informatik treffend durch das Schlagwort: "Mechanisierung der Abstraktion" gekennzeichnet. Formales Schema: E(eingabedaten) ---- f ---> A(usgabedaten) Die Verarbeitung der Elemente x von E geschieht durch einen Algorithmus f (berechenbare Funktion E --> A, die zu einer Eingabe eine Ausgabe ermittelt). Das Ergebnis f(x) gehört zur Menge A. ----------------------------------------------------------------------------- Algorithmen Der Begriff "Algorithmus" Wortherkunft: lateinische Fassung eines arabischen Namens (9. Jh.) Bedeutung: mechanisch bzw. maschinell ausführbare Rechenverfahren (Manipulation von Zeichen) Beispiele (tägliches Leben, Schulmathematik): * Kochrezepte (1. man nehme ..., 2. ... usf.) * Programm einer Waschmaschine ("festverdrahtet") * Ausführung von Grundrechenarten (Dezimalsystem) * Euklidischer Algorithmus (ggT) * Lösen einer quadratischen Gleichung u.a.m. Charakteristische Eigenschaften eines Algorithmus Diskretheit: Ein Algorithmus besteht aus einer Folge von Schritten. Determiniertheit: Bei gleichen Startbedingungen erzeugt er stets dasselbe Endergebnis. Eindeutigkeit: Nach jedem Schritt lässt er sich auf höchstens eine Art fortsetzen. Endlichkeit: Er endet nach endlich vielen Schritten. (An Beispielen sind diese Eigenschaften leicht zu bestätigen.) Warnung: Bei dieser Aufzählung handelt es sich nicht um eine Definition von "Algorithmus" im Sinne der Mathematik. ----------------------------------------------------------------------------- Programmiersprachen Eine Programmiersprache ist eine sog. formale Sprache, die ein Computer "verstehen" kann (vermittels einer Bedeutungszuweisung der einschlägigen Ausdrücke und Anweisungen). Compiler und Interpreter Es gibt zwei grundsätzlich verschiedene Prinzipien, nach denen Programmiersprachen arbeiten: Compiler-Prinzip (Übersetzer) Prinzip der Interpretierung (Interpreter) Compiler: übersetzt ein Programm vor seiner Ausführung auf einem Computer in die Maschinensprache eines Rechners. Aus dem Quellcode stellt der Compiler Binärcode her (Compilat). Beispiele: Fortran, Cobol, Lisp, C/C++, Pascal, u.a. Interpreter: arbeitet wie ein Simultandolmetscher, d.h. übersetzt den Programmtext während der Laufzeit. Beispiele: Basic, Smalltalk, Prolog, Perl, Mathematica, u.a. Vor- und Nachteile: Ein übersetztes Programm wird schneller ausgeführt als ein interpretiertes. Dafür sind Compilersysteme häufig komplexer zu bedienen. Für einige Programmiersprachen gibt es Compiler und Interpreter (Basic, Prolog, etc.). In anderen Fällen (Basic, Java) übersetzt ein Compiler in eine noch zu interpretierende Zwischensprache. Solche Systeme heißen Precompiler. Skriptsprachen und Verwandte Anwendersoftware lässt sich oft mit Hilfe einer eingebauten Interpreter-Sprache vom Nutzer um neue Funktionen erweitern und so an spezialisierte Aufgaben anpassen. Dies geschieht durch (mehr oder weniger) kleine Codestücke ("Skripte", engl. "scripts"), die an vorgesehener Stelle einzufügen sind (Einbettung). Beispiele: * Microsofts Basic in Büro-Anwendungen (VBA: Visual Basic for Applications) * Skriptsprachen für Internet-Software (JavaScript, ActionScript, etc.) Die Standards für Internet-Skriptsprachen spezifiziert das ECMA-Kommitee (Richtlinie ECMAScript-262, vgl. www.ecma.ch/stand/ecma262.htm) Die Programmiersprache JavaScript Die wichtigsten Eigenschaften von JavaScript (JS) (unter anderem maßgeblich für die Wahl als Sprache in einem Einführungskurs): * JS ist eine Skriptsprache, die hauptsächlich dazu dient, statische Webdokumente durch dynamische und interaktive Elemente anzureichern (JS ist also keine Allzweck-Programmiersprache). * JS ist weit verbeitet und in der Regel auf jedem Rechner mit Internet-Browser verfügbar. Der Browser interpretiert JS-Quellcode (ohne weiteres mit einem beliebigen Texteditor zu erstellen). * JS ist objekt-basiert (nicht streng objekt-orientiert wie z.B. Java) und ermöglicht Anfängern einen ersten Zugang zur Programmierung von Objekten. * JS ist leicht zu erlernen und erfordert keine Vorkenntnisse einer anderen Programmiersprache. Späterer Nutzen: für die eigene Website! ----------------------------------------------------------------------------- Grundlegende Elemente von HTML Hypertext-Markup-Language (HTML) HTML: abgeleitet aus SGML (Standard-Generalized-Markup-Language nach internationaler Norm ISO 8879:1986, dt. "Genormte verallgemeinerte Auszeichnungssprache" nach DIN EN 28879:1991) Prinzip von Auszeichnungssprachen Strikte Trennung von Inhalt/Struktur (Gliederung) einerseits von der Darstellung eines Textes andererseits, und zwar durch logische Formatierung Anmerkung: Dieses Prinzip wurde in HTML nicht konsequent umgesetzt (z.B. an Auszeichnungselementen für Fett- und Kursivdruck etc. ersichtlich). Technisch geschieht die Auszeichnung durch in spitze Klammern notierte Merkmale (engl. Tags): Beginn der Auszeichnung durch Merkmal X Ende der Auszeichnung durch Merkmal X Beispiel:

Was ist Informatik?

Aho und Ullman kennzeichnen Informatik als Mechanisierung der Abstraktion ...

Hierbei steht H1 für eine Überschrift 1. Ordnung (es gibt entsprechende Tags bis H6) und P für einen Textabsatz (engl. paragraph). Die logische Auszeichnung einer Überschrift lässt offen, wie der betreffende Text dargestellt wird (Schriftgröße, Schriftart, Farbe etc.). Auch über die Erscheinungsweise von Textabsätzen ist durch das Paragraph-Tag noch nichts festgelegt. Dies geschieht erst durch eine nachträgliche (im Prinzip jederzeit veränderbare) Interpretierung (z.B. mit Hilfe von Stilvorlagen, engl. style sheets). Die Tags müssen korrekt geschachtelt werden: ... ... ... Fehlerhaft sind Überkreuzungen: ... ... ... Es gibt einige Auszeichnungsmerkmale ohne ausleitende Klammer, etwa:
erzwungener Zeilenumbruch Anzeige einer Bilddatei Einbetten einer Multimedia-Datei Kommentar (...) Aufbau eines HTML-Dokuments Eine Dokument (HTML) gliedert sich in zwei Hauptabschnitte: Kopf (HEAD) und Körper (BODY): Beispiel:

Was ist Informatik?

Aho und Ullman kennzeichnen Informatik als Mechanisierung der Abstraktion ...

Zum Kopf gehören diverse Informationen: Titel, Autor, Datum, Inhaltsbeschreibung u.a.m., wovon das meiste für den Betrachter nicht sichtbar wird. Beispiel

Was ist Informatik?

Aho und Ullman kennzeichnen Informatik als Mechanisierung der Abstraktion ...

Zusammenstellung einiger Auszeichnungsmerkmale ... Dokumentbereich ... Kopf des Dokum. ... Titel des Dokum. Meta-Information ... Rumpf des Dokum. Kommentar (...)

...

Überschrift (1)
...
Überschrift (6)

...

Text-Absatz
Einrückung ...
... Betont ... Stark betont
Erzw. Zl.umbruch
Horiz. Linie
...
Formularbereich Eingabe Etliche HTML-Tags erlauben das Einfügen sog. Attribute. Zum Beispiel verfügt (s.o.) das META-Tag über NAME und CONTENT. Das BODY-Tag verfügt über eine Vielzahl von Attributen. Eine davon (BGCOLOR) legt die Hintergrundfarbe der Fläche fest, auf welcher der Inhalt des Dokuments angezeigt wird. Beispiel: Der Wert, der hier der BGCOLOR-Eigenschaft von BODY zugewiesen wird, kann auch als hexadezimaler RGB-Farbname angegeben werden: #FAEBD7 (Rot: FA, Grün: EB, Blau: D7), d.h. die folgende Zeile hat denselben Effekt: Vereinbarung zur Notation: HTML-Elemente und ihre Attributbezeichner sollen (obwohl nicht erforderlich) in Großbuchstaben geschrieben werden (bessere Abgrenzung gegenüber Skriptcode). JavaScript-Code soll in üblichen Kleinbuchstaben mit unterscheidenden Großbuchstaben notiert werden. ----------------------------------------------------------------------------- Der Arbeitsprozess Wahl und Einstellung des Browsers Netscape Navigator (Version 7) MIE (Microsoft Internet Explorer, ab Version 5) Mozilla Firefox Opera Einstellung Netscape 1. Skript-Einstellung Edit > Preferences > (Category) Advanced > Scripts & Plugins: Enable JavaScript 2. Fehleranzeige-Einstellung a) Netscape beenden b) Im Netscape-Unterpfad ...\Users\ in der Datei prefs.js die folgende Zeile hinzufügen: user_pref("javascript.console.open_on_error", true); Einstellung Internet Explorer Extra > Internetoptionen...> (Register) Erweitert: Skriptdebugging deaktivieren (AUS) Skriptfehler anzeigen (EIN) Wahl und Einstellung des Texteditors Mögliche Editoren: Notepad (von MIE aus aufrufbar, nicht zu empfehlen) Crimson Editor (Freeware: empfehlenwert!) oder andere ... Es ist ausschließlich reiner Text zu verarbeiten (nicht Word oder WordPad etc. verwenden!) Arbeitszyklus, Fehlersuche ("Debugging") Der Arbeitszyklus ist folgendermaßen aufgebaut: 1. Quellcode-Datei im Editor schreiben bzw. bearbeiten 2. Quellcode-Datei im Browser öffnen bzw. aktualisieren 3. Ergebnis im Browser beobachten und prüfen 4. Falls Fehler auftreten, nach Nr. 1 5. Falls sonstige Änderungen gewünscht, nach Nr. 1 6. Fertig. Verwendung von Muster-Dateien Beispiel: Gerüst einer HTML-Datei mit JS-Code Musterdatei Für die Veranstaltungen "Algorithmen" und "Modellbildung / Simulation" werden geeignete HTML-Musterdateien mit eingebauten Formularen zur Verfügung gestellt (kurz dokumentiert in der Datei: schablonen.txt) -----------------------------------------------------------------------------