Einführung in die Informatik

Einführung in die Informatik

von: Manfred Sommer, Heinz-Peter Gumm

De Gruyter Oldenbourg, 2006

ISBN: 9783486581157

Sprache: Deutsch

896 Seiten, Download: 65854 KB

 
Format:  PDF, auch als Online-Lesen

geeignet für: Apple iPad, Android Tablet PC's Online-Lesen PC, MAC, Laptop


 

eBook anfordern

Mehr zum Inhalt

Einführung in die Informatik



  Vorwort zur siebten Auflage 6  
  Inhalt 8  
  1 Einführung 26  
     1.1 Was ist „Informatik“? 26  
        1.1.1 Technische Informatik 26  
        1.1.2 Praktische Informatik 27  
        1.1.3 Theoretische Informatik 27  
        1.1.4 Angewandte Informatik 28  
     1.2 Information und Daten 29  
        1.2.1 Bits 30  
        1.2.2 Bitfolgen 31  
        1.2.3 Hexziffern 32  
        1.2.4 Bytes und Worte 33  
        1.2.5 Dateien 33  
        1.2.6 Datei- und Speichergrößen 34  
        1.2.7 Längen- und Zeiteinheiten 35  
     1.3 Informationsdarstellung 35  
        1.3.1 Text 36  
        1.3.2 ASCII-Code 36  
        1.3.3 ASCII-Erweiterungen 37  
        1.3.4 Unicode, UCS und UTF-8 38  
        1.3.5 Zeichenketten 40  
        1.3.6 Logische Werte und logische Verknüpfungen 40  
        1.3.7 Programme 41  
        1.3.8 Bilder und Musikstücke 41  
     1.4 Zahlendarstellungen 42  
        1.4.1 Binärdarstellung 42  
        1.4.2 Das Oktalsystem und das Hexadezimalsystem 43  
        1.4.3 Umwandlung in das Binär-, Oktal- oder 44  
        Hexadezimalsystem 44  
        1.4.5 Darstellung ganzer Zahlen 47  
        1.4.6 Die Zweierkomplementdarstellung 48  
     1.5 Standardformate für ganze Zahlen 50  
        1.5.1 Gleitpunktzahlen: Reelle Zahlen 51  
        1.5.2 Real-Zahlenbereiche in Programmiersprachen 54  
        1.5.3 Daten – Informationen 55  
        1.5.4 Informationsverarbeitung – Datenverarbeitung 56  
     1.6 Hardware 56  
        1.6.1 PCs, Workstations, Mainframes, Super-Computer 56  
        1.6.6 Die Aufgabe der CPU 66  
        1.6.7 Die Organisation des Hauptspeichers 68  
        1.6.8 Speichermedien 71  
        1.6.9 Magnetplatten 72  
        1.6.10 Disketten 73  
        1.6.11 Festplattenlaufwerk 74  
        e 74  
        1.6.12 Optische Laufwerke 76  
        1.6.15 Text- und Grafikmodus 79  
     1.7 Von der Hardware zum Betriebssystem 80  
        1.7.1 Schnittstellen und Treiber 82  
        1.7.2 BIOS 83  
        1.7.3 Die Aufgaben des Betriebssystems 84  
        1.7.4 Prozess- und Speicherverwaltung 85  
        1.7.5 Dateiverwaltung 85  
        1.7.6 DOS, Windows und Linux 88  
        1.7.7 Bediensysteme 89  
     1.8 Anwendungsprogramme 91  
        1.8.1 Textverarbeitung 91  
        1.8.2 Zeichen und Schriftarten 92  
        1.8.3 Formatierung 93  
        1.8.4 Desktop Publishing 94  
        1.8.5 Textbeschreibungssprachen 95  
        1.8.6 Tabellenkalkulation: spread sheets 99  
        1.8.7 Der Rechner als Fenster zur Welt 101  
        1.8.8 Wie geht es weiter? 103  
  2 Grundlagen der Programmierung 104  
     2.1 Programmiersprachen 105  
        2.1.1 Vom Programm zur Maschin 105  
        e 105  
        2.1.2 Virtuelle Maschinen 106  
        2.1.3 Interpreter 108  
        2.1.4 Programmieren und Testen 108  
        2.1.5 Programmierumgebungen 109  
        2.1.6 BASIC 110  
        2.1.7 Pascal 111  
        2.1.8 Java 112  
        2.1.9 Prolog 112  
     2.2 Spezifikationen, Algorithmen, Programme 114  
        2.2.1 Spezifikationen 114  
        2.2.2 Algorithmen 116  
        2.2.3 Algorithmen als Lösung von Spezifikationen 121  
        2.2.4 Terminierung 121  
        2.2.5 Elementare Aktionen 122  
        2.2.6 Zuweisungen 123  
        2.2.7 Vom Algorithmus zum Programm 124  
        2.2.8 Ressourcen 126  
     2.3 Daten und Datenstrukturen 127  
        2.3.1 Der Begriff der Datenstruktur 127  
        2.3.2 Boolesche Werte 128  
        2.3.3 Zahlen 131  
        2.3.4 Natürliche Zahlen 131  
        2.3.5 Der Datentyp Integer 133  
        2.3.6 Rationale Zahlen 135  
        2.3.7 Reelle Zahlen 135  
        2.3.8 Mehrsortige Datenstrukturen 136  
        2.3.9 Zeichen 138  
        2.3.11 Benutzerdefinierte Datenstrukturen 141  
        2.3.12 Informationsverarbeitung und Datenverarbeitung 142  
     2.4 Speicher, Variablen und Ausdrücke 144  
        2.4.1 Deklarationen 145  
        2.4.2 Initialisierung 146  
        2.4.3 Kontext 146  
        e 146  
        2.4.4 Ausdrücke, Terme 147  
        2.4.5 Auswertung von Ausdrücken 149  
        2.4.6 Funktionsdefinitionen 150  
        2.4.7 Typfehler 152  
        2.4.8 Seiteneffekte 153  
     2.5 Der Kern imperativer Sprachen 154  
        2.5.1 Zuweisungen 154  
        2.5.2 Kontrollstrukturen 156  
        2.5.3 Drei Kontrollstrukturen genügen 156  
        2.5.4 Die sequentielle Komposition 156  
        2.5.5 Die Alternativanweisung 158  
        2.5.6 Die while-Schleife 159  
        2.5.7 Unterprogramme 160  
        2.5.8 Lauffähige Programme 161  
     2.6 Formale Beschreibung von Programmiersprachen 162  
        2.6.1 Lexikalische Regeln 162  
        2.6.2 Syntaktische Regeln 164  
        2.6.3 Semantische Regeln 166  
     2.7 Erweiterung der Kernsprache 167  
        2.7.1 Bedingte Anweisung 167  
        2.7.2 Fallunterscheidung 169  
        2.7.4 Allgemeinere Schleifenkonstrukte 171  
        2.7.5 Die for-Schleife 172  
        2.7.6 Arrays – indizierte Variablen 173  
     2.8 Rekursive Funktionen und Prozeduren 175  
        2.8.1 Rekursive Programme 177  
        2.8.2 Die Türme von Hanoi 177  
        2.8.3 Spielstrategien als rekursive Prädikate – Backtracking 179  
        2.8.4 Wechselseitige Rekursion 180  
        2.8.5 Induktion – Rekursion 181  
        2.8.6 Allgemeine Rekursion 181  
        2.8.7 Endrekursion 183  
        2.8.8 Lineare Rekursion 184  
        2.8.9 Eine Programmtransformation 186  
     2.9 Typen, Module, Klassen und Objekte 187  
        2.9.1 Strukturiertes Programmieren 189  
        2.9.2 Blockstrukturierung 189  
        2.9.3 Strukturierung der Daten 190  
        2.9.4 Objektorientierte Konstruktion neuer Datentypen 195  
        2.9.5 Modulares Programmieren 197  
        2.9.6 Schnittstellen – Interfaces 198  
        2.9.7 Objektorientiertes Programmieren 201  
        2.9.8 Vererbung 203  
        2.9.9 Summentypen in objektorientierten Sprachen 205  
        2.10.1 Vermeidung von Fehlern 209  
        2.10.2 Zwischenbehauptungen 210  
        2.10.3 Partielle Korrektheit 211  
        2.10.4 Zerlegung durch Zwischenbehauptungen 212  
        2.10.5 Zuweisungsregel 213  
        2.10.6 Rückwärtsbeweis 215  
        2.10.7 if-else-Regel 217  
        2.10.8 Abschwächungsregel und einarmige Alternative 217  
        2.10.9 Invarianten und whil 218  
        -Regel 218  
        2.10.11 Programm-Verifizierer 223  
        2.10.12 do-Schleife 225  
        2.10.13 Terminierung 226  
        2.10.14 Beweis eines Programmschemas 226  
     2.11 Zusammenfassung 227  
  3 Die Programmiersprache Java 228  
     3.1 Geschichte von Java 230  
     3.2 Die lexikalischen Elemente von Java 230  
        3.2.1 Kommentare 231  
        3.2.2 Bezeichner 232  
        3.2.3 Schlüsselwörter 232  
        3.2.4 Literale 232  
     3.3 Datentypen und Methoden 234  
        3.3.1 Variablen 234  
        3.3.2 Referenz-Datentypen 235  
        3.3.3 Arrays 236  
        3.3.4 Methoden 237  
        3.3.6 Objekte und Referenzen 241  
        3.3.7 Objekt- und Klassenkomponenten 242  
        3.3.8 Attribute 243  
        3.3.9 Überladung 244  
        3.3.10 Konstruktoren 245  
        3.3.11 Aufzählungstypen 246  
     3.4 Ausführbare Java-Programme 247  
        3.4.2 Programme 250  
        3.4.3 Packages 251  
        3.4.4 Standard-Packages 252  
     3.5 Ausdrücke und Anweisungen 253  
        3.5.1 Arithmetische Operationen 254  
        3.5.2 Vergleichsoperationen 254  
        3.5.3 Boolesche Operationen 255  
        3.5.4 Bitweise Operationen 255  
        3.5.5 Zuweisungsausdrücke 256  
        3.5.6 Anweisungsausdrück 257  
        e 257  
        3.5.7 Sonstige Operationen 257  
        3.5.8 Präzedenz der Operatoren 258  
        3.5.9 Einfache Anweisungen 259  
        3.5.10 Blöcke 260  
        3.5.11 Alternativ-Anweisungen 261  
        3.5.12 switch-Anweisung 261  
        3.5.13 Schleifen 263  
        3.5.14 Die for-Anweisung 263  
        3.5.15 break- und continue-Anweisungen 265  
     3.6 Klassen und Objekte 266  
        3.6.1 Vererbung 268  
        3.6.2 Späte Bindung (Late Binding) 273  
        3.6.3 Finale Komponenten 273  
        3.6.4 Zugriffsrechte von Feldern und Methoden 274  
        3.6.5 Attribute von Klassen 274  
        3.6.6 Abstrakte Klassen 275  
        3.6.7 Rekursiv definierte Klassen 276  
        3.6.8 Schnittstellen (Interfaces) 278  
        3.6.9 Generische Datentypen 281  
        3.6.10 Ausnahmen - Exceptions 282  
        3.6.11 Zusicherungen – Assertions 286  
        3.6.12 Threads 290  
        3.6.13 Producer-Consumer mit Threads 294  
     3.7 Grafische Benutzeroberflächen mit Java (AWT) 296  
        3.7.1 Ein erstes Fenster 297  
        3.7.2 Ereignisse 298  
        3.7.3 Beispiel für eine Ereignisbehandlung 299  
        3.7.4 Buttons 301  
        3.7.5 Grafikausgabe in Fenstern 302  
        3.7.6 Maus-Ereignisse 303  
        3.7.7 Paint 306  
        3.7.8 Weitere Bedienelemente von Programmen und Fenstern 309  
     3.8 Dateien: Ein- und Ausgabe 309  
        3.8.1 Dateidialog 309  
        3.8.2 Schreiben einer Datei 310  
        3.8.3 Lesen einer Datei 311  
        3.8.4 Testen von Dateieigenschaften 312  
     3.9 Wurzeln und Weiterentwicklung von Java 312  
  4 Algorithmen und Datenstrukturen 314  
     4.1 Suchalgorithmen 316  
        4.1.1 Lineare Suche 317  
        4.1.2 Binäre Suche 319  
        4.1.3 Lineare Suche vs. binäre Suche 320  
        4.1.4 Komplexität von Algorithmen 321  
     4.2 Einfache Sortierverfahren 323  
        4.2.1 Datensätze und Schlüssel 323  
        4.2.2 Invarianten und Assertions 326  
        4.2.3 BubbleSort 328  
        4.2.4 SelectionSort 330  
        4.2.5 InsertionSort 332  
        4.2.6 Laufzeitvergleiche der einfachen Sortieralgorithmen 334  
        4.2.7 ShellSort und CombSort 335  
     4.3 Schnelle Sortieralgorithmen 336  
        4.3.1 Divide and Conquer – teile und herrsche 336  
        4.3.2 QuickSort 337  
        4.3.3 Die Partitionierung 338  
        4.3.4 Korrektheit von QuickSort 340  
        4.3.5 Komplexität von QuickSort 340  
        4.3.6 MergeSort 341  
        4.3.7 DistributionSort (RadixSort) 343  
        4.3.8 Wieso und wie gut funktioniert DistributionSort? 345  
        4.3.9 Einsatz und Implementierung von DistributionSort 345  
        4.3.10 Laufzeit der schnellen Sortieralgorithmen 347  
        4.3.11 Externes Sortieren 349  
     4.4 Abstrakte Datenstrukturen 350  
        4.4.1 Datenstruktur = Menge + Operationen 350  
        4.4.2 Die axiomatische Methode 350  
     4.5 Stacks 351  
        4.5.1 Stackoperationen 352  
        4.5.2 Implementierung durch ein Array 354  
        4.5.3 Implementierung durch eine Liste 355  
        4.5.4 Auswertung von Postfix-Ausdrücken 356  
        4.5.5 Entrekursivierung 357  
        4.5.6 Stackpaare 358  
     4.6 Queues, Puffer, Warteschlangen 359  
        4.6.1 Implementierung durch ein „zirkuläres“ Array 360  
        4.6.2 Implementierung durch eine zirkuläre Liste 362  
        4.6.3 Anwendung von Puffern 362  
     4.7 Listen 363  
        4.7.1 Einfach verkettete Listen 364  
        4.7.2 Der Listeniterator forEach 367  
        4.7.3 Listen als Verallgemeinerung von Stacks und Queues 368  
        4.7.4 Doppelt verkettete Listen 368  
        4.7.5 Geordnete Listen und Skip-Listen 369  
        4.7.6 Adaptive Listen 370  
        4.7.7 Generische Listen 370  
        4.7.8 Behälter (Collections) 371  
     4.8 Bäume 373  
        4.8.1 Beispiele von Bäumen 374  
        4.8.2 Binärbäume 375  
        4.8.3 Implementierung von Binärbäumen 376  
        4.8.4 Traversierungen 377  
        4.8.5 Kenngrößen von Binärbäumen 381  
        4.8.6 Binäre Suchbäume 382  
        4.8.7 Implementierung von binären Suchbäumen 383  
        4.8.8 Balancierte Bäume 389  
        4.8.9 AVL-Bäume 390  
        4.8.10 2-3-4-Bäume 392  
        4.8.11 B-Bäume 394  
        4.8.12 Vollständige Bäume 395  
        4.8.13 Heaps 396  
        4.8.14 HeapSort 399  
        4.8.15 Priority-Queues 400  
        4.8.16 Bäume mit variabler Anzahl von Teilbäumen 400  
     4.9 Graphen 401  
        4.9.1 Wege und Zusammenhang 402  
        4.9.2 Repräsentationen von Graphen 403  
        4.9.3 Traversierungen 405  
        4.9.4 Tiefensuche und Backtracking 406  
        4.9.5 Breitensuche 407  
        4.9.6 Transitive Hülle 408  
        4.9.7 Kürzeste Wege 409  
        4.9.8 Schwere Probleme für Handlungsreisende 412  
        4.9.9 Eine Implementierung des TSP 413  
     4.10 Zeichenketten 417  
        4.10.1 Array-Implementierung 417  
        4.10.2 Nullterminierte Strings 417  
        4.10.3 Stringoperationen 418  
        4.10.4 Suchen in Zeichenketten 419  
        4.10.5 Der Boyer-Moore-Algorithmus 419  
  5 Rechnerarchitektur 422  
     5.1 Vom Transistor zum Chip 422  
        5.1.1 Chips 423  
        5.1.2 Chipherstellung 424  
        5.1.3 Kleinste Chip-Strukturen 425  
        5.1.4 Chipfläche und Anzahl der Transistoren 426  
        5.1.5 Weitere Chip-Parameter 426  
        5.1.6 Speicherbausteine 427  
        5.1.7 Logikbausteine 428  
        5.1.8 Schaltungsentwurf 428  
     5.2 Boolesche Algebra 429  
        5.2.1 Serien-parallele Schaltungen 429  
        5.2.2 Serien-parallele Schaltglieder 431  
        5.2.3 Boolesche Terme 432  
        5.2.4 Schaltfunktionen 433  
        5.2.5 Gleichungen 433  
        5.2.6 SP-Schaltungen sind monoton 434  
        5.2.7 Negation 435  
        5.2.8 Boolesche Terme 436  
        5.2.9 Dualität 437  
        5.2.10 Realisierung von Schaltfunktionen 438  
        5.2.11 Konjunktive Normalform 439  
        5.2.12 Umwandlung in DNF oder KNF 440  
        5.2.13 Aussagenlogik 441  
        5.2.14 Mengenalgebra 441  
     5.3 Digitale Logik 442  
        5.3.1 Gatter mit mehreren Ausgängen 445  
        5.3.2 Logik-Gitter 447  
        5.3.3 Programmierbare Gitterbausteine 449  
        5.3.4 Rückgekoppelte Schaltungen 449  
        5.3.5 Anwendungen von Flip-Flops 452  
        5.3.6 Technische Schwierigkeiten 453  
        5.3.7 Die Konstruktion der Hardwarekomponenten 454  
        5.3.8 Schalter, Codierer, Decodierer 454  
        5.3.9 Speicherzellen 455  
        5.3.10 Register 455  
        5.3.11 Die Arithmetisch-Logische Einheit 458  
     5.4 Von den Schaltgliedern zur CPU 461  
        5.4.1 Busse 462  
        5.4.2 Mikrocodegesteuerte Operationen 463  
        5.4.3 Der Zugang zum Hauptspeicher 466  
        5.4.4 Der Mikrobefehlsspeicher – das ROM 468  
        5.4.5 Sprünge 468  
        5.4.6 Berechnete Sprünge 469  
        5.4.7 Der Adressrechner 471  
        5.4.8 Ein Mikroprogramm 472  
        5.4.9 Maschinenbefehle 473  
        5.4.10 Der Maschinenspracheinterpretierer 475  
        5.4.11 Argumente 476  
     5.5 Assemblerprogrammierung 477  
        5.5.1 Maschinensprache und Assembler 477  
        5.5.2 Register der 80x86-Familie 478  
        5.5.3 Allzweckregister und Spezialregister 480  
        5.5.4 Flag-Register 480  
        5.5.5 Arithmetische Flags 481  
        5.5.6 Größenvergleiche 483  
        5.5.7 Logische Operationen 484  
        5.5.8 Sprünge 485  
        5.5.9 Struktur eines vollständigen Assemblerprogrammes 487  
        5.5.10 Ein Beispielprogramm 488  
        5.5.11 Testen von Assemblerprogrammen 490  
        5.5.12 Speicheradressierung 491  
        5.5.13 Operationen auf Speicherblöcken 492  
        5.5.14 Multiplikation und Division 493  
        5.5.15 Shift-Operationen 494  
        5.5.16 LOOP-Befehle 495  
        5.5.17 Der Stack 496  
        5.5.18 Einfache Unterprogramme 497  
        5.5.19 Parameterübergabe und Stack 498  
        5.5.20 Prozeduren und Funktionen 500  
        5.5.21 Makros 500  
        5.5.22 Assembler unter DOS 501  
        5.5.23 Assembler unter Windows 503  
     5.6 RISC-Architekturen 504  
        5.6.1 CISC 504  
        5.6.2 Von CISC zu RISC 505  
        5.6.3 RISC-Prozessoren 506  
        5.6.4 Pipelining 508  
        5.6.5 Superskalare Architekturen 509  
        5.6.6 Cache-Speicher 509  
        5.6.7 Leistungsvergleich 509  
        5.6.8 Konkrete RISC-Architekturen 510  
     5.7 Architektur der Intel-PC-Mikroprozessorfamilie 513  
        5.7.1 Adressierung 518  
        5.7.2 Die Segmentierungseinheit 518  
        5.7.3 Adressübersetzung 520  
        5.7.4 Datenstrukturen und Befehle des Pentium 520  
        5.7.5 MMX-Befehle 521  
        5.7.6 Betriebsarten des Pentium 521  
        5.7.7 Ausblick 522  
  6 Betriebssysteme 524  
     6.1 Basis-Software 525  
     6.2 Betriebsarten 527  
        6.2.1 Teilhaberbetrieb 527  
        6.2.2 Client-Server-Systeme 527  
     6.3 Verwaltung der Ressourcen 529  
        6.3.1 Dateisystem 529  
        6.3.2 Dateioperationen 530  
        6.3.3 Prozesse 531  
        6.3.4 Bestandteile eines Prozesses 532  
        6.3.5 Threads 532  
        6.3.6 Prozessverwaltung 533  
        6.3.7 Prozesskommunikation 534  
        6.3.8 Kritische Abschnitte – wechselseitiger Ausschluss 535  
        6.3.9 Semaphore und Monitore 537  
        6.3.10 Deadlocks 539  
        6.3.11 Speicherverwaltung 540  
     6.4 Das Betriebssystem UNIX 544  
        6.4.1 Linux 544  
        6.4.2 Das UNIX-Dateisystem 545  
        6.4.3 Dateinamen 546  
        6.4.4 Dateirechte 546  
        6.4.5 Pfade 547  
        6.4.6 Special files 548  
        6.4.7 Externe Dateisysteme 548  
        6.4.8 UNIX-Shells 549  
        6.4.9 UNIX-Kommandos 549  
        6.4.10 Optionen 550  
        6.4.11 Datei-Muster 552  
        6.4.12 Standard-Input/Standard-Output 552  
        6.4.13 Dateibearbeitung 553  
        6.4.14 Reguläre Ausdrücke 554  
     6.5 UNIX-Prozesse 555  
        6.5.1 Pipes 556  
        6.5.2 Sind Pipes notwendig? 557  
        6.5.3 Prozess-Steuerung 558  
        6.5.4 Multitasking 560  
        6.5.5 UNIX-Shell-Programmierung 562  
        6.5.6 Die C-Shell 562  
        6.5.7 Kommando-Verknüpfungen 563  
        6.5.8 Variablen 563  
        6.5.9 Shell-Scripts 565  
        6.5.10 Ausführung von Shell-Scripts 565  
        6.5.11 UNIX-Kommandos und Shell-Kommandos 565  
        6.5.12 UNIX als Mehrbenutzersystem 567  
        6.5.13 Verbindung zu anderen Rechnern 568  
        6.5.14 Weltweiter Rechnerzugang 568  
        6.5.15 UNIX-Tools 569  
        6.5.16 Editoren 569  
        6.5.17 C und C++ 571  
        6.5.18 Scanner- und Parsergeneratoren 572  
        6.5.19 Projektbearbeitung 573  
     6.6 X Window System 574  
        6.6.1 Window-Manager und Terminal Emulator 575  
        6.6.2 Grafische Oberflächen 576  
     6.7 MS-DOS und MS-Windows 576  
        6.7.1 Dynamic Link Libraries 578  
        6.7.2 Object Linking and Embedding 578  
        6.7.3 Windows NT, Windows 2000 und Windows XP 579  
        6.7.4 Windows XP 580  
     6.8 Alternative PC-Betriebssysteme 581  
  7 Rechnernetze 584  
     7.1 Rechner-Verbindungen 585  
        7.1.1 Signalübertragung 585  
        7.1.2 Physikalische Verbindung 587  
        7.1.3 Synchronisation 589  
        7.1.4 Bitcodierungen 590  
     7.2 Datenübertragung mit Telefonleitungen 591  
        7.2.1 ISDN 592  
        7.2.2 DSL, ADSL und T-DSL 593  
        7.2.3 ADSL2+ 595  
     7.3 Protokolle und Netze 595  
        7.3.1 Das OSI-Modell 596  
        7.3.2 Netze 598  
        7.3.3 Netztopologien 599  
        7.3.4 Netze von Netzen 601  
        7.3.5 Zugriffsverfahren 604  
        7.3.6 Wettkampfverfahren: CSMA-CD 604  
     7.4 Netztechnologien 606  
        7.4.1 Ethernet 606  
        7.4.2 FDDI 607  
        7.4.3 ATM 607  
        7.4.4 SONET/SDH 609  
     7.5 Drahtlose Netze 611  
        7.5.1 Bluetooth 612  
        7.5.2 WLAN 613  
  8 Das Internet 620  
     8.0.1 Bildung von Standards im Internet 621  
     8.1 Die TCP/IP Protokolle 623  
        8.1.1 Die Protokolle TCP und UDP 624  
        8.1.2 Das IP Protokoll 626  
     8.2 IP-Adressen 628  
        8.2.1 Adressklassen 629  
        8.2.2 Adressübersetzung 631  
     8.3 Das System der Domain-Namen 634  
        8.3.1 DNS-lookup in Java 637  
        8.3.2 Programmierung einer TCP-Verbindung 639  
     8.4 Intranets, Firewalls und virtuelle private Netzwerke 643  
     8.5 Die Dienste im Internet 645  
        8.5.1 E-Mail 646  
        8.5.2 News 651  
        8.5.3 FTP 651  
        8.5.4 Telnet 652  
        8.5.5 Gopher 653  
     8.6 Das World Wide Web 653  
        8.6.1 HTTP 655  
        8.6.2 HTML 656  
        8.6.3 Die Struktur eines HTML-Dokumentes 659  
        8.6.4 Querverweise: Links 660  
        8.6.5 Tabellen und Frames 661  
        8.6.6 Formulare 663  
        8.6.7 Style Sheets 664  
        8.6.8 Weitere Möglichkeiten von HTML 665  
     8.7 Web-Programmierung 665  
        8.7.1 JavaScript 665  
        8.7.2 Applets 668  
        8.7.3 Die Struktur eines Applets 669  
        8.7.4 Der Lebenszyklus eines Applet 670  
        8.7.5 Interaktionen 670  
        8.7.6 PHP 673  
        8.7.7 XML 675  
        8.7.8 DOM, Ajax und Web 2.0 684  
  9 Theoretische Informatik und Compilerbau 686  
     9.1 Analyse von Programmtexten 686  
        9.1.1 Lexikalische Analyse 687  
        9.1.2 Syntaxanalyse 688  
     9.2 Reguläre Sprachen 689  
        9.2.1 Reguläre Ausdrücke 690  
        9.2.2 Automaten und ihre Sprachen 692  
        9.2.3 Implementierung endlicher Automaten 694  
        9.2.5 Automaten für reguläre Sprachen 695  
        9.2.6 Von nichtdeterministischen zu deterministischen Automaten 696  
        9.2.7 Anwendung: flex 697  
     9.3 Kontextfreie Sprachen 698  
        9.3.1 Kontextfreie Grammatiken 699  
        9.3.2 Ableitungen 700  
        9.3.3 Stackautomaten (Kellerautomaten) 701  
        9.3.4 Stackautomaten für beliebige kontextfreie Sprachen 703  
        9.3.5 Nichtdeterministische Algorithmen und Backtracking 703  
        9.3.6 Inhärent nichtdeterministische Sprachen 706  
        9.3.7 Ableitungsbaum, Syntaxbaum 706  
        9.3.8 Abstrakte Syntaxbäume 707  
     9.4 Grundlagen des Compilerbaus 708  
        9.4.1 Parsen durch rekursiven Abstieg (recursive descent) 709  
        9.4.2 LL(1)-Grammatiken 710  
        9.4.3 Äquivalente Grammatiken 712  
        9.4.4 Top-down und bottom-up 713  
        9.4.5 Shift-Reduce Parser 715  
        9.4.6 Die Arbeitsweise von Shift-Reduce-Parsern 716  
        9.4.7 Bottom-up Parsing 717  
        9.4.8 Konflikte 718  
        9.4.9 Ein nichtdeterministischer Automat mit Stack 718  
        9.4.10 Übergang zum deterministischen Automaten 721  
        9.4.11 Präzedenz 723  
        9.4.12 LR(1) und LALR(1) 724  
        9.4.13 Parsergeneratoren 725  
        9.4.14 lex/flex & yacc/bison 726  
        9.4.15 Grammatische Aktionen 728  
        9.4.16 Fehlererkennung 730  
        9.4.17 Synthetisierte Werte 730  
        9.4.18 Symboltabellen 731  
        9.4.19 Codeoptimierung 731  
     9.5 Berechenbarkeit 732  
        9.5.1 Berechenbare Funktionen 733  
        9.5.2 Beispiele berechenbarer Funktionen 734  
        9.5.3 Diagonalisierung 736  
        9.5.4 Nicht berechenbare Funktionen 737  
        9.5.5 Algorithmenbegriff und Churchsche These 737  
        9.5.6 Turingmaschinen 738  
        9.5.7 Turing-Post Programme 740  
        9.5.8 Turing-berechenbare Funktionen 741  
        9.5.9 Registermaschinen 742  
        9.5.10 GOTO-Programme 743  
        9.5.11 While-Programme 744  
        9.5.12 For -Programme ( Loop -Programme) 746  
        9.5.13 Effiziente Algorithmen als For-Programme 746  
        9.5.14 Elementare (primitive) Rekursion 747  
        9.5.15 Allgemeine Rekursion (µ-Rekursion) 749  
        9.5.16 Die Ackermannfunktion 750  
        9.5.17 Berechenbare Funktionen – Churchsche These 751  
        9.5.18 Gödelisierung 751  
        9.5.19 Aufzählbarkeit und Entscheidbarkeit 753  
        9.5.20 Unlösbare Aufgaben 753  
        9.5.21 Semantische Probleme sind unentscheidbar 754  
     9.6 Komplexitätstheorie 756  
        9.6.1 Rückführung auf ja/nein-Probleme 757  
        9.6.2 Entscheidungsprobleme und Sprachen 757  
        9.6.3 Maschinenmodelle und Komplexitätsmaße 758  
        9.6.4 Sprachen und ihre Komplexität 759  
        9.6.5 Effiziente parallele Lösungen 759  
        9.6.6 Nichtdeterminismus 761  
        9.6.7 Die Klasse NP 762  
        9.6.8 Reduzierbarkeit 763  
        9.6.9 Der Satz von Cook 765  
        9.6.10 NP-Vollständigkeit 767  
        9.6.11 CLIQUE ist NP-vollständig 767  
        9.6.12 Praktische Anwendung von SAT-Problemen 768  
        9.6.13 P = NP ? 771  
  10 Datenbanksysteme 772  
     10.1 Datenbanken und Datenbanksysteme 772  
     10.2 Datenmodelle 774  
        10.2.1 Entity/Relationship-Modell 774  
        10.2.2 Das Relationale Datenbankmodell 776  
        10.2.3 Relationen 777  
        10.2.4 Die relationale Algebra 778  
        10.2.5 Erweiterungen des relationalen Datenmodells 779  
        10.2.6 Abbildung eines E/R-Datenmodells in ein relationales Modell 779  
     10.3 Die Anfragesprache SQL 780  
        10.3.1 Datendefinition 780  
        10.3.2 Einfache Anfragen 782  
        10.3.3 Gruppierung und Aggregate 783  
        10.3.4 Verknüpfung verschiedener Relationen 784  
        10.3.5 Einfügen, Ändern und Löschen von Datensätzen 784  
        10.3.6 Mehrbenutzerbetrieb 785  
     10.4 Anwendungsprogrammierung in Java 787  
        10.4.1 Das SQL-Paket in Java 788  
        10.4.2 Aufbau einer Verbindung 789  
        10.4.3 Anfragen 789  
     10.5 Zusammenfassung 791  
  11 Grafikprogrammierung 792  
     11.1 Hardware 792  
        11.1.1 Auflösungen 793  
        11.1.2 Farben 793  
     11.2 Grafikroutinen für Rastergrafik 794  
        11.2.1 Bresenham Algorithmus 796  
     11.3 Einfache Programmierbeispiele 797  
        11.3.1 Mandelbrot- und Julia-Mengen 799  
        11.3.2 Turtle-Grafik 803  
        11.3.3 L-Systeme 807  
        11.3.4 Ausblick 810  
     11.4 3-D-Grafikprogrammierung 810  
        11.4.1 Sichtbarkeit 811  
        11.4.2 Beleuchtungsmodelle 812  
        11.4.3 Ray-Tracing 815  
        11.4.4 Die Radiosity Methode 816  
        11.4.5 Ausblick 817  
  12 Software-Entwicklung 818  
     12.1 Methoden und Werkzeuge für Projekte 819  
     12.2 Vorgehensmodelle 821  
        12.2.1 Code and fix-Verfahren 821  
        12.2.2 Wasserfall-Modelle 822  
        12.2.3 Transformations-Modelle 825  
        12.2.4 Nichtsequentielle Vorgehensmodelle 825  
        12.2.5 Prototyping und Spiralmodelle 826  
        12.2.6 Modelle zur inkrementellen Systementwicklung 827  
        12.2.7 Evolutionäre Entwicklungsmodelle 827  
        12.2.8 Modelle zur objektorientierten Systementwicklung 828  
     12.3 Traditionelle Methoden zur Programmentwicklung 830  
        12.3.1 Strukturierte Programmierung 830  
        12.3.2 Schrittweise Verfeinerung und Top-down-Entwurf 830  
        12.3.3 Geheimnisprinzip, Daten-Abstraktion und Modularisierung 831  
        12.3.4 Strukturierte Analyse- und Entwurfstechniken 832  
        12.3.5 Entity/Relationship-Modellierung 833  
        12.3.6 Systematische Test-, Review- und Inspektionsverfahren 834  
     12.4 Objektorientierte Software- Entwicklungsmethoden 834  
        12.4.1 Prinzipien der Objektorientierung 834  
        12.4.2 Objektorientierter Entwurf 835  
     12.5 Objektorientierte Analyse und Modellierung 836  
        12.5.1 Standardisierung der objektorientierten Modellierung 837  
        12.5.2 Die Modellierungssprache UML 837  
        12.5.3 Software-Architektur 841  
        12.5.4 Entwurfsmuster und Frameworks 842  
        12.5.5 Aspekt-orientierte Entwicklung 842  
        12.5.6 Modell-getriebene Architektur 843  
     12.6 Projekt-Management 844  
        12.6.1 Projektinitialisierung und -planung 844  
        12.6.2 Projektsteuerung und -koordination 845  
        12.6.3 Projektabschluss und -bericht 846  
     12.7 Software-Qualitätssicherung 846  
        12.7.1 Qualitätsnormen und Zertifizierung 848  
     12.8 Werkzeuge und Programmierumgebungen 850  
        12.8.1 Klassifizierung von Werkzeugen 850  
        12.8.2 Werkzeuge zur Analyse und Modellierung 851  
        12.8.3 Werkzeuge für Spezifikation und Entwurf 851  
        12.8.4 Programmier-Werkzeuge 852  
        12.8.5 Test- und Fehlerbehebungs-Werkzeuge 852  
        12.8.6 Tätigkeitsübergreifende Werkzeuge 854  
        12.8.7 Entwicklungs-Umgebungen 855  
  A Literatur 858  
     A.1 Einführende Bücher 858  
     A.2 Lehrbücher der Informatik 859  
     A.3 Programmieren in Pascal 860  
     A.4 Programmieren in Java 860  
     A.5 Algorithmen und Datenstrukturen 861  
     A.6 Rechnerarchitektur 862  
     A.7 Betriebssysteme 863  
     A.8 Rechnernetze 863  
     A.9 Internet 864  
     A.10 Theoretische Informatik und Compilerbau 865  
     A.11 Datenbanken 866  
     A.12 Grafikprogrammierung 867  
     A.13 Software-Entwicklung 868  
     A.14 Mathematischer Hintergrund 871  
     A.15 Sonstiges 871  
  Stichwortverzeichnis 872  
  Mehr eBooks bei www.ciando.com 0  

Kategorien

Service

Info/Kontakt