Einführung in die Informatik

Werbung
Einführung in die
Informatik
von
Prof. Dr. Heinz-Peter Gumm
und
Prof. Dr. Manfred Sommer,
Philipps-Universität Marburg
4., überarbeitete Auflage
Unter Mitwirkung von
Prof. Dr. Wolfgang Hesse
und
Prof. Dr. Bernhard Seeger,
Philipps-Universität Marburg
Technische Universität Darmstadt
FACHBEREICH INFORMATIK
B I B L I O T H E K
Invsnter-Nr.:
Sachgebiets:.
Standort:
Oldenbourg Verlag München Wien
Inhaltsverzeichnis
Vorwort zur vierten Auflage
1
Vorwort zur dritten Auflage
2
Kapitel 1
Einführung
1.1 Was ist „Informatik"!
1.2
;
21
21
Technische Informatik
Praktische Informatik
Theoretische Informatik
Angewandte Informatik
21
22
22
23
Information und Daten
Bits
Bitfolgen
Hexziffern
Bytes und Worte
Dateien
Datei- und Speichergrößen
Längen- und Zeiteinheiten
24
24
25
26
27
28
28
29
1.3 Informationsdarstellung
Text
ASCII-Code
ASCII-Erweiterungen
Unicode
Zeichenketten
Logische Werte
Programme
Graphiken und Bilder
Zahlendarstellungen
Binärdarstellung
Das Oktalsystem und das Hexadezimalsystem
30
30
30
31
32
32
33
33
33
34
34
35
Inhaltsverzeichnis
Umwandlung in das Binär-, Oktaloder Hexadezimalsystem
Arithmetische Operationen
Darstellung ganzer Zahlen
Die Zweierkomplementdarstellung
Standardformate für die Darstellung ganzer Zahlen
Gebrochene Zahlen
Gleitpunktzahlen: Reelle Zahlen
Real-Zahlenbereiche in Programmiersprachen
Daten - Informationen
36
38
39
40
42
43
44
46
47
1.4
Hardware
Personal Computer, Workstations und Mainframes
Aufbau von Computersystemen
Der Rechner von außen
Das Innenleben
Ein modernes Motherboard
Die Aufgabe der CPU
Die Organisation des Hauptspeichers
Speichermedien
Magnetplatten
Disketten
Festplattenlaufwerke
Optische Laufwerke
Vergleich von Speichermedien
Bildschirme
Text- und Graphikmodus
48
48
49
50
51
55
57
58
60
61
62
63
65
67
67
68
1.5
Von der Hardware zum Betriebssystem
Schnittstellen und Treiber
BIOS
Die Aufgaben des Betriebssystems
Dateiverwaltung
DOS, Windows und Linux
Graphische Bediensysteme
68
70
71
72
73
76
76
1.6
Anwendungsprogramme
Textverarbeitung
Zeichen und Schriftarten
Formatierung
Desktop Publishing
Textbeschreibungssprachen
Tabellenkalkulation: spread sheets
Der Rechner als Fenster zur Welt
Wie geht es weiter ?
78
79
79
80
82
82
85
87
88
Kapitel 2
Grundlagen der Programmierung
Programme und Sprachen
Vom Programm zur Maschine
Virtuelle Maschinen
Interpreter
Programmieren und Testen
Programmierumgebungen
BASIC
Pascal
Java
Prolog
91
91
92
93
95
95
96
97
97
98
99
2.1
Spezifikationen, Algorithmen, Programme
Spezifikationen
Algorithmen
Algorithmen als Lösung von Spezifikationen
Terminierung
Elementare Aktionen
Elementare Aktionen in Programmiersprachen
Vom Algorithmus zum Programm
100
100
103
105
106
107
107
108
2.2
Daten und Datenstrukturen
Der Begriff der Datenstruktur
Die Analogie zwischen Taschenrechner
und Datenstruktur
Der Datentyp Boolean
Der Datentyp Natürliche Zahl
Der Datentyp Integer
Rationale Zahlen
Die Datenstruktur Real
Mehrsortige Datenstrukturen
Zeichen
Einfache und zusammengesetzte Typen - Strings
Strings in Turbo-Pascal und in Java
Benutzerdefinierte Datenstrukturen
Informationsverarbeitung und Datenverarbeitung
Variablen und Speicher
Wohlgeformte Ausdrücke
Auswertung von Ausdrücken
Verkürzte Auswertung
Seiteneffekte
Deklarationen
Typfehler
Initialisierung
110
110
Der Kern imperativer Sprachen
Zuweisungen
Kontrollstrukturen
128
129
130
;
2.3
110
112
113
14
115
116
116
117
119
120
120
122
123
124
125
125
126
126
127
128
Inhaltsverzeichnis
Drei Kontrollstrukturen genügen
Die Sequentielle Komposition
Die Alternativanweisung
Die WHILE-Schleife
131
131
133
134
2.4
Formale Beschreibung von Programmiersprachen
Lexikalische Regeln
Syntaktische Regeln
Semantische Regeln
136
136
137
139
2.5
Erweiterung der Kernsprache
Bedingte Anweisung
Fallunterscheidung
Schleifen
Allgemeinere Schleifenkonstrukte
Die FOR-Schleife in Pascal
Die for-Schleife in Java
140
140
142
144
145
146
147
2.6
Unterprogramme
Prozedurale Abstraktion
Funktionale Abstraktion
Funktionale und prozedurale Abstraktion
in C und Java
Top-Down-Entwurf
Kommunikation zwischen Hauptund Unterprogramm
Variablenparameter
Prozeduren als Funktionsersatz
Schachtelung von Unterprogrammen
Blockstrukturierung in C und Java
148
149
150
151
151
155
156
157
158
159
2.7
Rekursive Funktionen und Prozeduren
160
Rekursive Prozeduren
162
Die Türme von Hanoi
162
Spielstrategien als rekursive Prädikate - Backtracking 164
Wechselseitige Rekursion
165
Induktion - Rekursion
166
Allgemeine Rekursion
167
Endrekursion
168
Lineare Rekursion
169
Eine Programmtransformation
171
2.8
Konstruktion neuer Datentypen
Mengenkonstruktionen
Typdefinition
Aufzählungstypen
Teilbereichstypen
Arraytypen
Anwendung : Strings
172
173
174
174
174
175
176
2.9
Aggregation
Disjunkte Vereinigungen
Mengentypen
Dateien und Ströme
Dateiprotokoll
Induktiv definierte Typen
Pointer-Datentypen
Dynamische Datenstrukturen mittels Pointern
Induktive Definitionen in Java
176
177
179
179
180
182
183
184
186
Verifikation
Vermeidung von Fehlern
Zwischenbehauptungen
Partielle Korrektheit
Zerlegung durch Zwischenbehauptungen
Zuweisungsregel
Rückwärtsbeweis
If-Then-Else-Regel
Abschwächungsregel und einarmige Alternative
Invarianten und While-Regel
Starke und schwache Invarianten
Programm-Verifizierer
Repeat-Schleife
For-Schleife
Terminierung
Beweis eines Programmschemas
186
187
188
189
190
191
192
194
195
196
198
200
201
202
203
204
2.10 Programmieren im Großen
Modulares Programmieren
Obj ektörientiertes Programmieren (OOP)
Datenkapselung
Vererbung
Rückschau
Kapitel 3
204
205
207
208
209
210
Einführung in die Programmiersprache Java 213
Geschichte von Java
214
3.1 Die lexikalischen Elemente von Java
Kommentare
Bezeichner
Schlüsselwörter
Literale
Ganzzahlige Literale
Gleitpunkt-Literale
Literale für Zeichen und Zeichenketten
214
215
216
216
217
217
217
217
3.2 Datentypen und Methoden
Variablen
218
219
10
Inhaltsverzeichnis
Default-Werte
Referenz-Datentypen
Arrays
Methoden
Klassen
Objekte und Referenzen
Attribute
Overloading
Konstruktoren
219
219
219
221
222
223
223
225
226
3.3 Java-Programme bestehen aus Klassen
Übersetzungseinheiten
Programme
Packages
Standard-Packages
227
228
228
229
231
3.4
Ausdrücke und Anweisungen
Arithmetische Operationen
Vergleichsoperationen
Boolesche Operationen
Bitweise Operationen
Zuweisungsausdrücke
Anweisungsausdrücke
Sonstige Operationen
Operator Präzedenz
Einfache Anweisungen
Blöcke
return-Anweisung
Alternativ-Anweisungen
switch-Anweisung
Schleifen
for-Anweisung
break- und continue-Anweisungen
232
232
232
233
233
234
235
235
236
237
237
238
238
239
240
240
241
3.5
Klassen und Objekte
Vererbung
LateBinding
Finale Komponenten
Konstanten
Zugriffsrechte von Feldern und Methoden
Attribute von Klassen
Abstrakte Klassen
Rekursiv definierte Klassen
242
243
246
247
247
248
248
248
250
3.6
Ausnahmebehandlung
251
3.7
Schnittstellen (Interfaces) und Threads
Schnittstellen
Threads
255
255
256
11
3.8
Graphische Benutzeroberflächen mit Java (AWT)
Ein erstes Fenster
Ereignisse
Beispiel für eine Ereignisbehandlung
Bedienknöpfe
Graphikausgabe in Fenstern
Maus-Ereignisse
Paint
Weitere Bedienelemente von Programmen
und Fenstern
259
260
261
262
264
265
266
268
Algorithmen und Datenstrukturen
271
4.1
Suchalgorithmen
Lineare Suche
Binäre Suche
Lineare Suche vs. binäre Suche
271
272
273
275
4.2
Komplexität von Algorithmen
275
4.3
Sortierverfahren
Konventionen
BubbleSort
SelectionSort
InsertionSort
Laufzeitvergleiche der einfachen Sortieralgorithmen
ShellSort
CombSort
HeapSort
QuickSort
MergeSort
DistributionSort
Laufzeit der schnellen Sortieralgorithmen
Externes Sortieren
4.4
Abstrakte Datenstrukturen
Datenstruktur = Menge + Operationen
Die axiomatische Methode
301
302
302
4.5
Stacks
Stackoperationen
Implementierung durch ein Array
Implementierung durch eine Liste
Auswertung von Postfix-Ausdrücken
Entrekursivierung
303
304
305
306
307
308
4.6
Queues
Implementierung durch ein „zirkuläres" Array
Implementierung durch eine zirkuläre Liste
308
309
310
Kapitel 4
270
277
277
280
283
284
..286
288
289
290
290
293
295
299
301
12
Inhaltsverzeichnis
4.7
Listen
Einfach verkettete Listen
Doppelt verkettete Listen
Geordnete Listen und Skip-Listen
Adaptive Listen
310
310
313
313
314
4.8
Bäume
Binärbäume
Baumtraversierungen
Baumtiefe
Binäre Suchbäume
Balancierte Bäume
AVL-Bäume
,
2-3-4-Bäume
A
B-Bäume
Vollständige Bäume
Heaps
Heapsort
Priority-Queues
Bäume mit variabler Anzahl von Teilbäumen
315
315
317
320
320
324
326
327
329
330
331
334
334
335
4.9
Graphen
Definition und Beispiele
Wege und Zusammenhang
Repräsentationen von Graphen
Traversierungen
Tiefensuche
Breitensuche
Transitive Hülle
Kürzeste Wege
Das Travelling-Salesman-Problem (TSP)
336
336
337
338
341
341
343
344
345
347
4.10 Zeichenketten
Array-Implementierung
Nullterminierte Strings
Java-Strings
Grundoperationen
Suchen in Zeichenketten
Der Boyer-Moore-Algorithmus
Kapitel 5
Rechnerarchitektur
5.1
Vom Transistor zum Chip
,
Chips
Chipherstellung
Kleinste Chip-Strukturen
Chipfläche und Anzahl der Transistoren
Weitere Chip-Parameter
351
351
351
352
352
353
354
357
357
358
359
360
361
361
13
Speicherbausteine
Logikbausteine
Schaltungsentwurf
362
362
363
5.2 Boolesche Algebra
Boolesche Schaltungen
Serien-parallele Schaltglieder
Serien-parallel-Terme
Schaltfunktionen
Gleichungen
Boolesche Schaltungen
Dualität
Realisierung von Schaltfunktionen
Konjunktive Normalform
Aussagenlogik
Mengenalgebra
Digitale Logik
Gatter mit mehreren Ausgängen
Logik-Gitter
Programmierbare Gitterbausteine
Rückgekoppelte Schaltungen
Anwendungen von Flip-Flops
Technische Schwierigkeiten
Die Konstruktion der Hardwarekomponenten
Schalter, Codierer, Decodierer
Speicherzelle
Die Arithmetisch-Logische Einheit
364
364
365
366
367
368
371
372
372
374
375
376
376
382
383
386
386
388
390
391
391
391
395
5.3
Von den Schaltgliedern zur CPU
Busse ..'
Der Zugang zum Hauptspeicher
Der Mikrobefehlsspeicher - das ROM
Berechnete Sprünge
Der Adreßrechner
Beispiel eines Mikroprogramms
Maschinenbefehle
Der Maschinenspracheinterpretierer
Argumente
399
400
403
405
406
408
409
410
411
413
5.4
Assemblerprogrammierung
Maschinensprache und Assembler
Allzweckregister und Spezialregister
Flag-Register
Arithmetische Flags
Größenvergleiche
Logische Operationen
Sprünge
Erstellen und Testen von Assemblerprogrammen
413
414
417
417
418
420
421
422
424
14
Inhaltsverzeichnis
Multiplikation und Division
Shift-Operationen
Speicherorganisation unter DOS
Vorteile eines Assemblers
Indizierte Adressierung
Das Stacksegment
Segmentmodelle
DOS und BIOS
INT 21h
LOOP-Befehle
Stack-Befehle
Unterprogramme
Nahe und ferne Prozeduren
Seiteneffekte
Parameterübergabe
Makros
String-Operationen
425
426
427
429
430
430
430
431
432
433
434
434
436
436
437
438
439
5.5
RISC-Architekturen
CISC
Von CISC zu RISC
RISC-Prozessoren
Pipelining
Superskalare Architekturen
Cache-Speicher
Leistungsvergleich
Konkrete RISC-Architekturen
441
441
442
443
444
445
446
446
447
5.6
Die Architektur der Intel-PC-Mikroprozessorfamilie
Register
Adressierung
Die Segmentierungseinheit
Adreßübersetzung
Datenstrukturen und Befehle des Pentium
MMX-Befehle
3-DNow
Betriebsarten des Pentium
Ausblick
449
451
452
452
454
454
455
455
455
456
Betriebssysteme
457
Kapitel 6
6.1
Betriebsarten
Endbenutzer-Betriebssysteme
Dienstleistungs-Betriebssysteme
458
459
460
6.2
Verwaltung der Ressourcen
Dateien
Prozesse
461
461
463
15
Bestandteile eines Prozesses
Threads
Prozeßverwaltung
Speicherverwaltung
6.3
Das Betriebssystem UNIX
Linux
Das UNIX-Dateisystem
Dateinamen
Dateiattribute
Pfade
Special files
Externe Dateisysteme
UNIX-Shells
UNIX-Kommandos
Optionen
Softlinks
Standard-Input/Standard-Output
Dateibearbeitung
Reguläre Ausdrücke
UNIX-Prozesse
Pipes
Wozupipes?
Prozeßwechsel
Prozeß-Steuerung
Multitasking
UNIX-Shell-Programmierung
DieC-Shell
Datei-Muster
Kommando-Verknüpfungen
Variablen
Shell-Scripts
Ausführung von Shell-Scripts
UNIX-Kommandos/Shell-Kommandos
UNIX als Mehrbenutzersystem
Electronic Mail
Verbindung zu nahen Rechnern
Weltweiter Rechnerzugang
UNIX-Tools
Editoren
C und C++
Scanner und Parser
Projektbearbeitung
6.4
X-WINDOWS
Der Window-Manager
Der Terminal-Emulator
464
465
465
467
471
471
472
473
474
474
475
476
476
477
478
479
479
480
482
483
483
484
486
486
488
489
490
490
491
:...491
493
493
494
495
496
497
497
498
499
501
501
504
505
506
507
16
Inhaltsverzeichnis
Graphische Oberflächen
507
6.5
MS-DOS
Das MS-DOS-Dateisystem
DOS-Kommandos
Batch-Dateien
Hauptspeicherverwaltung in MS-DOS
Speicherbelegung
Speichererweiterungen
508
509
510
511
511
512
512
6.6
Windows
Speichersegmentierung
Dynamic Link Libraries
Object Linking andEmbedding
Windows NT und Windows2000
Windows 95 und Windows 98
513
514
514
514
515
517
6.7
Alternative PC-Betriebssysteme
518
Kapitel 7
Rechner netze
521
7.1
Rechner-Verbindungen
Ausdehnung von Netzen
Physikalische Verbindung
Protokolle
Codierungen
Das OSI-Modell
521
522
522
524
524
525
7.2
Datenübertragung mit Telephonleitungen
ISDN
T-ATM
T-ADSL
528
529
531
531
7.3
Netztopologien
Sternnetze
Busnetze
Ringnetze
Netze von Netzen
532
532
533
534
535
7.4
Zugriffsverfahren
Wettkampfverfahren: CSMA-CD
Berechtigungsmarken-Verfahren (Token-Ringe)
Vergleich der Zugriffsverfahren
536
536
538
539
7.5
Netztechnologien
Ethernet
FDDI
ATM
540
540
540
541
7.6
Das Internet
TCP/IP
542
543
17
Adressierung
Die Dienste im Internet
E-Mail
News
FTP und Archie
Telnet
Gopher
Das World Wide Web
HTML
Die Struktur eines HTML-Dokumentes
Querverweise: Links
Tabellen und Frames
Formulare
Style Sheets
Weitere Möglichkeiten von HTML
JavaScript
-Applets
Die Struktur eines Applets
Der Lebenszyklus eines Applet
Interaktionen
XML
Kapitel 8
Compilerbau
543
545
545
546
547
548
548
549
551
553
554
555
556
557
557
558
560
561
562
562
564
569
8.1
Programmiersprachen
Entwicklungsgeschichte
SpezialSprachen
570
571
575
8.2
Programmierung eines Compilers
Phasen des Compilers
Die Programmierung des Scanners
575
576
579
8.3
Syntaxanalyse
Grammatiken
Erweiterte Backus-Naur Form (EBNF)
Der Aufruf des Parsers
Fehlerbehandlung
Die Symboltabelle
Datenstrukturen
Ausdrucksbäume
581
582
586
588
588
589
590
590
8.4
Codegenerierung (Synthese)
592
18
Inhaltsverzeichnis
Kapitel 9
Kapitel 10
Datenbanksysteme
595
9.1
Datenbanken und Datenbanksysteme
595
9.2
Datenmodelle
Entity/Relationship-Modell
Das Relationale Datenbankmodell
Relationen
Die relationale Algebra
Erweiterungen des relationalen Datenmodells
Die Abbildung eines E/R-Datenmodells
in ein relationales Modell
597
597
599
600
601
602
9.3
Die Anfragesprache SQL
Datendefinition
Einfache Anfragen
Gruppierung und Aggregate
Verknüpfung verschiedener Relationen
Einfügen, Ändern und Löschen von Datensätzen
603
603
605
606
606
607
9.4
Anwendungsprogrammierung in Java
Das SQL-Paket in Java
Aufbau einer Verbindung
Anfragen
Mehrbenutzerbetrieb
608
608
609
609
610
9.5
Zusammenfassung
611
Graphikprogrammierung
613
602
10.1 Hardware
Auflösungen
Farben
613
614
615
10.2 Graphikroutinen für Rastergraphik
616
Bresenham-Algorithmus
617
10.3 Einfache Programmierbeispiele
618
10.4 Mandelbrot- und Julia-Mengen
620
10.5 Turtle-Graphik und L- Systeme
L-Systeme
Ausblick
10.6 3-D-Graphikprogrammierung
Sichtbarkeit
Beleuchtungsmodelle
Ray-Tracing
Die Grundidee des Ray-Tracing
Die Radiosity Methode
Ausblick
623
626
630
630
631
632
634
635
635
636
19
Kapitel 11
Software-Entwicklung
11.1 Methoden und Werkzeuge für Projekte
639
641
11.2 Vorgehensmodelle
643
Code and fix-Verfahren
643
Wasserfall-Modelle
643
Transformations-Modelle
646
Nichtsequentielle Vorgehensmodelle
647
Prototyping und Spiralmodelle
648
Modelle zur inkrementellen Systementwicklung
649
Evolutionäre Entwicklungsmodelle
650
Modelle zur objektorientierten Systementwicklung ....650
11.3 Traditionelle Methoden zur Programmentwicklung
652
Strukturierte Programmierung
652
Schrittweise Verfeinerung, Top-down-Entwurf, HIPO 653
Jackson-Methode
654
11.4 Heute verbreitete Software-Entwicklungsmethoden
Geheimnisprinzip, Daten-Abstraktion
und Modularisierung
Strukturierte Analyse- und Entwurfstechniken
Entity/Relationship-Modellierung
Systematische Test-, Reviewund Inspektionsverfahren
655
655
656
657
659
11.5 Objektorientierte Software-Entwicklungsmethoden
660
Prinzipien der Objektorientierung
660
Objektorientierter Entwurf
661
Objektorientierte Analyse
662
Standardisierung der objektorientierten Modellierung 662
Software-Architekturen, Muster, Programmgerüste ....665
11.6 Projekt-Management
Projekt-Initialisierung und -Planung
Projektsteuerung und -koordination
Projektabschluß und -bericht
666
666
667
667
11.7 Software-Qualitätssicherung
Qualitätsnormen und Zertifizierung
668
669
20
Inhaltsverzeichnis
11.8 Werkzeuge und Programmierumgebungen
Klassifizierung von Werkzeugen
Werkzeuge zur Analyse und Modellierung
Werkzeuge für Spezifikation und Entwurf
Programmier-Werkzeuge
Verifikatoren
Test- und Fehlerbehebungs-Werkzeuge
Weitere Werkzeuge zur Qualitätssicherung
Tätigkeitsübergreif ende Werkzeuge
Entwicklungs-Umgebungen
Literatur
671
671
672
673
674
675
676
677
677
678
681
Einführende Bücher
681
Lehrbücher der Informatik
681
Bücher zum Thema Programmieren in Pascal
682
Bücher zum Thema Programmieren in Java
683
Bücher zum Thema Algorithmen und Datenstrukturen 683
Bücher zum Thema Rechnerarchitektur
684
Bücher zum Thema Betriebssysteme
685
Bücher zum Thema Rechnernetze und Internet
685
Bücher zum Thema Compilerbau
686
Bücher zum Thema Datenbanken
687
Bücher zum Thema Graphikprogrammierung
687
Bücher zum Thema Software-Entwicklung
688
Bücher zum mathematischen Hintergrund
689
Stichwortverzeichnis
691
Herunterladen