Springer-Lehrbuch
Springer-Verlag Berlin Heidelberg GmbH
Manfred Broy Bernhard Rumpe
Obungen zur Einflihrung in die Informatik
Strukturierte Aufgabensammlung mit Musterlosungen
2., tiberarbeitete Auflage
Mit 129 Abbildungen, 30 Tabellen und CD-ROM
Springer
Prof. Dr. Manfred Broy Dr. Bernhard Rumpe Technische Universilat Munchen Inst itut fUr Informatîk
D-80290 MUnchen
E-mail: broy@informatik.tu-muenchen.de rumpe@informatik.lu-muenchen.de Internet : http://www-4.informatîk.tu-muenchen.de
Di~ Deuuehe Bibliothtk - CU'·EinhtiUaufn.hme Obung~n zur Einfuhrung in die Informalik: 51ruklurier!~
Aufgabensammlung mit Mu slerlijsungen I Manfr~d Broy; Bernhard Rump •.
2 .• tiberarb-.Aun .. - Berlin: Heidtlbug; New York: Barcelona: Hongkong;
London; Mai land: Paris; Tokio: Springer 2002 (Springt r·uhrbuch)
ISBN 978-3-540-42065-1 ISBN 978-3-642-56040-8 (eBook) DOI 10.1007/978-3-642-56040-8
ISBN 978-3-540-42065- 1
Dies.-s W.rk ill urheberrKhrlich geschiirzr. Dit dadurch b~grllndere n Rechre. insbesondere die der Oberserzung.
des Naehdruck5. des Vortrags, der Enlnahme von Abbildun ge n und Tab~llen. der Funk s.-ndung, der Mikroverfil·
mung ode r der Vuvielfll!!igung luf Inder~n Wegt n und der Speicherung in Datenverarbeitungsanlagen. bleibtn.
auch bei nur auszugsweiser Vorwertung. vorbeha!!en. Ein. Verviellll!!igung diese, Wtrkes ode< von Teiltn di •• t.
W.rke, in aueh im Einulfall nm in den Grenun dor ge",tzlichen B .. timmungen de, Urheberrec h1SgeSOlZ" dor Bundenepublik DeulKhland vom 9. Septemb .. 1965 in d .. jeweils geltenden FalSung zullssig. Sie iSI grundsiilliich vergOtunglpfl ichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen du Urhtb.rrtchug ... tzes.
httrrj/www,lpring. r.d~
C Springer_Vt rlag Berlin Heidelberg 2001
Oie Wiedergabe von Gebrauch.namen. Hand.llnamen. Wa"nbe .. ichnungen UIW. in di .. em \l'erk b ... chtigr aueh ohn e besondere K~nnzeichnung nichl zu dor Annahme. dafl solche N_men im Sinnt d .. Wa renu;chen. und Mar.
ke nsc"utt·G"~lzg.bung al. frei zu bea_chten wiren und dah .. von jedermann btnutzr werden durften.
Text.Abbildungen und Programme in di esem Buch und der beigel egt~n CO·ROM wurden sorgf:ilti g ... rbtitet. Vor_
lag und AUlo"n kijnnon jodoch fur evenluell "orbliebene fehl erhafte Angaben und der. n Folgen weder ein o juri,·
ti Kh e Verantwonung noch irgend eine Haflung lI~rnehmon.
Satz: Reproduktion,fenige AUlorenvoriage
Umschlaggesta ltung: design ee production Gmbh. Heidel~rg
Gedruckt auf 11u .. {reiem Papi.. SPIN: 10837598 33/31421XO·54 3 2 I O
Vorwort
Ohne die Bearbeitung konkreter Aufgaben, ohne breit angelegte Ubung kann ein verwertbares Wissen in der Informatik nicht erworben werden. Der Wert und die Funktion eines Ubungsbuches ist deshalb gar nicht hoch genug ein- zuschatzen. Mit Freude haben wir verfolgt, wie intensiv unser Ubungsbuch in den Einfuhrungsvorlesungen der Informatik von Studenten, Ubungsleitern und Dozenten genutzt wurde.
Obwohl mittlerweile der Kern der Informatik in weiten Teilen bemerkens- wert stabil ist und bleibt und damit ein GroBteil der Ubungsaufgaben auf Dauer aktuell ist, mussen sie doch in ihrer Auspragung laufend an die aktu- elle, sich schnell verandernde Situation der Informatik angepaBt werden. Dies betrifft im Fall unseres Ubungsbuches die Anpassung auf zeitgemaBe Pro- grammiersprachen, etwa auf die aktuelle Version von Java und den verfugba- ren Werkzeugen fur Compilerbau und Testmodellierung. In diesem Zusam- menhang haben wir die Nutzung der Programmiersprache Modula-2, die zwar fur padagogische Ziele sehr gut geeignet ist, aber leider nicht die erhoffte Verbreitung gefunden hat, eliminiert. Zusatzlich haben wir neue Aufgaben definiert, noch mehr Musterlosungen beigelegt und einige Fehler und Unge- nauigkeiten beseitigt. Speziell der steigenden Bedeutung von automatisierten Tests und der Modellierung von Softwaresystemen mit der UML wurde mit den neuen Aufgaben Rechnung getragen.
Wir hoffen, daB in der vorliegenden Form dieses Buch noch besser ge- eignet ist, urn Studenten und Interessenten durch aktive Beschaftigung mit Problemstellungen an die Kerninhalte der Informatik heranzufiihren.
Wir bedanken uns bei allen, die bei der 2. Auflage des Ubungsbuchs mit- gewirkt haben, und ohne die eine Uberarbeitung in dieser Form nicht moglich gewesen ware: Tobias Weinzierl, Alexandra Remptke und Gerwin Klein. Be- sonderer Dank gilt in diesem Zusammenhang wieder unserem Verlag, dem Springer-Verlag, und dabei Herrn Engesser, der uns bei der Uberarbeitung hervorragend unterstiitzt hat.
Wir wunschen allen gute Lernerfolge und viel SpaB mit diesem Ubungs- buch. Fur Anregungen und Erganzungen sind wir jederzeit dankbar.
Munchen, im August 2001 Manfred Broy, Bernhard Rumpe
'II \Torvvort
Vorwort zur ersten Auflage
Informatik ist vor allem Ingenieurvvissenschaft. Beherrschend ist die Aufgabe, praktische, konkrete Problemstellungen mit Mitteln der maschinellen Infor- mationsverarbeitung zu losen. Dies erfordert zvvar - besonders bei komplexen Aufgaben - umfangreiche theoretische Kenntnisse und ein tiefes VersHindnis filr die Strukturen der Informationsverarbeitung, entscheidend ist aber im- mer die Fahigkeit, konkrete praktische Losungen zu erarbeiten. Schon daraus ergibt sich, daB das Studium der Informatik und seine wesentlichen Bestand- teile ohne bestandige Ubungen kaum durchzufilhren sind. Zwar leidet die Informatik wie aile anderen Ingenieurwissenschaften grundsatzlich an dem Problem, daB die Durchfilhrung von Ubungen realistischer GroBenordnung aufgrund der Zeit- und Mittelbeschrankungen innerhalb des Studiums kaum denkbar ist, aber trotzdem milssen Ubungen und das aktive Erarbeiten der Stoffinhalte eine entscheidende Betonung erhalten.
Das vorliegende Buch enthalt Ubungen zu der viersemestrigen Vorlesung
"Einfilhrung in die Informatik", wie sie an vielen deutschen Universitaten, insbesondere an der Technischen Universitat Milnchen und auch an der Uni- versitat Passau gehalten wird. Die Ubungsaufgaben entstammen teilweise den Ubungen, die im Rahmen dieser Vorlesungen in den Jahren von 1983 bis 1989 an der Universitat Passau und von 1989 bis 1997 an der Technischen Universitat Milnchen abgehalten worden sind. Sie wurden aber durch weitere Aufgaben erganzt und aktualisiert.
Damit bildet diese Sammlung von Ubungsaufgaben die ideale Erganzung zu der Einfiihrung eines der Autoren (M. B.), Informatik - Eine grundle- gende Einfilhrung, die in vier Banden von 1991 bis 1995 erschienen ist und deren 2. Auflage in zwei Banden 1997 und 1998 erscheinen wird. Sie soil Dozenten und Ubungsleitern Anregungen geben und Studenten zusatzliche Ubungsmoglichkeiten eroffnen.
Neben den Aufgaben, die die Inhalte der Einfiihrung in die Informatik abdecken, sind eine Reihe erganzender Aufgaben filr eine Vertiefung des Stof- fes und eine Hinfilhrung zum Hauptteil des Informatik-Studiums enthalten.
Erganzend werden insbesondere Programmieraufgaben in den funktionalen, imperativen bzw. objektorientierten Sprachen Gofer, Modula-2 und Java so- wie der Assemblersprache MI angeboten, die die praktische Umsetzung der in der Theorie erarbeiteten Konzepte erlauben. Auf der beigelegten CD-ROM sind Ubersetzer bzw. Interpreter dieser Sprachen und eine Reihe von Pro- grammrahmen und Musterlosungen enthalten.
Mit dem Erscheinen dieses Buches verbinden wir die Hoffnung, daB es mit ihm einfacher wird, sich Teile der Informatik auch im Selbststudium anzueignen. Dies ist gerade deshalb wichtig, weil die Informatik in immer weitere Bereiche unseres Lebens Einzug halt und nur ein tieferes Verstandnis filr die Inhalte der Informatik eine zielgerichtete Informationsverarbeitung ermoglicht.
Vorwort VII
Wir danken allen, die zum Gelingen dieses Ubungsbandes beigetragen ha- ben. Dies sind insbesondere Ralf Steinbruggen, Marc Sihling, Birgit Schieder, Christian Prehofer, Jan Philipps, David von Oheimb, Werner Meixner, In- golf Kruger, Heinrich Hu13mann, Radu Grosu, Thomas Gritzner, Max Fuchs, Claus Dendorfer und Max Breitling, die mit gro13em Engagement und auch mit Spa13 die jeweiligen Ubungsaufgaben gemeinsam mit uns erarbeitet, Mu- sterlosungen erstellt und diese mit den Studenten durchgearbeitet haben. Fur die Mithilfe bei der Erstellung, Uberarbeitung und Korrektur des Skripts danken wir Peter Scholz, Sascha Molterer, Franz Huber, Saulius Narkevicius, Bert van Heukelom und Christian Basler. Dariiber hinaus gilt unser Dank den Studentinnen und Studenten, die in vielfaltiger Weise interessante Ruck- kopplungen zu den Aufgaben gegeben haben. Nicht zuletzt danken wir dem Springer-Verlag, vor allem Hans Wossner, fUr die bewahrte hervorragende Zusammenarbeit.
Wir wunschen allen gute Lernerfolge und viel Spa13 mit diesem Ubungs- buch. Fur Anregungen und Erganzungen sind wir jederzeit dankbar.
Munchen, im August 1997 Manfred Broy, Bernhard Rumpe
Inhaltsverzeichnis
1. Einleitende Bemerkungen. . . 1
1.1 Umgang mit den Ubungsaufgaben . . . 1
1.2 Inhalte von CD-ROM und Internetauftritt . . . 2
2. Liste der Aufgaben und Losungen ... . . .. .. . . 5
3. Einfiihrung in Programmiersprachen. . . .. 11
3.1 Gofer... 12
3.1.1 Berechnung von Ausdriicken . . . .. 12
3.1.2 Eigendefinierte Funktionen 13 3.1.3 Ein kleines Beispiel. . . .. 14
3.1.4 Grundlegende Rechenstrukturen in Gofer. . . .. 15
3.1.5 Funktionales Programmieren in Gofer. . . .. 19
3.1.6 Strukturierung von Ausdriicken ... . . .. 22
3.1.7 Sortendeklarationen in Gofer. . . .. 23
3.2 MI Assembler. . . .. 28
3.3 Java... 29
3.3.1 Allgemeines zu Java. . . .. 29
3.3.2 Grundlegende Konzepte . . . .. 30
3.3.3 Programmstruktur, Ubersetzung und Start . . . .. 31
3.3.4 Grundlegende Konstrukte . . . .. 32
3.3.5 Bibliotheksklassenj-operationen... 39
3.3.6 Klassendiagramme in Java. . . .. 43
3.3.7 ProzeBkoordination... 45
3.3.8 Semaphore in Java 48
3.3.9 Compilerbau mit Java 49
X Inhaltsverzeichnis
AI. Aufgaben zu Teil I:
Problemnahe Programmierung 57
Al.1 Information und ihre Reprasentation . . . .. 57
Al.2 Rechenstrukturen und Algorithmen . . . .. 61
Al.3 Programmiersprachen und Programmierung.. . . . .. . . .. 71
A1.4 Applikative Programmiersprachen . . . .. 72
Al.5 Zuweisungsorientierte Ablaufstrukturen 77 Al.6 Sortendeklarationen 83 Al. 7 Maschinennahe Sprachelemente: Spriinge und Referenzen . . .. 85
Al.8 Rekursive Sortendeklarationen . . . .. 86
Al.9 Objektorientierte Programmierung. . . .. 90
A2. Aufgaben zu Teil II: Rechnerstrukturen und maschinennahe Programmierung 97 A2.1 Codierung und Informationstheorie . . . .. 97
A2.2 Binare Schaltnetze und Schaltwerke. . . .. 99
A2.3 Aufbau von Rechenanlagen 106
A2.4 Maschinennahe Programmstrukturen 109
A3. Aufgaben zu Teil III:
Systemstrukturen und systemnahe Programmierung 115 A3.1 Prozesse, Kommunikation und Koordination
in verteilten Systemen 115
A3.2 Betriebssysteme und Systemprogrammierung 127 A3.3 Interpretation und Ubersetzung von Programmen 128 A4. Aufgaben zu Teil IV:
Theoretische Informatik, Algorithmen und Daten-
strukturen, Logikprogrammierung, Objektorientierung 139
A4.1 Formale Sprachen 139
A4.2 Berechenbarkeit 144
A4.3 Komplexitatstheorie 148
A4.4 Effiziente Algorithmen und Datenstrukturen 150 A4.5 Beschreibungstechniken in der Programmierung 153
Inhaltsverzeichnis XI
Ll. Losungen zu Teil I:
Problemnahe Programmierung 155
Ll.1 Information und ihre Reprasentation 155
L1.2 Rechenstrukturen und Algorithmen 163
Ll.3 Programmiersprachen und Programmierung " 178
Ll.4 Applikative Programmiersprachen 180
Ll.5 Zuweisungsorientierte Ablaufstrukturen 190
Ll.6 Sortendeklarationen 199
Ll.7 Maschinennahe Sprachelemente: Spriinge und Referenzen 203
Ll.8 Rekursive Sortendeklarationen 204
Ll.9 Objektorientierte Programmierung 210
L2. Losungen zu Teil II:
Rechnerstrukturen und maschinennahe Programmierung 219
L2.1 Codierung und Informationstheorie 219
L2.2 Binare Schaltnetze und Schaltwerke 224
L2.3 Aufbau von Rechenanlagen 238
L2.4 Maschinennahe Programmstrukturen 247
L3. Losungen zu Teil III:
Systemstrukturen und systemnahe Programmierung 257 L3.1 Prozesse, Kommunikation und Koordination
in verteilten Systemen 257
L3.2 Betriebssysteme und Systemprogrammierung 281 L3.3 Interpretation und Ubersetzung von Programmen 286 L4. Losungen zu Teil IV:
Theoretische Informatik, Algorithmen und Daten-
strukturen, Logikprogrammierung, Objektorientierung 315
L4.1 Formale Sprachen 315
L4.2 Berechenbarkeit 333
L4.3 Komplexitatstheorie 347
L4.4 Effiziente Algorithmen und Datenstrukturen 351 L4.5 Beschreibungstechniken in der Programmierung 364
Literatur 367
Index 370