Woche 1 Di:
Computer und Algorithmen
Zeitalter des Internets (Kommunikation/Information) - Zeitalter der Computerrevolution - vergleichbar mit industrieller Revolution
(Steigerung der Information - ...der geistigen Kräfte - ... der körperlichen Kräfte)
Bedeutung des Computers: Informatik (Computer Science), IT, DV
Das Revolutionäre am Computer: Er ist eine Maschine, die geistige Routinearbeiten durchführt (einfache [Basis-] Operationen, aber schnell), Bsp.: Suchen eines Namens in einer Liste, Sortieren, ...
Vorteile des Computers:
- hohe Geschwindigkeit:
- elektronische Schaltkreise
- schnelle Entwicklung der Rechnertechnologie
- aber: es gibt immer wieder Probleme, von denen man nachweisen kann, dass sie zu komplex sind
- große Zuverlässigkeit:
- meisten Fehler sind Programmierfehler (menschliche Fehler)
- aber: Stromausfall
- hohe Komplexität begünstigt menschliche Fehler
- hohe Speicherkapazität
- riesige Kapazität: 80GB sind 80.000.000.000 Buchstaben = 30 Mill. Buchseiten
- schneller Zugriff (RAM)
- aber: Mensch kann intelligenter zugreifen, lässt Unwichtiges weg
- geringe Kosten
- Preisverfall
- aber: Rationalisierung
D.h. aber: Computer kann nur Aufgaben erledigen, die durch einfache Operationen darstellbar sind bzw. in eine Folge solcher einfachen Operationen zerlegbar sind. Außerdem: Dem Computer muss die Aufgabe in dieser Form mitgeteilt werden können.
Eine solche Zerlegung einer Aufgabe in kleine, vom Computer durchführbare Basisoperationen nennt man Algorithmus. Ein Algorithmus ist
- eine Beschreibung eines allgemeinen Verfahrens
- zur Lösung einer gestellten Aufgabe
- unter Verwendung ausführbarer Basisoperationen (elementarer Verarbeitungsschritte)
Ein Algorithmus ist
- präzise
- in festgelegter Sprache abgefasst
- endlich.
Algorithmus ist Handlungsvorschrift, keine Problembeschreibung.
In der Informatik weitere Präzisierung:
- geeignetes Modell für den Computer (Turing-Maschine, Random-access-Maschine, alle sind äquivalent -> Theorie der Berechenbarkeit -> Informatik-Nebenfach-Studium)
- Angabe der möglichen Basisoperationen -> Programmiersprache
Konkrete Ausführung eines Algorithmus auf dem Computer heißt Prozess.
Einheit, die den Prozess ausführt, heißt Prozessor. (In diesem Sinne kann das auch ein Mensch oder eine beliebige Maschine sein).
Computer ist spezieller Prozessor.
Drei Hauptkomponenten: (die Hardware) -> Bild!!!
- Zentraleinheit (CPU)
- führt die Basisoperationen aus
- Speicher (RAM, Zwischenspeicher (Cache), Festplatten, Bänder, Disks)
- enthält die ausführbaren operationen des Algorithmus
- Informationen (Daten, Objekte) mit denen gearbeitet wird
- Ein- und Ausgabegeräte (I/O)
- Kommunikation: über diese werden Algorithmus und Daten in den Speicher bzw. aus dem Speicher heraus gebracht.
Bsp. Anmeldung im Unix-Pool MA 241
- Studierendenausweis oder Imm.-Bescheinigung von mindestens einem Gruppenmitglied besorgen
- Bibliotheksausweis von mindestens einem Gruppenmitglied besorgen
- Gruppennummer besorgen
- in den MA241 zur Anmeldung gehen
- Sagen, dass man in Veranstaltung Programmiermethoden ist und sich anmelden will
- Gruppennummer sagen
- Stud.-Ausweis und Bibliotheksausweis (mindestens einer der Gruppe) vorzeigen.
- Auswahl:
- Gehen
- oder Rechner geben lassen und Passwort setzen (vgl. 1. Übungsblatt)
TEST: Kriterien erfüllt?
Aufgabe: Entwerfe einen Algorithmus, der einen gegebenen DM-Betrag in Euro umrechnet und umgekehrt.
Programmiersprachen
Ausführung eines Algorithmus auf dem Prozessor setzt voraus, das dieser die einzelnen Schritte interpretieren kann, d.h.:
- er muss sie verstehen
- und ausführen können.
Erreichbar durch schrittweise Verfeinerung bis hin zum Verständnisniveau des Prozessors.
Computer als Prozessor: Algorithmus in Programmiersprache ausgedrückt.
- Einfachste Sprachen: Maschinensprachen (assembler), direkt vom Prozessor ausführbar
- zur Vereinfachung: höhere Programmiersprachen,
- ein Befehl fasst mehrere Basisoperationen zusammen,
- sie sind nicht direkt vom Prozessor ausführbar,
- sondern müssen von einem Programm in Maschinensprache übersetzt werden
Beim Übersetzen aus einer höheren Programmiersprache in Maschinensprache gibt es zwei Möglichkeiten:
- Interpretieren (Programm heißt Interpreter, Sprachen Skriptsprachen)
- jede Anweisung wird gelesen, übersetzt, und ausgeführt
- bei jedem Programmlauf wieder neu übersetzt
- Nachteil: langsam
- Vorteil: komfortabler, schnellere Programmentwicklung (z.B. Zum Testen)
- Bsp.: BASIC, Perl, Python, Javascript, Matlab
- Compilieren:
- Compiler übersetzt das ganze Programm in sog. Objekt code
- dieses kann dann ohne Neuübersetzung beliebig oft laufen gelassen werden
- Vorteil: niedrigere Laufzeit
- Bsp.: C, C++, FORTRAN, Pascal, Java
Java ist Mischform (Compiler liefert Bytecode, der vom Browser interpretiert werden kann), Matlab mittlerweile auch (tw. vorkompiliert).
Sammlung von Programmen auf dem Rechner: Software.
- Anwendungssoftware:
- Textverarbeitung,
- Entwicklungsumgebung, Matlab
- Statistikprogramm
- Systemsoftware
- Betriebssystem
- Editor
- Compiler
- Hardware
Algorithmen vs. Programmiersprachen
Algorithmen sind ''wichtiger'' als Programmiersprachen und Computer.
Programmiersprachen sind Mittel zum Zweck.
Algorithmus
- ist grundlegend,
- ist erforderlich zur Erstellen eines Programms und dieses wiederum zur Durchführung des Prozesses (auf dem Rechner)
- unabhängig von der Programmiersprache
- unabhängig vom Computertyp
- damit. Unabhängig von der Tagestechnologie
Teilgebiete der Mathematik und Informatik (Grenzgebiete zwischen ...), die sich mit Algorithmen befassen:
- Entwurf, Design von Alg.
- Berechenbarkeit: Probleme, für die es keinen Algorithmus gibt? s. Tutoriumseinteilung
- Komplexität, Aufwand
- Korrektheit