Leitfäden und Monographien der Informatik Herbert Klaeren Vom Problem zum Programm Leitfäden und Monographien der Informatik Herausgegeben von Prof. Dr. Hans-Jürgen Appelrath, Oldenburg Prof. Dr. Volker Claus, Oldenburg Prof. Dr. Günter Hotz, Saarbrücken Prof. Dr. Klaus Waldschmidt, Frankfurt Die Leitfäden 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 Bücher die ser Reihe sind einerseits als Grundlage und Ergänzung zu Vorlesungen der Informatik und andererseits als Standardwerke für die selbständige Einar beitung in umfassende Themenbereiche der Informatik konzipiert. Sie sprechen vorwiegend Studierende und Lehrende in Informatik-Studien gängen an Hochschulen an, dienen aber auch in Wirtschaft, Industrie und Verwaltung tätigen Informatikern zur Fortbildung im Zuge der fortschrei tenden Wissenschaft. Vom Problem zum Programm Eine Einführung in die Informatik Von Prof. Dr. rer. nato Herbert Klaeren Universität Tübingen 2., neubearbeitete und erweiterte Auflage B. G. Teubner Stuttgart 1991 Prof. Dr. rer. nato Herbert Klaeren Geboren 1950 in Gerolstein/Eifel. Studium der Mathematik und Informa tik an der Universität Bonn (1969-1974). Wiss. Mitarbeiter am Institut für Angewandte Mathematik und Informatik an der Friedrich-Wilhelms-Uni versität Bonn (1975) und an der RWTH Aachen (1976-1982). Promotion 1980 bei K. Indermark. Akademischer Rat an der RWTH Aachen (1982- 1988). Habilitation in Informatik (1988). Seit 1988 Professor für Informatik an der Eberhard-Karls-Universität Tübingen. Die Deutsche Bibliothek - CIP·Einheitsaufnahme Klaeren, Herbert A.: Vom Problem zum Programm : eine Einführung in die Informatik I von Herbert K1aeren. - 2., neubearb. und erw. Aufl. - Stuttgart : Teubner, 1991 (Leitfäden und Monographien der Informatik) ISBN 978-3-519-12242-5 ISBN 978-3-322-93993-7 (eBook) DOI 10.1007/978-3-322-93993-7 Das Werk einschließlich aller seiner Teile ist urheberrechtIich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt besonders für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Ein speicherung und Verarbeitung in elektronischen Systemen. © B. G. Teubner Stuttgart 1991 Gesamtherstellung: Zechnersche Buchdruckerei GmbH, Speyer Umschlaggestaltung: M. Koch, Reutlingen Vorwort Dieses Buch entstand aus Manuskripten des Autors zu Informatik-I-Vor lesungen an der Christian-Albrechts-Universität Kiel und der Eberhard KarIs-Universität Tübingen. An diesen Universitäten wird die Informatik I-Vorlesung außer von Hauptfachstudenten der Informatik und Neben fachstudenten aus Mathematik und Physik und weiteren Naturwissen schaften auch von "fachfremden" Studenten der Studiengänge Wirtschafts wissenschaften (Kiel) und Allgemeine Sprachwissenschaft (Tübingen) be sucht. Es kommt daher darauf an, neben einer allgemeinen Einführung in Methoden der Informatik und speziell der Programmierung Verständ nis für das Wesen der Informatik aIs einer formalen, der Mathematik nahe verwandten WISSenschaft zu wecken und im übrigen die notwendigen ma thematischen Grundlagen innerhalb der Vorlesung selbst anzubieten. Das Buch eignet sich zu Informatik-Grundkursen für Natur- und Gei steswissenschaftler, aber auch zur Informatik-Nebenfachausbildung all gemein sowie, je nach Studienplan, auch für Informatik-I-Vorlesungen. Darüber hinaus ist es auch zu ejnem Selbststudium von Informatik-Grund kenntnissen geeignet. Es muß jedoch entsprechend dem Charakter der In formatik ein gewisses mathematisches Rüstzeug mitgebracht werden oder doch zumindest die Bereitschaft, sich dieses anzueignen. Im Anhang listen wir (im Sinne einer Festlegung von Notationen) die notwendigsten mathe matischen Konstruktionen auf; darüber hinaus wird auf die angegebenen Lehrbücher verwiesen. Der Plan des Buchs ist wie folgt: Nach einer kurzen Einführung in die allgemeine Thematik behandeln wir in Kapitel 2 den Algorithmenbegriff. Voraussetzung für den Algorithmenentwurf ist die Erstellung einer Spezi fikation für das zu lösende Problem. Dabei gehen wir hier von der vereinfa chenden Vorstellung aus, daß die Leistung des zu erstellenden Programms die Berechnung einer Funktion im mathematischen Sinne ist. Unter die sen Bedingungen ist es sinnvoll, darauf zu bestehen, daß die Spezifikation formal abgefaßt und so präzise ist, daß sich ihre Einhaltung durch einen Algorithmus beweisen läßt. WIr stellen daher im Kapitel 2 neben einer formalen Notation ("Pseudocode") für Algorithmen-Zwischenstufen auch das grundlegende Rüstzeug für eine Verifikation von Algorithmen bereit. 6 Vorwort Jede Algorithmenentwicklung ist zum Scheitern verurteilt, solange man kein geistiges Modell der zugrundeliegenden Maschine hat. Im Kapitel 3 stellen wir daher die Registermaschine als ein einfaches, aber nicht ganz realitätsfernes Modell des Computers vor. Am Beispiel der Registermaschi ne wird auch die Problematik der Maschinenprogrammierung auf unterster Ebene vorgestellt. Gleichzeitig wird durch dieses Kapitel das Konzept der abstrakten Maschine eingeführt. Kapitel 4 stellt dann anhand einer einfachen Programmiersprache MlNI PASCAL, die eine echte Teilmenge von PASCAL ist, grundlegende Mechanis men höherer Programmiersprachen wie Blockstruktur und rekursive Proze duren vor. Bei dieser Gelegenheit werden auch Mittel zur Beschreibung der Syntax und Semantik von Programmiersprachen vorgestellt. Anhand der dann folgenden Übersetzung von MINI-PASCAL in eine Maschinensprache wird deutlich gemacht, wie Blockstruktur und Rekursion auf der Maschi nenebene realisiert werden. KapitelS stellt dann in knapper Form die weitergehenden Sprachkon zepte von PASCAL vor, die zur Programmierung abstrakter Datentypen not wendig sind. Diese werden in Kapitel 6 betrachtet. Dabei wird auch vorgeführt, wie man unendliche Mengen mit endlichen Hilfsmitteln kon struktiv beschreiben kann, und wie das sogenannte IIErzeugungsprinzip" bei der induktiven Definition zusammenhängt mit dem Prinzip der struk turellen Rekursion zur Definition von Abbildungen. Tübingen, Januar 1990 HERBERT KLAEREN Vorwort zur zweiten Auflage Die zweite Auflage stellt eine vollständige Neubearbeitung und Erweite rung dar. Besonders den Kollegen R. Giegerich und U. Güntzer bin ich für viele Hinweise zu Dank verpflichtet. Tübingen, Juni 1991 HERBERT KLAEREN Das Buch wurde auf einem IBM RISCSystem/6000 mit 1MB'" 2.09 CIEX 3.1) in Palatino Roman gesetzt. Die Programme zur Generierungder Syntaxdiagramme und der Abhängig keitsgraphen sind von M. Seidel (p. 109-118) und P. Thiemann (p. 85,120). Inhaltsverzeichnis 1 Einführung 9 1.1 Was ist Informatik? ..... 9 1.2 Geschichte der Programmierung . . . . . . . . . . . . . . .. 12 1.3 Problemlösen durch Algorithmen ....... . . . . . . .. 17 2 Algorithmen und Spezifikationen 21 2.1 Spezifikationen.......................... 21 2.2 Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . .. 31 2.3 Verifikation von Algorithmen . . . . . . . . . . . . . . . . 51 2.4 Termination und Rechenaufwand . . . . . . . . . . . . . 60 2.5 Aufgaben........................... 70 3 Registermaschinen als Computermodell 73 3.1 Aufgaben............................. 94 4 Eine einfache Programmiersprache 95 4.1 Syntaktische Beschreibungsmittel ............. 96 4.1.1 Baclws-Naur-Form ................. 97 4.1.2 Erweiterte BNF . . . . . . . . . . . . . . . . . . . . 103 4.1.3 Syntaxdiagramme . . . . . . . . . . . . 108 4.2 Syntax von Mini-Pascal . . . . . . . . . . . . . . . . . . . . . 111 4.3 Semantik von Mini-Pascal . . . . . . . . . . . . . . . . . . . . 118 4.4 Übersetzung von Mini-Pascal in Maschinencode . . . . . . . 127 4.5 Aufgaben............................. 140 5 Von Mini-Pascal zu Pascal 143 5.1 Aufgaben....... 153 6 Abstrakte Datentypen 157 6.1 Einführung............................ 157 6.2 Natürliche Zahlen ........................ 159 6.3 Wortmengen ........................... 165 6.4 Terme ............................... 168 6.5 Spezifikation abstrakter Datentypen .............. 175 6.6 Anwendungen abstrakter Datentypen ............. 179 8 Inhaltsverzeichnis 6.6.1 Folgen........................... 179 6.6.2 Binärbäume ....................... 196 6.7 Aufgaben............................. 206 A Mathematische Grundlagen 208 A.1 Mengen, Relationen, Abbildungen . . . . . . . . . . . . . . . 208 A.2 Formale Logik .......................... 214 A.2.1 Aussagenlogik ...................... 214 A.2.2 Prädikatenlogik ..................... 217 A.3 Halbordnungen ......................... 218 A.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 B Lösung der Übungen 221 C Literaturverzeichnis 233 Kapitell Einführung 1.1 Was ist Informatik? Informatikl ist ein Kunstwort, das vielleicht zwei Wörter als Wurzeln hat: Information Mathematik ~/ Informatik Informatik-Ausbildung und Forschung findet in der Bundesrepublik seit etwa 1967 unter dieser Bezeichnung statt. In den Vereinigten Staaten, wo es diese Wissenschaft (und den entsprechenden Studiengang) schon länger gab, heißt sie "Computer Science". Die deutsche Bezeichnung wurde wohl im Gegensatz dazu bewußt so gewählt, um deutlich zu machen, daß es in der Informatik um wesentlich mehr geht als bloß um Computer. Ge genstand sind vielmehr mathematische Modelle zur Informationsverarbeitung, die auch von dauerhafterer Natur sind als die Computer selber. Der Un terschied tritt nicht nur in der Namensgebung auf; auch die Lehrinhalte sind bei uns wesentlich stärker auf die theoretischen Grundlagen hin ab gestellt als auf die praktische Erarbeitung bestimmter Computer und ihrer Betriebssysteme und Programmiersprachen. In das übliche Raster von Geisteswissenschaft - Naturwissenschaft - In genieurswissenschaft läßt sich die Informatik (ebenso wie übrigens die Ma thematik) schlecht einordnen. Die Naturwissenschaften erforschen die von Gott vorgegebene Natur und ihre Eigenschaften; demgegenüber beschäftigt sich die Informatik mit Dingen, die letztlich nur der menschlichen Imagi nation entsprungen sind. Ingenieurswissenschaften wenden traditionell naturwissenschaftliche Erkenntnisse an, um bestimmte Maschinen oder andere Produkte herzustellen; auch dies trifft auf die Informatik nur teil weise zu. CARL FRIEDRICH VON WEIZSÄCKER hat vorgeschlagen, Informatik 1 Dieser Abschnitt ist z.T. beeinflußt von dem Studienführer Informatik [BHM84J' 10 Kapitell. Einführung (und Mathematik) als Strukturwissenschaften außerhalb dieses so vorgege benen Rasters zu definieren. In der Tat ist die Beschäftigung mit (mehr oder weniger abstrakten) Strukturen ein wesentliches Merkmal sowohl der Informatik wie der Mathematik. Die Informatik beschäftigt sich mit • Struktur, Wirkungsweise, Fähigkeiten und Konstruktionsprinzipien von Informationsverarbeitungssystemen, • Strukturen, Eigenschaften und Beschreibungsmöglichkeiten von In formationen und von Informationsverarbeitungsprozessen, • Möglichkeiten der Strukturierung, Formalisierung und Mathematisie rung von Anwendungsgebieten sowie der Modellbildung und Simu lation. Die Durchführung irgendeiner Tätigkeit auf dem Computer erfordert eine Formalisierung dieser Tätigkeit bis in die feinsten Details; daher wer den auch in der Informatik stets formale Methoden eingesetzt. Das heißt, wir beschäftigen uns mit • abstrakten Zeichen, Objekten und Begriffen, • formalen Strukturen (z.B. Sprachstrukturen, Datenstrukturen) und ihrer Transformation nach formalen Regeln, • der effektiven Darstellung solcher Strukturen im Rechner und der automatischen Durchführung der Transformationen. Damit ein Rechenprozeß ablaufen kann, sind drei Dinge vonnöten: Programm Daten Rechner (Maschine) Dementsprechend beschäftigen wir uns in der Informatik mit