Heidelberger Taschenbucher Band 91 Sammlung Informatik Herausgegeben von F. L. Bauer, G. Goos und M. Paul Friedrich L. Bauer . Gerhard Goos Informatik Eine einfiihrende Ubersicht Zweiter Teil Mit 135 Abbildungen, 4 Tabellen und zahlreichen Programmbeispielen Dritte Auflage vollig neu bearbeitet und erweitert von F. L. Bauer Springer-Verlag Berlin Heidelberg New York Tokyo 1984 Dr. rer. nat. Dr es sc. h. c. FRIEDRICH L. BAUER ord. Professor der Mathematik und Informatik an der Technischen Universitat Munchen Dr. rer. nat. GERHARD Goos ord. Professor der Informatik an der Universitat Karlsruhe (TH) AMS Subject Classification (1980): 68-02, 68 A 05,68 A 10,68 A 25, 68 A 30 CIP-Kurztitelaufnahme der Deutschen Bibliothek Bauer, Friedrich L.: Informatik: e. einf. Obersicht/Friedrich L. Bauer; Gerhard Goos. Berlin; Heidelberg; New York; Tokyo: Springer NE: Goos, Gerhard:; [Verf.] [Lehrbuch]. Teil 2. - 3. Auf1.1viillig neu bearb. u. erw. von F. L. Bauer. - 1984. (Heidelberger Taschenbiicher; Bd. 91: Sammlung Informatik) ISBN·13: 978·3·540·13121·2 e·1SBN-!3: 978·3·642·96811·2 DOl: 10.1007/978·3·642-96811.2 Das Werk ist urheberrechtIich geschiitzt. Die dadurch begriindeten Rechte, insbesondere die der Obersetzung, des Nachdruckes, der Entnahme von Abbildungen, der Funksendung, der Wiedergabe auf photomechanischem oder iihnlichem Wege und der Speicherung in Datenverarbeitungsanlagen bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Die Vergii tungsanspriiche des § 54, Abs. 2 UrhG werden durch die "Verwertungs gesellschaft Wort", Miinchen, wahrgenommen. © by Springer-Verlag Berlin Heidelberg 1971, 1974, 1984 Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in dies em Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daB soIche Namen im Sinne der Warenzeichen-und Mar kenschutz-Gesetzgebung als frei zu betrachten waren und daher von jeder mann benutzt werden diirften. Gesamtherstellung: Zechnersche Buchdruckerei, Speyer 2145/3140-543210 Dem Gediichtnis an Heinz Rutishauser 1918-1970 Klaus Samelson 1918-1980 gewidmet Vorwort zur dritten Auflage Die Neubearbeitung des zweiten Teils der "Informatik" behalt die Kapi teleinteilung der zweiten Auflage bei, hebt jedoch den Leitgedanken "Struk turen", der das Grundthema "Algorithmen" des ersten Teils erganzt, starker hervor. Das fiinfte Kapitel wurde gestrafft und auf die strukturellen Ziige von Programmen, insbesondere auf die Blockstruktur, ausgerichtet. Das sechste Kapitel beginnt mit der Untersuchung der Struktur von (Hintergrund-)Spei chern und fiihrt auf allgemeine Datenstrukturen. Das siebte Kapitel behan delt formale Systeme; es erhielt einen relationentheoretischen Unterbau. Diese drei Kapitel werden abgerundet durch das achte Kapitel iiber Syntax und Semantik algorithmischer Sprachen, das den heutigen Stand der Theorie berucksichtigt und die oft nur informellen Erklarungen des ersten Teils prazi siert. Wie schon im ersten Teil widerstand ich der Versuchung, abstrakte Typen an die Spitze zu stell en und Algorithmen aus dem Begriff des Termaufbaus heraus zu entwickeln. Abstrakte Typen werden dementsprechend nur in ei nem SchluBabschnitt behandelt, der Einfachheit halber im wesentlichen un ter Beschrankung auftotale Operationen. Nach wie vor ist das Buch also eine Einfiihrung, an die sich Spezialvorlesungen anschlieBen miissen, und die den Weg zu Monographien erleichtern solI. Angesichts der ungleichmaBigen Vor bildung der Studienanfanger konnte auch auf ein MindestmaB an Propadeu tik nicht verzichtet werden. 1m iibrigen kann der Dozent die in sich relativ abgeschlossenen Kapitel 5 bis 7 permutieren, insbesondere das fiinfte und das sechste. Wie schon aus dem ersten Teil der kurze Abschnitt iiber den Aufbau einer Rechenanlage und ihr Befehlssystem hinausgedrangt wurde, entfiel nunmehr auch der bisherige Abschnitt iiber Betriebssysteme. Diese Gegenstande wer den heute als Unterbau der Systemprogrammierung besser in Verbindung mit dieser gelehrt* (vgl. G. SEEGMULLER, Einfiihrung in die Systemprogrammie rung [62]). Zusammen mit einem hypothetischen dritten Teil, der unter dem Leitgedanken "Maschinen" steht, deckt diese Einfiihrung in die Informatik die heute weithin verbreitete viersemestrige Einfiihrungsvorlesung ab und bietet die Grundlage fiir die bereits auf dem Anfangerniveau so iiberaus wichtigen Programmierpraktika. VIII Vorwort zur dritten Auflage Der Anhang zur Geschichte der Informatik wurde beibehalten. Unveran dert gilt, was im Vorwort der ersten Auflage stand, daf3 namlich eine so junge Wissenschaft wie die Informatik nur in ihren geschichtlichen Bezugen ganz verstanden werden kann. Am Ende des Buches finden sich Syntaxdiagramme fUr die verwendeten ALGOL 68- und PASCAL-ahnlichen Notationen. Ihnen liegt die Sprache CIP-L zugrunde, fUr die im Rahmen des Projekts CIP von A. LAUT, T. A. MATZNER und R. OBERMEIER ein Compiler auf PASCAL-Basis entwickelt wurde. Fur Anregungen und kritische Hinweise habe ich wieder zu danken den Freunden und Kollegen, die schon im Vorwort zur dritten Auflage des ersten Teils aufgefiihrt sind, sowie G. Goos, P. DEUSSEN, W. BRAUER, M. BROY, M. WIRSING, G. SCHMIDT, R. GEROLD, F. PEISCHL, H. Kuss, TH. STROH LEIN und Mitarbeitern der Arbeitsgruppe CIP - R. BERGHAMMER, C. DEL GADO KLOOS, F. ERHARD, R. GNATZ, U. HILL-SAMELSON, A. HORSCH, A. LAUT, T. A. MATZNER, W. MEIXNER, B. MOLLER, H. PARTSCH, P. PEPPER, R. OBERMEIER, R. STEINBRUGGEN und nicht zuletzt H. WOSSNER. Herrn Oberstudienrat W. DOSCH danke ich erneut fUr seine unschatzbare Hilfe bei der Ausarbeitung und Korrektur des Manuskripts. Neben HEINZ RUTISHAUSER ist dieser Band meinem unvergel3lichen Freund KLAUS SAMELSON, geb. 21. Dezember 1918, gest. 25. Mai 1980, ge widmet. SAMELSON gehorte zu den ersten, die dem Begriff der algorithmi schen Sprache Inhalt gaben und damit halfen, die Informatik eigenstandig zu machen. Munchen, Ostern 1984 F. L. BAUER * Lediglieh die Programmierung paralleler Prozesse sollte wohl kiinftig nieht in den engen Rahmen der Maschinenorientierung gepreBt werden. Es ist zu hoffen, daB die stiirmische Entwicklung auf dem Gebiet der Maschinenarchitektur einen diesbeziiglichen KHirungs prozeB mit sich bringt. Aus dem Vorwort zur ersten Auflage Dervorliegende zweite Teil der "Informatik" schlieBt die einfiihrende Uber sicht abo Er ist HEINZ RUTISHAUSER, geb. 30. Januar 1918, gest. 10. Novem ber 1970, gewidmet. RUTISHAUSER gehOrte zu den ersten, die die uber die Numerik hinausreichenden Fahigkeiten der digitalen Rechenanlage erkann ten und nutzten - und damit halfen, das Gesicht der Informatik zu formen. Munchen und Karlsruhe, im Friihjahr 1971 F. L. BAUER' G. Goos Vorwort zur zweiten Auflage Die zweite Auflage konnte in vie1en Einzelheiten verbessert werden. Ftir die zahlreichen Anregungen, die wir erhielten, bedanken wir uns sehr. Der Abschnitt 6.2 uber Datenverwaltung wurde unter Einbeziehung des bisheri gen Abschnitts 6.1.3 vollstandig neu gefal3t. Einigen Kollegen, insbesondere Herrn P. C. LOCKEMANN, danken wir fUr zahlreiche kritische Diskussionen bei dieser Neufassung. Schliel3lich wurde ein Abschnitt tiber die Program miersprache PASCAL und ein Anhang tiber Datenendgerate neu aufgenom men. Munchen und Karlsruhe, im Friihjahr 1974 F. L. BAUER' G. Goos Inhaltsverzeichnis Vorbemerkung .... . . . . . . . . . . . . . . . . . . . . . 1 5. Blockstruktur und dynamische Speicherverteilung 3 5.1 Blocke und Speicherverteilung .. . 3 5.1.1 Blockstruktur ......... . 5 5.1.2 Pulsierende Speicherverteilung 8 5.1.3 Wortorganisierte Speicher 11 5.1.4 Relative Adressierung ..... 12 5.1.5 Felder mit dynamisch errechneten Indexgrenzen 13 5.1.6 AbschlieBende Bemerkungen ........... . 16 5.2 Prozeduren und Blockstruktur .............. 17 5.2.1 Einbeziehung von Prozeduren in die Blockstruktur 17 5.2.2 Erganzung des Blockstrukturbaums durch Aufrufpfeile 20 5.2.3 Dynamischer Blockstrukturbaum ............ 24 5.2.4 Statische und dynamische Verweisketten .. . . . . . . 26 5.2.5 Dynamische Speicherverteilung im FaIle des Vorkommens von Prozeduren ................... . . . . . . . . .. 27 6. Hintergrundspeicher und Verkehr mit der Au6enwelt, Datenstrukturen, Speicherorganisation ........ . . . .. 29 6.1 Technische Charakteristika von Hintergrundspeichem und EI A-Geraten .............. 30 6.1.1 Speicher mit direktem Zugriff ..... 30 6.1.2 Speicher mit indirektem Zugriff . . . . 31 6.1.3 Transport- und Ubertragungseinheiten 33 6.2 Funktionelle Beschreibung von Hintergrundspeichem und EI A-Geraten .......................... 36 6.2.1 Lochkarten und Lochkartensti:iBe, Lochstreifen I Nicht wiederverwendbare Medien ................ 36 Inhaltsverzeichnis XI 6.2.2 Magnetbandspeicher mit Blocken wechselnden Umfangs / Wiederverwendbare Medien mit sequentiellem Zugriff auf BlOcke wechselnden Umfangs .................. 39 6.2.3 Magnetband-und Scheibenspeicher mit fester Blockeinteilung / Wiederverwendbare Medien mit sequentiellem Zugriff auf fest eingeteilte Blocke, organisierte Speicher .......... 44 6.2.4 Magnetplattenspeicher / Wiederverwendbare Medien mit rotierendem Zugriff . . . . . . . . . . . . . . . . 45 6.3 Einfiihrung neuer Rechenstrukturen 45 6.3.1 Teilstrukturen 46 6.3.2 Operative Anreicherung 48 6.3.3 Paar- und Tupelbildung 51 6.3.4 Variantenbildung . . . . 56 6.3.5 Rekursive Definition von Rechenstrukturen: Rekursive Daten- strukturen . . . . . . . . . . . . 58 6.3.5.1 Stapel . . . . . . . . . . . 59 6.3.5.2 Beblatterte Binarbaume 60 6.3.5.3 Bezeichnete Binarbaume 61 6.3.5.4 Allgemeine beblatterte Baume 61 6.3.5.5 Algorithmen auf rekursiven Datenstrukturen 63 6.3.6 Terme und Diagramme ............ . 63 6.3.6.1 Aufbau und Auswertung von Termen 64 6.3.6.2 Kantorovic-Baume und Gabelbilder 64 6.3.6.3 Terme und Schachteldiagramme 68 6.3.6.4 Benutzung des Assoziativgesetzes 69 6.4 Datenorganisation: Listen und Zeiger 71 6.4.1 Listen ........... 71 6.4.1.1 Referenzen . . . . 71 6.4.1.2 Unendliche Listen 74 6.4.2 Organisierte· Speicher .. 78 6.4.2.1 Errechnete Variablenbezeichnungen 78 6.4.2.2 Der Obergang von zusammengesetzten Objekten zu organisierten Speichern . . . . . . . . 82 6.4.2.3 Gleichbesetzungs-Tabu, Seiteneffekte 84 6.4.3 Zeiger . . . . . . . . . . . . . . . . . . 84 6.4.3.1 Zeigergeflechte ........ 85 6.4.3.2 Deklaration einer Zeigersorte 87 6.4.3.3 Schaffung von Variablen und Zeigern 88 6.4.3.4 Gleichheit von Zeigern . . 90 6.4.4 Geflechtbildende Variabelensatze ....... 90 XII Inhaltsverzeichnis 6.5 Zeiger-Implementierungen organisierter Speicher 93 6.5.1 Implementierung von Stapeln .. ... . 93 6.5.1.1 Stapel als Einweg-Listen .... . 93 6.5.1.2 Verkettung zweier Einweg-Listen 94 6.5.1.3 Prozeduren des Moduls KELLER 96 6.5.2 Implementierung von Sequenzen 98 6.5.2.1 Sequenzen als line are Zweiweg-Listen 99 6.5.2.2 Kopieren von linearen Zweiweg-Listen 102 6.5.2.3 Prozeduren mit Sequenz-Variablen .. 104 6.5.3 Implementierung von beblatterten Baumen . . 104 6.5.3.1 Beblatterte Binarbaume als Listen mit varianten Zeigern . . . . . . . . . . . . . . . . . . . . . . . . 104 6.5.3.2 Allgemeine beblatterte Baume als Listen mit varianten Zeigern . . . . . . . . . . . . . . . . . . . . . . . . .. 106 6.6 Implementierung organisierter Speicher mittels linearer Speicher 110 6.6.1 Gestreute Speicherung 110 6.6.2 Sequentielle Speicherung 110 7. Formale Sprachen ....... . 113 7.1 Relationen und formale Systeme 113 7.1.1 Dyadische Relationen und gerichtete Graphen 114 7.1.1.1 Mengeneigenschaft der Relationen 115 7.1.1.2 Das Produkt zweier Relationen ... . 116 7.1.1.3 Die konverse Relation ........ . 117 7.1.1.4 Maximale und groBte, minimale und kleinste Elemente .. 118 7.1.1.5 Reflexivitat . 118 7.1.1.6 Transitivitat 119 7.1.1. 7 Hiillen 121 7.1.1.8 Aquivalenzklassen 123 7.1.2 N oethersche und konfluente Relationen 124 7.1.2.1 Wege ............... . 125 7.1.2.2 N oethersche Relationen und Graphen 125 7.1.2.3 Htillen einer Noetherschen Relation . 126 7.1.2.4 Irreduzible Elemente, terminierende Wege 127 7.1.2.5 Der nichtdeterministische Ersetzungsalgorithmus 127 7.1.2.6 Konfluente Relationen, eindeutige Normalformen 129 7.1.2.7 Church-Rosser-Eigenschaft 130 7.1.3 Formale Sprachen - allgemeine Begriffe .......... 132 7.2 Formale Sprachen tiber Zeichenfolgen 133 7.2.1 Kompatible Ersetzungssysteme . 133