Table Of ContentFritz Mayer-Lindenberg
Konstruktlon dlgltaler Systeme
Die Reihe "lehrbuch", orientiert an den lehrinhalten des Sludiums
an Fachhochschulen und Universitaten, biele! didaktisch gut aus
gearbeitetes Know-how nach dem State-of-the-Art des Faches fUr
Studenten und Dozenten gleichermoBen.
Unler anderem sind erschienen:
Neuronale Netze und Fuzzy-Sysleme
von D. Nouck, F. Klowonn und R. Kruse
Inleraktive Sysleme
von Christian Story
EvoIutionCire AIgorithmen
von Volker Nissen
Slocha.6k
von Gerhard Hubner
AIgorithmische Linea", Algebra
von Herbert Moller
Rechne ..n chileklur
von John S. Hennessy und David A. Patterson
Neuranale Netze
von Andreas Scherer
Objek1orien6er1es Plug and Play
von Andreas Solymosi
RechnerverbindungsslTVlmlren
von Bernhard Schurmann
Rechnerarchilelmlr
von Paul Herrmann
UnlernehmensarienMrle Wirtschaftsinlormatik
von Paul Alpar, Heinz lothar Grob, Peter Weimann
und Robert Winter
Kan.lTVktion digilaler Sy.1eme
von Fritz Mayer-lindenberg
Fritz Mayer-Lindenberg
Konslruklion
digilaler Sysleme
Eine kurze Einfuhrung
in die Informatik
I I
vleweg
Die Deutsche Bibliothek - CIP-Einheitsaufnahme
Mayer-Lindenberg, Fritz:
Konstruktion digitaler Systeme: eine kurze Einfiihrung in die Informatikl
Fritz Meyer-Lindenberg. - Braunschweig: Vieweg, 1998
(Vieweg-Lehrbuch)
I SBN-13:978-3-528-05593-6 e-ISBN-13:978-3-322-86841-1
001: 10.1007/978-3-322-86841-1
Aile Rechte vorbehalten
© Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, Braunschweig/Wiesbaden, 1998
Der Verlag Vieweg ist ein Unternehmen der Bertelsmann Fachinformation GmbH.
Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich geschiltzt.
Jede Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes
ist ohne Zustimmung des Verlags unzuUissig und strafbar. Das gilt insbeson
dere flir Vervielfaltigungen, Ubersetzungen, Mikroverfilmungen und die
Einspeicherung und Verarbeitung in elektronischen Systemen.
http://www.vieweg.de
Druck und buchbinderische Verarbeitung: Lengericher Handelsdruckerei, Lengerich
Gedruckt auf saurefreiem Papier
Vorwort
Die vorliegende Einfiihrung in die 1nformatik ist nach einer an der Technischen Uni
versitat Hamburg-Harburg gehaltenen Vorlesung fiir Studenten der Elektrotechnik
im zweiten und dritten Semester entstanden. Hieraus ergeben sich einige Beson
derheiten. Es wird bereits eine Vertrautheit mit den mathematischen Grundbe
griffen, insbesondere was Mengen, natUrliche und reelle Zahlen und Vektorraume
angeht, vorausgesetzt, wie sie aber auch schon bei manchem Abiturienten vorhan
den sein mag. Diese Grundbegriffe werden zwar verschiedentlich in ihrem Bezug
zur 1nformatik diskutiert, aber nicht systematisch eingefiihrt. Solche mathemati
schen Sachverhalte, die nicht zum Stoff einfiihrender Vorlesungen in die Analysis
und die lineare Algebra gerechnet werden konnen, werden dagegen hergeleitet, wenn
davon ein tieferes Verstandnis zu erwarten ist. Desgleichen findet der Leser keine
Einfiihrung in die Programmierung vor, wenngleich auch verschiedene Typen von
Programmiersprachen gegeniibergestellt werden. Hierfiir sind Grundkenntnisse ei
ner Programmiersprachewie C von Nutzen, welche an der TUHH ebenfalls im ersten
Semester erworben werden. Fiir das Selbststudium sollte dieser Text daher durch
Einfiihrungen in die (hohere) Mathematik und in die Programmierung erganzt wer
den.
Die 1nformatik ist eine recht junge Wissenschaft, in der darum Schulen und Lehr
meinungen noch nicht lange etabliert sind, und fiir manchen mag der Eindruck
entstehen, daB hier eine Diversitat von Methoden aus verschiedenen Bereichen vor
dem Hintergrund einer rasanten Technologieentwicklung angewandt wird. Dem
gegeniiber ist es ein besonderes Anliegen dieser kurzen Einfiihrung in die 1nfor
matik, diese unter einem verbindenden Leitgedanken als koharente Disziplin darzu
stellen. Dieser verbindende Gedanke ist der des Konstruierens aus Bausteinen, und
als zentraler Gegenstand der 1nformatik wird das systematische Konstruieren digi
taler Systeme zum Rechnen, Steuern und zur Datenverwaltung angesehen. Bereits
im ersten Kapitel wird der Begriff des Algorithmus eingefiihrt. Die Darstellung ver
zichtet dabei auf die Diskussion von theoretischen Rechnermodellen wie der Turing
Maschine zur Definition der Berechenbarkeit. Stattdessen wird, ohne eine iiber die
iibliche mathematische Notation hinausgehende Formalisierung, die Konstruktion
rekursiver Funktionen behandelt. Der Algorithmusbegriff wird danach sowohl auf
die Konstruktion von "Hardware" als auch die von "Software" spezialisiert, die
lediglich verschiedene Techniken verwenden, Bausteine zu kombinieren. Er dient
auch als roter Faden bei der Beurteilung der Ausdrucksmoglichkeiten der verschie
denen Typen von Programmiersprachen fiir Hard- und Software. Hierbei wird auch
die Sichtweise, daB die Maschine Funktionen berechnet, auf die Erfiillung von Re
lationen mit moglicherweise mehreren Losungen erweitert. Der kundige Leser wird
bemerken, daB iiberall, wo in der Literatur alternative Ansatze zu finden sind, schon
beim Algorithmenbegriff, aber auch bei der Definition von Automaten, Prozessen,
Petri-Net zen u.a.m. jeweils ein spezieller gewahlt wird, der sich in den didaktischen
Aufbau einordnet. Die Literaturhinweise versuchen, dies zu kompensieren. Ein Blick
in die 1nhaltsiibersicht zeigt, daB zwar viele Teilbereiche beriihrt werden, Algo-
1
2
rithmen, Verifikation, Datentypen, Codierungsarten, Mikroprozessoren, Compiler,
Programmiersprachen. Andere wichtige Bereiche bleiben jedoch unberiihrt, und die
Darstellung behalt stets einruhrenden Charakter. Sie hat ihren Zweck erreicht, wenn
der Leser Lust bekommt, sein Studium mit weiterer Literatur zu vertiefen.
Mein besonderer Dank gilt Frau A. Bojarski fUr das Eingeben dieses Textes in
~'IEX und meinen verehrten Kollegen H. Burkhardt und K.-H. Zimmermann rur
anregende Diskussionen und die kritische Lektiire des Manuskriptes.
F. Mayer-Lindenberg
Inhaltsverzeichnis
Vorwort ....... . 1
Abbildungsverzeichnis 6
Definitionen 9
1 Grundbegriffe der Informatik 10
1.1 Mengen, Relationen, Funktionen und Computer. 10
1.1.1 Teilmengen und Aussagen ........ . 10
1.1.2 Kartesische Produkte, Relationen, Graphen 11
1.1.3 Funktionen . . . . . . . . . . . . . . . . . . 13
1.1.4 Abstrakte, universelle Maschinen ..... . 16
1.2 Schleifenfreie Algorithmen und Boolesche Funktionen . 17
1.2.1 Konstruktion von Funktionen 17
1.2.2 Schleifenfreie Algorithmen . . . . . . . . . . 20
1.2.3 Boolesche Funktionen . . . . . . . . . . . . 23
1.2.4 Codierung von Daten und reale Maschinen 26
1.2.5 Boolesche Algebren. . . . . . . . . . . . . . 30
1.2.6 Vereinfachung von Booleschen Algorithmen 32
1.3 Algorithmen, Berechenbarkeit, Komplexitat 37
1.3.1 Rekursion .......... . 37
1.3.2 Berechenbare Funktionen . . 40
1.3.3 Verifikation von Algorithmen 44
1.3.4 Operativ definierte Mengen 47
Zusammenfassung ..... . 50
Ubungsaufgaben zu Kapitel 1 . . . . . . 50
2 Arithmetik und spezielle Funktionen 52
2.1 Zahlen und ihre Codierung .. 52
2.1.1 Polyadische Codes ...... . 52
2.1.2 Polyadische Arithmetik ... . 54
2.1.3 Rechnen mit endlicher Wortlange . 56
2.1.4 Abgeleitete Codierungsarten .. . 58
2.1.5 Fliefikommaarithmetik ...... . 61
2.1.6 Codierung durch simultane Reste . 62
2.1.7 Reelle Zahlen .... 64
2.2 Spezielle Funktionen . . . . . . . . . . . . 66
2.2.1 Polynomfunktionen ........ . 66
2.2.2 Approximation reeller Funktionen 70
2.2.3 Operationen auf Funktionen ... 73
2.2.4 Algorithmen ffir Permutationen . . 74
4 Inhaltsverzeichnis
Zusammenfassung ..... . 77
Ubungsaufgaben zu Kapitel 2 77
3 Rechenmaschinen mit Speicher 80
3.1 Aufgabe und Funktionsweise von Speichern 80
3.2 Endliche Automaten . . . . . . . . . 82
3.3 Programmierbare Universalrechner . 87
3.4 Ausfiihrung rekursiver Algorithmen . 91
3.5 Das Halteproblem ......... . 93
3.6 Harvard-Architektur und von-Neumann-Rechner 96
3.7 Mikroprozessoren............. 98
3.7.1 CPU und Speicher ....... . 98
3.7.2 Ein- und Ausgabeschnittstellen . 102
3.7.3 Der Transputer T 225 105
Zusammenfassung ..... . 109
Ubungsaufgaben zu Kapitel 3 . . . 109
4 Grundziige der Programmierung 113
4.1 Das Zeitverhalten von Programmen . ll3
4.1.1 Befehls-Schedules....... ll3
4.1.2 Parallele Programmierung . . ll5
4.1.3 Parallele Verarbeitungsprozesse auf einem Rechner ll8
4.1.4 Interrupts und Kontextwechsel . ll9
4.1.5 Modellierung durch Petri-Netze . 121
4.1.6 Gegenseitiger AusschluB 125
4.2 Die Verwendung des Speichers. . . . . . 127
4.2.1 Speicheradressierung....... 127
4.2.2 Wiederverwendung von Speicherzellen 128
4.2.3 Anordnung von Codes im Speicher . . 129
4.2.4 Abstrakte Datentypen: Beispiele und Implementierungen 132
4.2.5 Universelle Datentypen .... 136
4.2.6 Objekte, Funktionen, Prozesse 138
Zusammenfassung ...... 139
Ubungsaufgaben zu Kapite14 . . . . . . . . 140
5 Spezielle Algorithmen 143
5.1 Asymptotische Komplexitat 143
5.2 Algorithmen auf Zahlen . . 145
5.2.1 Schnelle Multiplikation . 145
5.2.2 Faktorisierung ..... 146
5.2.3 Ein Verschlusselungsverfahren . 146
5.3 Eine Vektortransformation. . . . . . . 148
5.4 Suchalgorithmen . . . . . . . . . . . . 150
5.4.1 Implementierungen des Mengentyps 150
5.4.2 Lineare Suche . . . . . . . . . . . . . 151
5
5.4.3 Das Hash-Verfahren 151
5.4.4 Binare Suche . . . . 153
5.4.5 Suchen in Baumen . 154
5.4.6 Hohenbalancierte Baume 155
5.5 Einfiigen in einen Datensatz . 156
5.5.1 Einfiigen von Arrays 156
5.5.2 Einfiigen in Baume . 156
5.6 Sortieralgorithmen . 158
5.6.1 Bubble Sort .... . 159
5.6.2 Merge Sort ... . . 159
5.7 Dynamische Programmierung 160
5.8 Backtracking im Zustandsgraph . 162
Zusammenfassung ..... . 165
Ubungsaufgaben zu Kapitel 5 . . . . . 166
6 Programmiersprachen 168
6.1 Programmiersprachen als Hilfsmittel 168
6.2 Abstraktion im Assembler 170
6.3 Interpreter und Compiler ..... . 172
6.4 Imperative Sprachen . . . . . . . . . 174
6.4.1 Codierungsystem, Zuweisungen und Schedules. 174
6.4.2 Verwendung abstrakter Datentypen .. 179
6.4.3 Nicht-sequenzielle Programmstrukturen 183
6.5 Funktionale Programmierung . . . . . . . . . . 188
6.6 Probleme mit vielfachen Losungen . . . . . . . 194
6.6.1 Mebrwertige Funktionen und Relationen . 194
6.6.2 Logische Programmierung . . . . . . 196
6.7 Rechner mit verschaltbaren Logikelementen 200
6.7.1 Konfigurierbare Digitalschaltungen . 201
6.7.2 Programmieraspekte ........ . 202
6.7.3 Sprachen zur Hardwarebeschreibung 203
Zusammenfassung ... . . . 207
Ubungsaufgaben zu Kapitel 6 . . . . . . . 207
A Arbeitstechnik in Softwareprojekten 211
A.1 Arbeitsschritte zur Realisierung eines digitalen Systems 211
A.2 Ein Beispiel . . . . 214
A.3 Qualitatsmerkmale 216
A.4 Designmethoden 217
A.5 Dokumentation 222
A.6 Programmtest. 224
Zusammenfassung . 226
Literaturverzeichnis 227
Sachwortverzeichnis 229
6
A b bildu ngsverzeichnis
1.1 Kartesisches Produkt. . . . . . . . . . . . . . . . . . . . . . 12
1.2 Darstellung einer Relation. . . . . . . . . . . . . . . . . . . 12
1.3 Graph mit Schlinge, gerichteten und ungerichteten Kanten . 13
1.4 Die Relation inv . . . . . . . . . 15
1.5 Maschine mit Ein- und Ausgabe 16
1.6 Abstrakte Maschine 16
1.7 Maschine fUr diag2 . 16
1.8 Universelle Maschine 17
1.9 Reihenschaltung 18
1.10 Parallelschaltung . . 18
1.11 Selektion. . . . . . . 20
1.12 Schaltung der Komplexitat 4 21
1.13 Gatterfunktionen . . . . . . . 23
1.14 Konstruktion der Selektorfunktion 24
1.15 Komponentenzerlegung .... 24
1.16 Algorithmus fur I ......... 25
1.17 Selektion aus der Wertetabelle .. 26
1.18 Codierung durch physikalische GraBen 29
1.19 Die Paritatsfunktion 36
1.20 Konstruktion von I . 39
1.21 Maschine fUr Ii . . . 41
= =
2.1 Die Menge F der FlieBkommawerte (b 2, t 2) 62
2.2 Approximation einer Funktion I durch eine Treppenfunktion h 72
2.3 Verringerung der Unordung . . . . . 76
3.1 Zeitverhalten einer realen Maschine . 80
3.2 Zeitabhiingige Ein- und Ausgaben 81
3.3 Verbindung durch die Zeit . . 81
3.4 Das D-Flipfiop ........... 81
3.5 Zeitverhalten des D-Flipfiops . . . 82
3.6 Addierschaltung fUr n-stellige Binarzahlen 83
3.7 Serieller Addierer . . . . . . . . . . . . . . 83
3.8 Ein- und Ausgaben am seriellen Addierer 84
3.9 Endlicher Automat. . . . . . . . . . . . . 84
3.10 Zustandsgraph eines endlichen Automaten . 85
3.11 Zustandsgraph des seriellen Addierers 85
3.12 Multiplexer . . . . . 86
3.13 n-bit-Speicher . . . . . . 86
3.14 n-bit-Schieberegister . . 86
3.15 Adressierbarer Speicher 87