Ausgehend von Beispielen werden grundlegende Paradigmen der Informatik vermittelt. Die Schwerpunkte liegen auf dem Algorithmenbegriff, auf einer Einführung in die Programmierung auf Grundlage der Programmiersprache Java und auf objektorientierten Konzepten. Ferner wird an die Aufwandsanalyse von Algorithmen und die Funktionsweise von Rechnern herangeführt. Anhänge zur Java-Programmierumgebung und zu den Grundkonzepten der Programmiersprache C++ ergänzen den praktischen Teil. So gelingt der Einstieg in das Informatikstudium! Inhalt Was ist Informatik? - Programmierung - Algorithmen und Datenstrukturen - Vom Programm zum Rechner Zielgruppe Studienanfänger mit Informatik im Haupt- und Nebenfach an Fachhochschulen und Universitäten Informatik-Lehrer und Schüler Autoren Prof. Dr. Heinrich Müller und Dr. Frank Weichert lehren und forschen an der Technischen Universität Dortmund. Vorwort 4 Inhaltsverzeichnis 7 Einleitung 11 Inhalt und Lernziele 11 Verwendung zum selbstständigen Studium 12 Verwendung als vorlesungsbegleitendes Lehrbuch 13 Was ist Informatik? 15 1 Informatik 16 1.1 Was ist Informatik? 16 1.2 Teilgebiete der Informatik 17 Programmierung 21 2 Vom Problem über den Algorithmus zum Programm 22 2.1 Vorgehensweise bei der Lösung von Programmierproblemen 22 2.2 Algorithmen 23 2.3 Beispiel: Jüngster Studierender 25 3 Algorithmenentwurf 30 3.1 Beispiel: Minimum einer Menge von Zahlen 30 3.2 Grundkonzepte von Algorithmen 33 4 Grundkonzepte der Programmierung 43 4.1 Programmierung und Programmiersprache Java 43 4.2 Grundstruktur von Java-Programmen 44 4.3 Beispiel: Minimum einer Menge von Zahlen 51 4.4 Variablen 53 4.5 Datentypen 57 4.6 Operatoren und Ausdrücke 62 4.7 Typkonvertierung 68 4.8 Anweisungen und Ablaufstrukturen 70 4.9 Konventionen 77 4.10 Beispiel: Mittelwert einer Folge von Zahlen 78 5 Funktionen 83 5.1 Beispiel: Sortieren einer Menge von Zahlen durch Minimumsuche 83 5.2 Funktionen 90 5.3 Gültigkeitsbereich von Deklarationen 95 6 Rekursion 98 6.1 Beispiel: Sortieren einer Menge von Zahlen durch Mischen 98 6.2 Prinzip der Rekursion 110 7 Klassen und Objekte 114 7.1 Beispiel: Suchen in einem Datenbestand 114 7.2 Klassen 118 7.3 Objekte 126 8 Objektorientierte Programmierung 141 8.1 Objektorientierte Modellierung 141 8.2 UML-Notation 146 8.3 Vererbung 148 8.4 Sichtbarkeit von Information 159 8.5 Polymorphismus 162 9 Klassenbibliotheken 170 9.1 Einbinden von Klassenbibliotheken 170 9.2 Applets 171 9.3 Systemzeit 174 9.4 Streams 176 9.5 Paketsichtbarkeit 179 10 Grafikprogrammierung mit Swing 184 10.1 Grundlagen von grafischen Benutzungsoberflächen 184 10.2 Einfache Benutzungsoberfläche 186 10.3 Beispiel für einfache Grafikbefehle 196 11 Andere Programmierstile 209 11.1 Übersicht 209 11.2 Imperative Programmierung 210 11.3 Funktionale Programmierung 210 11.4 Logische Programmierung 211 Algorithmen und Datenstrukturen 212 12 Asymptotische Aufwandsanalyse 213 12.1 Zeitaufwand 213 12.2 Speicheraufwand 217 13 Sortieren 218 13.1 Sortieren durch Minimumsuche 218 13.2 Sortieren durch Mischen (1) 220 13.3 Exkurs: Vollständige Induktion 224 13.4 Sortieren durch Mischen (2) 228 13.5 Einige Bemerkungen zum Sortierproblem 229 14 Mengen 232 14.1 Operationen auf Mengen 232 14.2 Mengenverwaltung mit unsortiertem Array 233 14.3 Mengenverwaltung mit sortiertem Array 236 14.4 Mengenverwaltung mit ausgeglichenem binären Suchbaum 243 14.5 Mengenverwaltung mit Hashing 250 Vom Programm zum Rechner 254 15 Hardware und Programmierung 255 16 Rechnerarchitektur und Maschinensprache 257 16.1 Rechnerarchitektur 257 16.2 Hauptspeicher 259 16.3 Prozessor, Befehlssatz und Maschinensprache 260 17 Schaltungen 265 17.1 Zweiwertige Informationsdarstellung 265 17.2 Boolesche Funktionen 268 17.3 Schaltungen 272 18 Formale Sprachen und Compiler 280 18.1 Compiler 280 18.2 Formale Sprachen und Grammatiken 281 18.3 Sprachtypen nach Chomsky 286 18.4 Übersetzung 289 18.5 Automaten 294 18.6 Endlicher Automat 295 18.7 Semantik 299 Anhang 303 A Schlüsselwörter im Sprachumfang von Java 304 B Grundlagen der Java-Programmierumgebung 308 B.1 Installation der Java-Programmierumgebung 308 B.2 Aufrufsyntax der Java-Entwicklungsprogramme 313 B.3 Integrierte Java-Programmierumgebungen 315 C Programmieren in C++ 322 C.1 Vergleich zwischen Java und C++ 322 C.2 Grundkonzepte 326 C.3 Zeiger und Referenzen 333 C.4 Klassen und Objekte 338 C.5 Übersetzungsprozess von C++-Programmen 344 D Literaturverzeichnis 348 Informatik (allgemein) 348 Programmierung 348 Datenstrukturen und Algorithmen 349 Vom Programm zum Rechner 349 Ausgehend von Beispielen werden grundlegende Paradigmen der Informatik vermittelt. Die Schwerpunkte liegen auf dem Algorithmenbegriff, auf einer Einführung in die Programmierung auf Grundlage der Programmiersprache Java und auf objektorientierten Konzepten. Ferner wird an die Aufwandsanalyse von Algorithmen und die Funktionsweise von Rechnern herangeführt. Anhänge zur Java-Programmierumgebung und zu den Grundkonzepten der Programmiersprache C++ ergänzen den praktischen Teil. So gelingt der Einstieg in das Informatikstudium! Inhalt: Was ist Informatik? - Programmierung- Algorithmen und Datenstrukturen - Vom Programm zum Rechner. Zielgruppe: Studienanfänger mit Informatik im Haupt- und Nebenfach an Fachhochschulen und Universitäten; Informatik-Lehrer und Schüler. Die Autoren: Prof. Dr. Heinrich Müller und Dr. Frank Weichert lehren und forschen an der Technischen Universität Dortmund Front Matter....Pages 1-1 Front Matter....Pages 5-5 Informatik....Pages 7-11 Front Matter....Pages 13-13 Vom Problem über den Algorithmus zum Programm....Pages 15-22 Algorithmenentwurf....Pages 23-35 Grundkonzepte der Programmierung....Pages 37-76 Funktionen....Pages 77-91 Rekursion....Pages 93-108 Klassen und Objekte....Pages 109-135 Objektorientierte Programmierung....Pages 137-165 Klassenbibliotheken....Pages 167-180 Grafikprogrammierung mit Swing....Pages 181-205 Andere Programmierstile....Pages 207-209 Front Matter....Pages 211-211 Asymptotische Aufwandsanalyse....Pages 213-217 Sortieren....Pages 219-232 Mengen....Pages 233-254 Front Matter....Pages 255-255 Hardware und Programmierung....Pages 257-258 Rechnerarchitektur und Maschinensprache....Pages 259-266 Schaltungen....Pages 267-281 Formale Sprachen und Compiler....Pages 283-305 Back Matter....Pages 24-24