Grundlagen 1 Lernziel der Vorlesung: Einblicke und Überblicke zu den Mitteln der Informatik Hardware und Software den Methoden der Informatik Analysieren, Entwerfen, Algorithmieren, Programmieren, Testen, Dokumentieren, usw. Was ist Informatik? Informatik = Information + Mathematik (oder Automatik) (Prof. Karl Steinbuch, 1957 ) Informatik Computer Science Angewandte Informatik Technische Informatik Praktische Informatik Theoretische Informatik Teildisziplinen in der Informatik 2 Theoretische Informatik Grundlagen Automatentheorie, Berechenbarkeits- und Komplexitätstheorie, Graphentheorie, Kryptologie, Logik, usw. Praktische Informatik softwareseitige Grundlagen Algorithmen, Datenstrukturen, Programmiersprachen, Betriebssysteme, Datenbanktechnologie, Softwaretechnik, usw. Technische Informatik hardwareseitige Grundlagen Mikroprozessortechnik, Rechnerarchitektur, verteilte Systeme, Rechnerkommunikation, Netzwerktechnologie, Robotik, Automatisierungstechnik, usw. Angewandte Informatik interdisziplinäre Wissenschaften Wirtschaftsinformatik, Computerlinguistik, Künstliche Intelligenz, Bioinformatik, Chemoinformatik, Geoinformatik, Medieninformatik, Umweltinformatik, Computervisualistik, medizinische Informatik, Rechtsinformatik, usw. Was ist ein Computer?
3 1. Monitor 2. Hauptplatine (motherboard) 3. Hauptprozessor 4. Arbeitsspeicher 5. PCI-Karten/ Steckkarten 6. Netzteil/ Stromversorgung 7. Optisches Laufwerk 8. Festplatte 9. Computermaus 10. Tastatur Etwas ätterer Computer ENIAC, 1946 (Electronic Numerical Integrator and Computer) 4 2
Erster Computer Bug 5 Eine Motte in einem Relais des Computers Mark II Aiken Relay Calculator führte zu einer Fehlfunktion. Noch ältere aber zuverlässigere Geräte Abakus 6 3
Computer Generationen 7 Generation Zeit Technologien Verabeitungsgeschwindigkeit/ Speicherkapazität 1. 1946-1956 Elektronenröhre/ Relais 0.02 MIPS / 1-2 KByte 2. 1957-1963 Transistor 0.1 MIPS/ 32 KByte 3. 1964-1971 Integrierter Schaltkreis 5 MIPS/ 1-2 MByte 4. 1971-Heute Mikroprozessor 50-100 MByte/ 8 MByte - 4 GByte 5. Heute- Zukunft???? MIPS Megainstructions per second (Millionen Befehle pro Sekunde) KByte Kilobyte (1024 Byte) MByte Megabyte GByte Gigabyte Was ist ein Computer? Was kann ein Computer tun? 8 Berechnungen durchführen Daten speichern und verarbeiten Andere Geräte steuern Mit anderen Geräten und Menschen in Verbindung treten aber nur, wenn man ihm ganz genau erklärt, wie er es machen soll! Was macht einen Computer so mächtig? Computer Programme (Computer gegen Auto) Der Kern eines Programmes Algorithmus 4
Algorithmen 9 Suche der kleinster Zahl in einer Zahlenfolge {23, 42, 4711} min = 23 {198, 23, 14, 43, 938, 3753, 99, 883, 124} min = 14 {124, 198, 123, 134, 43, 938, 3753, 99, 883, 124, 77, 43, 56, 90, 223, 1490, 76, 203, 105, 390, 930, 205, 48, 24, 34, 44, 65, 704, 33 309, 44, 193, 2205, 998, 579, 778, 889, 1025, 337, 809, 666, 890, 1108} min = 24 Der Algorithmus in Umgangssprache: 1. Lies eine ganze Zahl ein und notiere sie als min. 2. Falls keine weitere Zahl vorhanden, gib die Zahl min aus und stoppe. Sonst lies eine weitere Zahl ein. 3. Falls die Zahl kleiner als min ist, setze min auf diese Zahl und gehe zu Schritt 2. 4. Falls die Zahl größer als min ist, gehe zu Schritt 2. Flussdiagramm 10 Start Lies eine Zahl min ein Gibt es noch eine Zahl? Gib min aus Lies eine Zahl x ein Stop x < min? 5 min := x
Eine andere Darstellung 11 Lies eine Zahl min ein solange noch eine Zahl existiert Lies eine Zahl x ein x < min min := x Gib min aus Struktogramm (Isaac Nassi und Ben Shneiderman, 1972) Struktogramm (Nassi-Shneiderman-Diagramm) 12 Grundregeln für Struktogramme: 1. Jeder Strukturblock ist rechteckig. 2. Jeder Block hat nur einen Eingang (oben) und einen Ausgang (unten). 3. Blöcke stehen entweder untereinander oder sie sind vollständig ineinander enthalten. 4. Struktur ist knapp, aber verständlich zu kommentieren. 5. Kein Struktogramm sollte länger als eine Seite sein. (draus folgt:) 6. Teilprobleme sollen als separate Modulblöcke ausgeliedert werden. Grundtypen von Strukturblöcken, mit denen sich jeder Algorithmus formulieren lässt: 1. Sequenzblock Folge von Anweisungen 2. Selektionsblock alternative Ausführung von Anweisungen 3. Interationsblock wiederholte Ausführung von Anweisungen 4. Modulblock black box für separat erläutertes Teilproblem 6
Sequenzblock 13 Folge von unbedingten Anweisungen: A1, A2,... An: Beispiel A1 A2 An Setze den Zähler1 auf Null Setze den Zähler2 auf Zwei Setze den Zähler3 auf Drei Selektion (Verzweigung) 14 Alternative 1. Alternative Bedingung 2. Alternative Beispiel x < y min := x min := y 7
Mehrfachauswahl 15 Mehrfache Alternative Mehrfachauswahl mit Fehlerfall Fall 1 Fall 2 Fall 3... Sonstfall Beispiel Benutzereingabe R Satz lesen C Satz ändern D Satz löschen A Satz anfügen Sonstfall Ausgabe: unerlaubte Eingabe Iterationsblock (Schleife) 16 Schleife mit Kopfprüfung Bedingung Schleifenköper Beispiel solange Zähler < Endwert Summe := Summe + Zähler Zähler := Zähler + 1 8
Iterationsblock (Schleife) 17 Schleife mit Fußprüfung Schleifenköper Bedingung Beispiel Eingabe solange Eingabe falsch Euklidischer-Algorithmus 18 x < 1 Lies x Lies y y >= 1 Ausgabe: falsche Eingabe solange x ungleich y x > y Ausgabe: x:= x y y:= y x falsche Eingabe Ausgabe x 9
Ein Beispiel 19 Schritt x y max{x, y} min{x, y} 0 123 36 123-36 = 87 1 87 36 87-36 = 51 2 51 36 51-36 = 15 3 15 36 36-15 = 21 4 15 21 21-15 = 6 5 15 6 15-6 = 9 6 9 6 9-6 = 3 7 3 6 6-3 = 3 8 3 3 3-3 = 0 NB: Statt Differenz (x y) verwendet der originale euklidische Algorithmus die Restfunktion: rs(x, y) := x y x y. Algorithmus Beschreibung 20 Einer Algorithmus ist eine Folge von eindeutigen und schrittweise in einer bestimmten Reihenfolge auszuführenden Anweisungen Einer Algorithmus soll folgenden Eigenschaften haben: 1. Das Verfahren muss in einem endlichlangem Text eindeutig beschreibbar sein. 2. Jeder Schritt des Verfahrens muss auch tatsächlich ausführbar sein. 3. Das Verfahren darf zu jedem Zeitpunkt nur endlich viel Speicherplatz benötigen. 4. Das Verfahren darf nur endlich viele Schritte benötigen. 5. Der Algorithmus muss bei denselben Startbedingung das gleiche Ergebnis liefern. 6. Der nächste anzuwendende Schritt im Verfahren ist zu jedem Zeitpunkt eindeutig bestimmt. Bemerkungen: Es gibt mehrere mathematische Definitionen von konkreten Algorithmusklasse. Algorithmus ist unabhängig von der Beschreibungssprache. Es gibt mehrere (nicht notwendigerweise 10 gleich gute) Algorithmen für ein Problem