Leitfaden und Monographien der Informatik Gunter Hotz Einfiihrung in die Informatik Leitfiideo ood Mooographieo der Ioformatik Herausgegeben von Prof. Dr. Hans-Jurgen Appelrath, Oldenburg Prof. Dr. Volker Claus, Oldenburg Prof. Dr. Gunter Hotz, Saarbrucken Prof. Dr. Klaus Waldschmidt, Frankfurt Die LeitHiden und Monographien behandeln Themen aus der Theoreti schen, Praktischen und Technischen Informatik entsprechend dem aktuel len Stand der Wissenschaft. Besonderer Wert wird auf eine systematische und fundierte Darstellung des jeweiligen Gebietes gelegt. Die Bucher die ser Reihe sind einerseits als Grundlage und Ergiinzung zu Vorlesungen der Informatik und andererseits als Standardwerke fUr die selbstiindige Einar beitung in umfassende Themenbereiche der Informatik konzipiert. Sie sprechen vorwiegend Studierende und Lehrende in Informatik-Studien giingen an Hochschulen an, dienen aber auch in Wirtschaft, Industrie und Verwaltung tiitigen Informatikern zur Fortbildung im Zuge der fortschrei tenden Wissenschaft. Einfiihrung in die Informatik Von Prof. Dr. rer. nat. Gunter Hotz UniversiHit Saarbriicken 83 B. G. Teubner Stuttgart 1990 Prof. Dr. rer. nat. Gunter Hotz Studium der Mathematik mit Nebenfach Physik an den Universitaten Frankfurt und Gottingen. Diplom und Promotion in Mathematik in Got tingen. Drei Jahre Entwicklungsingenieur in der Firma Telefunken. Seit 1962 in Saarbriicken, zunachst als Habilitand der Fritz-Thyssen-Stiftung; Habilitation in Angewandter Mathematik mit einer Arbeit aus dem Gebiet der Informatik. Seit 1969 Professor, zunachst in Angewandter Mathema tik, spater in Informatik, an der Universitat des Saarlandes. CIP·Titelaufnahme der Deutschen Bibliothek Hotz, Giinter: EinfOhrung in die Informatik I von Gunter Hotz. ~ Stuttgart : Teubner, 1990 (Leitfaden und Monographien der Informatik) ISBN-13: 978-3-519-02246-6 e-ISBN-13: 978-3-322-80096-1 DOT: 10.1007/978-3-322-80096-1 Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich geschOtzt. Jede Verwertung aul3erhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulassig und strafbar. Das gilt besonders fOr Vervielfaltigungen, Ubersetzungen, Mikroverfilmungen und die Ein speicherung und Verarbeitung in elektronischen Systemen. © B. G. Teubner Stuttgart 1990 Gesamtherstellung: Zechnersche Buchdruckerei GmbH, Speyer Einband: P.P.K,S-Konzepte, T. Koch, OstfildernlStuttgart Vorwort Das vorliegende Buch ist aus den Vorlesungen Informatik I und II entstanden, die ich seit 1969 in einem regelmiiBigen Turnus von drei bis vier Jahren an der Universitiit des Saarlandes gehalten habe. Das im gleichen Verlag 1972 erschie nene Buchlein "Informatik: Rechenanlagen" war sehr rasch fertiggestellt worden, da zu dieser Zeit des Beginnes der Informatikausbildung an deutschen Hochschu len kaum Literatur zu diesem Thema vorhanden war. Das vorliegende Buch ist nicht nur eine bloBe Erweiterung dieses Buchleins, sondern stellt an sich ein vollig neues Werk dar. Der leitende Gesichtspunkt meiner Vorlesungen war die Herleitung der Struk tur von Rechenmaschinen aus einfachen Programmieraufgaben. Weiter sollte die Theorie in mathematischer Weise aufgebaut werden. Dies hielt ich fur umso notwendiger, als die Informatikstudienpliine relativ wenig mathematische Grund vorlesungen vorsehen. Das Kapitel 1 gibt eine Einfuhrung in die hier benotigten mathematischen Grundbegriffe. In Kapitel 2 wird stufenweise ein Modell fur Rechenmaschinen entwickelt. Der Ubergang von Stufe zu Stufe wird durch Programmieraufgaben motiviert. Es wird viel Gewicht darauf gelegt, den Simulationsbegriff als Methode zur Ein sicht in die Korrektheit von Algorithmen zu entwickeln. Diese kommt bei dem Aufbau einer Unterprogrammtechnik zum Tragen. Die Unterprogrammtechnik wird hier detailliert entwickelt, da sie eine sehr gute Basis zum Verstiindnis der interpretierenden Ubersetzung von Programmen hoherer Programmiersprachen darstellt. Das Kapitel 3 fuhrt den Leser zum Verstiindnis der Funktionsweise der Ma schine. Hierzu dient zuniichst eine Einfuhrung in die Theorie der kombinatori schen Schaltkreise. Es werden anschlieBend die bistabilen Schaltkreise und die Flipflops diskutiert und schlieBlich werden auch die endlichen Automaten und ihre Darstellung durch Schaltwerke behandelt. Eine der Beschreibungsmoglich keiten fur Schaltwerke stell en die "Mikroprogramme" dar, deren Realisierung durch Schaltwerke skizziert wird. Das Kapitel wird abgeschlossen durch einige Beispiele von Mikroprogrammen, ein formales Modell des Speicherwerkes und 6 Vorwort die Beschreibung des Mikroprogrammwerkes. Damit hat der Leser einen Stand erreicht, der ihn befahigt, selbst eine Rechenmaschine zu bauen. In Kapitel 4 geben wir eine Einfiihrung in die Theorie der hoheren Programmier sprachen. Grundlegend ist die ausfiihrliche Darstellung der Datentypen real, string, list und sentence. Diese Datentypen sind heterogene Algebren. Vari ablen werden relativ zu diesen Datentypen deklariert und als Operation fiir die Sprachen werden die Operationen der eingefiihrten Datentypen zugelassen. Die elementaren Kontrollstrukturen der Programme werden durch Baume defi niert. Dies erlaubt es auf einfache Weise, jedem Programm einen Strukturbaum zuzuordnen, der die Grundlage fiir die Definition der Semantik der Programme bildet. Die Interpretation der Programme konstruiert einen Graphen iiber dem Strukturbaum. Die durch das Programm definierte Berechnung wird durch eine Art Depth-first Search in diesem Graphen gesteuert. Wir fiihren Arrays, Verbunde und flexible Arrays als zusammengesetzte Daten strukturen ein. AbschlieBend zeigen wir, daB sich die Programme der hier eingefiihrten Sprache in Maschinenprogramme iibersetzen lassen. Dies tun wir, indem wir zunachst die Prozeduren eliminieren und schlieBlich alle Datenstrukturen auf flexible Ar rays zuriickfiihren. Die Programme, die sich durch diese Konstrui~tionen ergeben, lassen sich offensichtlich auf unserer Maschine aus Kapitel 2 interpretieren. Ein Satz iiber die Unvollstandigkeit der Programmiersprachen rundet das Buch ab und weist auf grundsatzliche Probleme der Berechenbarkeit hin. Vor allem habe ich Frau Dreyer und Herrn Dipl. Inform. Andreas Nikolaus zu danken. Frau Dreyer hat das ganze Kapitel 4 und die Abschnitte 3.1 bis 3.3.4 in U-TEX erstellt. Herr Nikolaus hat alles andere in U-TEX geschrieben und beide Manuskripte in der Form einander angepaBt. Er hat dariiber hinaus mein vor liegendes Manuskript gegliittet, von vielen Fehlern befreit und zu dem Abschnitt iiber die Simulationen auch inhaltlich wesentlich beigetragen. Den wichtigen Ab schnitt 2.3 iiber den Kellermechanismus hat er selbstandig verfaBt, Beweisskizzen - insbesondere Dycksprachen und lineare Schaltwerke betreffend - hat er aUB gefiihrt. Er hat die zahlreichen Tabellen entworfen und die bei weitem iiberwie gende Anzahl der Abbildungen in U-TEX realisiert. Zu den Ubungsaufgaben haben B. Becker, J. Hartmann, R. Kolla, T. Kretschmer, P. Molitor und wiederum A. Nikolaus beigetragen. Korrekturen wurden von T. Kretschmer, P. Molitor, G. Pitsch, M. Ries, E. Schomer gelesen. Natiirlich entsteht so ein Buch nicht im luftleeren Raum, sondern auch in der Auseinandersetzung mit den Vorstellungen der Kollegen am Ort. Wenn sich das Buch auch in der konsequenten Weiterentwicklung seiner "erste n Auflage" Vorwort 7 von dem Buch von J. Loeckx, K. Mehlhorn, R. Wilhelm im Aufbau und in der Gewichtung wesentlich unterscheidet, so sind beide Biicher doch wohl von dem gleichen Geist getragen und die den Biichern zugrunde liegenden Vorlesungen haben sich im Laufe der Jahre auch gegenseitig befruchtet. Dem Teubner-Verlag und insbesondere Herrn Dr. Peter Spuhler gilt mein Dank fiir die viele Jahre wiihrende sehr gute Zusammenarbeit. Saarbriicken, im Juli 1990 Giinter Hotz Vorwort zu "Informatik: Rechenanlagen" Dieses Buch ist die Ausarbeitung einer Vorlesung, die ich zweimal, namlich in den Sommersemestern 1970 und 1971, unter dem Titel "Informatik I (EinfUhrung in die Struktur von Rechenanlagen)" gehalten habe. Sie wa~ fiir Studienanfanger der Fachrichtung Informatik bestimmt. Das Ziel der Vorlesung bestand darin, eine systematische Einfiihrung in die Pro blemkreise zu geben, die beim Entwurf von Rechenanlagen auftreten. Hierbei sollte sich eine Struktur der Rechenanlagen in natiirlicher Weise aus Program mieraufgaben entwickeln. Es sollte klar werden, wie die Veranderung der Struk tur den Umfang der berechenbaren Funktionen beeinfluBt. Die Methoden der Beschreibung von Schaltkreisen und Schaltwerken und Gesichtspunkte ihrer Op timierung soIl ten dargelegt werden. Es soIl ten auch einige komplizierte Befehle durch Mikroprogramme beschrieben werden. Die physikalisch-technischen Grundlagen wurden ausgespart. Sie sind Gegen stand besonderer Vorlesungen. AIle nicht im Detail beschriebenen Einheiten, wie z.B. die Speicher, wurden axiomatisch erfaBt, so daB der ganze Entwurf auf einer strengen und doch auch realistischen Grundlage beruht. Es war das Ziel, diese Vorlesung nach dem Vorbild mathematischer Vorlesungen aufzubauen. Es ist dies sicher nicht der einzig gangbare Weg, wie das Buch von F. L. Bauer und G. Goos zeigt, das sich starker an dem phanomenologischen Aufbau der Experimentalphysik orientiert. Ich war der Meinung, eine Alternative zu diesem meines Wissens bis jetzt stets gegangenen Weg versuchen zu sollen, und lege deshalb diese Vorlesung als Buch vor. DaB dies so rasch geschehen kann, danke ich Herrn Dip!. Math. G. Kaufholz und o. Herrn Dr. rer. nat. Spaniol, die die Vorlesung ausarbeiteten, sowie Herrn Dip!. Math. H. Kopp, der die Ubungen zusammenstellte und die Register anlegte. Den Hauptanteil an der Arbeit traf Herrn Kaufholz, der auch den letzten Abschnitt iiber Speicherverschrankungen nach einer knappen Vorlesungsskizze ausgearbei tet hat. Einige Korrekturen stammen auch von Harern meiner Vorlesung. Dem Teubner-Verlag, der me in en Wiinschen beziiglich Gestaltung des Satzes groBziigig entgegenkam und das Buch in erstaunlich kurzer Zeit fertigstellte, so wie seinen Mitarbeitern machte ich an dieser Stelle herzlich danken. Saarbriicken, im April 1972 Giinter Hotz Inhaltsverzeichnis Vorwort 5 1 Grundbegriffe 15 1.1 Notationen .................. 15 1.2 Halbgruppen und Monoide. . . . . . . . . . 19 1.3 Homomorphismen und Erzeugendensysteme 23 1.4 Quotienten von Monoiden 31 1.5 Einfache Programme 34 1.6 Aufgaben . . . . . . . 41 2 Matbematiscbe Modelle 47 2.1 Definition einer mathematischen Maschine . . . . . . . . . 47 2.1.1 Eine erste Gliederung der Maschine ........ 48 2.1.2 Beschreibung des Programm- und Rechenspeichers 49 2.1.2.1 Der Programmspeicher 50 2.1.2.2 Der Rechenspeicher . . . . . . . . . . . . 51 2.1.3 Beschreibung des Schaltwerkes . . . . . . . . . . . 52 2.1.3.1 Einige Operationen und ihre Wirkungen . 53 2.1.3.2 Bedeutung der Schalter Wi und W2 • • • • 58 2.1.4 Ausbau des Befehlsvorrats, Indexregister, Adressenrech- nung, Programmbeispiele . . . . . . . . . . . . . . . . 58 2.1.4.1 Das Hornerschema als Programmbeispiel .. 58 2.1.4.2 Adressenrechnung und Adressenmodifikation 67 2.1.5 Ein Sortierprogramm. . . . . . . . . . . . 80 2.2 Die formale Definition der Maschine . . . . . . . 86 2.2.1 Abstrakte Maschinen und Berechnungen . 86 2.2.2 Simulationen . . . . . . . . . . . . . . . . 89 2.2.3 Beispiele von Simulationen und Weiterentwicklung des Be- griffes . . . . . . . . . . . . . . . . . . . . . . . . . 91 2.2.4 Partielle und relationelle Simulationen . . . . . . . . . .. 102 2.2.5 Spezielle Simulationen und AbschluBeigenschaften .... 115 2.2.6 Verschiebbarkeit von Programmen im Programmspeicher 119 10 Inhaltsverzeichnis 2.3 Unterprogrammtechnik.................. 125 2.3.1 Anforderungen an eine Unterprogrammtechnik 125 2.3.1.1 Realisierungsidee......... 127 2.3.2 Erweiterung der Maschinenkonfiguration . . 128 2.3.3 Dycksprachen und Klammerausdriicke . . . 130 2.3.3.1 Analyse von Klammerausdriicken 133 2.3.3.2 Listen und Programme . . . . . . 139 2.3.4 Der Kellerautomat oder Push-Down-Automat . 143 2.3.5 Syntaktisch korrekte Programme . . . . . . . . 145 2.3.5.1 Syntaxregeln.............. 146 2.3.5.2 Automatische Uberpriifung der Kriterien 150 2.3.5.3 Abfolge der Befehle . . . . . . . . . . . . 155 2.3.6 Organisation der Maschine ............. 157 2.3.6.1 Definition der erweiterten Konfiguration . 157 2.3.6.2 Die Syntaxanalyse . . . . . . . . . . . . 160 2.3.7 Seitenorientierte Verwaltung des Rechenspeichers 170 2.3.8 Ein Beispiel . . . . . . . . . . . . . . . . . . . . . 187 2.3.8.1 Aufgabenstellung ............ 188 2.3.8.2 Beschreibung des Programmes u zur Berechnung von cp(w) fiir w E A - Z+ ............. 189 2.3.9 Dynamische Verwaltung des Rechenspeichers 197 2.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . 201 3 Schaltkreise und Schaltwerke 207 3.1 Einleitung.......................... 207 3.2 Die boolesche Algebra der Schaltfunktionen . . . . . . . 211 3.2.1 Definition der SchaItfunktionen und ein Beispiel 211 3.2.2 Die Boolesche Algebra der Schaltfunktionen . . 215 3.2.3 Boolesche Ausdriicke und Schaltkreise . . . . . 220 3.2.3.1 Bemerkungen zum Bausteinsystemen 228 3.2.4 Berechnungsnetze und Laufzeiten . . . . . . . . 229 3.2.4.1 Berechnungsdauer in einem Berechnungsgraphen 232 3.2.5 Minimalpolynome .................... 235 3.2.6 Schaltfunktionen, n-dimensionaler Wiirfel, Diagramme .. 241 3.2.7 Boolesche Netze ....................... 247 3.2.7.1 Simultane Berechnung zweier Ubertragsfunktionen247 3.2.7.2 Eine Bemerkung zur Berechnung unterer Schran- ken fiir die Kosten von Realisierungen . . . . . . 257 3.3 Sequentielle Schaltkreise . . . . . . . . 257 3.3.1 Das D-Flipflop . . . . . . . . . 257 3.3.1.1 Ein Zahler modulo 10 261 3.3.2 Das (R,S)-Flipflop . . . . . . . 263