© 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):
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: