ebook img

PASCAL in 100 Beispielen PDF

257 Pages·1983·7.838 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview PASCAL in 100 Beispielen

MikroComputer -Praxis Herausgegeben von Dr. L. H. Klingen, Bonn, Prof. Dr. K. Menzel, Schwabisch Gmund und Prof. Dr. W. Stucky, Karlsruhe PASCAL in 100 Beispielen Von Prof. Dr. Thomas OUmann, Karlsruhe Michael Schrapp, Karlsruhe Dr. Peter Widmayer, Karlsruhe B3 B. G. Teubner Stuttgart 1983 CIP-Kurztitelaufnahme der Deutschen Bibliothek Ottmann, Thomas: PASCAL in 100 Beispielen / von Thomas Ottmann; Michael Schrapp; Peter Widmayer. - Stuttgart: Teubner, 1983. (MikroComputer-Praxis) ISBN-13: 978-3-519-02515-3 e-ISBN-13: 978-3-322-84817-8 001: 10.10071978-3-322-84817-8 NE: Schrapp, Michael:; Widmayer, Peter: Das Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte, besonders die der Obersetzung, des Nachdrucks, der Bi!dentnahme, der Funksendung, der Wiedergabe auf photomechanischem oder iihnlichem Wege, der Speicherung und Auswertung in Datenverarbeitungsanlagen, bleiben, auch bei Verwertung von Teiten des Werkes, dem Verlag vorbehalten. Bei gewerblichen Zwecken dienender Vervielfiiltigung ist an den Verlag gemiiB § 54 UrhG eine Vergiitung zu zahlen, deren Hohe mit dem Verlag zu vereinbaren ist. © B. G. Teubner, Stuttgart 1983 Gesamtherstellung: Beltz Offsetdruck, Hemsbach/BergstraBe Umschlaggestaltung: W. Koch, Sindelfingen Vorwort In den mehr als 10 Jahren, die seit dem Entwurf und der ersten Implementierung der Sprache Pascal vergangen sind, ist eine kaum noch zu Ubersehende FUlle von Pascal-EinfUhrungs- und lehrbOchern verCSffentlicht worden. NatUrlich werden die Eigenschaften und Maglichkeiten der Sprache stets an einigen Beispielen erllutert. Dennoch wird mancher leser - wie wir - die Erfahrung gemacht haben, da8 der Fundus der Beispiele unzureichend oder zu weit verstreut ist, um die Sprache richtig zu lehren, zu lemen, und die Technik des ProbiemlCSsens mit Hilfe von Pascal systematisch einUben zu konnen. Wir hotfen, mit dieser Sammlung von Beispielen dazu beizutragen, diesem Mangel abzuhelfen. Den Kern der vorliegenden Sammlung bilden Probleme, die fUr die Programmierausbildung kUnftiger Diplom-Wirtschaftsingenieure an der Universitat Karlsruhe verwendet werden. Man kann das insbesondere an einigen Beispielen zu grundlegenden DV-Algorithmen und Optimierungsaufgaben unschwer ablesen. Dennoch haben wir stets darauf geachtet, beim leser keine Spezialkenntnisse vorauszusetzen. Mathematische Kenntnisse und Fertigkeiten, wie sie etwa bis zum Abschlu6 der Mittelstufe des Gymnasiums vermittelt werden, ein waches Auge fUr die (kleinen) Probleme des Alltags und - last but not least - ein lehr- oder Handbuch fUr die Sprache Pascal sollten zum Verstlndnis slmtlicher Programmbeispiele ausreichen. Aile Programme sind in UCSD-Pascal geschrieben. Das ist eine spezielle, vor allem auf Mikrorechnern sehr verbreitete Erweiterung der Sprache Pascal. Wir haben uns darum bemUht, yom Sprachstandard nicht allzuweit abzuweichen, und bei weitem nicht aile Moglichkeiten des UCSD-Pascal verwendel Insbesondere haben wir auf die gerade fUr die Entwicklung gro6erer Software-Produkte unerl1:i61iche Moglichkeit zur Bildung separat kompilierbarer Units ganz verzichtet. Diese Sammlung ware nicht zustande gekommen ohne die konstruktive Kritik zahlreicher Studenten, die von unseren Kollegen H. Kleine Bilning, H. W. Six und l. Wegner gesammelten und an uns weitergegebenen Erfahrungen, und die technische Unterstotzung von G. Feller, M. Menzel und S. Aeiniger. Ihnen allen sind wir zu Dank verpflichtet. Oem leser schlie6lich waren wir dankbar, wenn er uns auf Fehler oder gar schonere Probleme und bessere Losungen hinweisen wUrde. Karlsruhe, im August 1983 T. O. M. S. P. W. Inhalt 1. Einleitung 7 2. Hundert Pascal-Beispiele 9 3. Bibliographische Hinweise und QueUen 229 4. Obersicht Uber UCSD-Pascal 231 4.1 Aufbau von Pascal-Programmen 231 4.2 Daten und Typen 232 4.3 Ein- und Ausgabe 242 4.4 Anweisungen 244 4.5 Andere Funktionen, Prozeduren und Units 250 literah'T 254 liste der Pascal-Beispiele und Querverweise 2S5 7 1. Einleitung Die zu Beginn der siebziger Jahre von N. Wirth an der ETH ZOrich entwickelte Programmiersprache Pascal hat sich inzwischen als erste Sprache in der Programmierausbildung an UniversiUiten durchgesetzt. Da die Sprache grundlegende Konzepte moderner Programmiersprachen einschlie6t, insbesondere die wichtigsten inzwischen akzeptierten Prinzipien zur Strukturierung von Daten und Anweisungen, werden PascaHihnliche Sprachen in zunehmendem Ma6e auch als sprachliches Mittel zur Formulierung von Algorithmen benutzt. Ohne die relativ einfache Implomentierbarkeit der Sprache vor allem auf Mini- und Mikrorechnern htitte die Sprachc aber wohl kaum ihren Siegeszug um die Welt antreten konnen: Neben BASIC 1St Pascal zur bevorzugten Programmiersprache fOr Personalcomputer geworden. F3csonders weit verbreitet ist eine an der University of California at San Diego entwickelte Implementation, das sogenannte UCSD-Pascal. Es handelt sich dabei um ein eigcnstiindiges System, das Einbenutzer-Betriebssystem-Funktionen und ein um zahlreiche Zusiitze erweitertes Pascal einschlie6t. Vor allem die Moglichkeiten zur Textverarbeitung, zur Graphik und zur Bildung getrennt compilierbarer Units machen UCSD-Pascal zu einem auch fOr gro6ere Anwendungen brauchbaren Instrument Die in diesem Buch enthaltenen Programmbeispiele sind siimtlich in UCSD-Pascal fOr den Apple II plus geschrieben worden; sie sind dort ohne inhaltliche ;1I;nderungen ausfOhrbar. Es sollte aber nicht schwer sein, die meisten Beispiele an andere Dialekte der Sprache Pascal anzupassen. Weil der Apple II eine Einbenutzermaschine iSt, die Oblicherweise im Dialog betrieben wird, haben wir die Beispiele aut diese Situation besonders zugeschnitten. Die Beispiele sind nach zunehmendem Schwierigkeitsgrad angeordnet. Hlufig hlngen mehrere Probleme miteinander zusammen und machen Gebrauch von vorher angegebenen (Teil-) Losungen. Durch diese Methode und durch die in die Programmtexte eingestreuten Kommentare soli der Leser in die Lage versetzt werden, die schrittweise Losung eines Problems nachzuvollziehen. Wir haben uns also bemOht, unsere Beispielprogramme "selbstdokumentierend" zu schreiben. Was kann eine Sammlung von Programmbeispielen leisten? Erinnern wir uns daran, wie wir unsere Muttersprache gelernt haben: Wir haben die Sprache unserer Umgebung abgelauscht, in erster Linie den Eltern, und sie langst weitgehend beherrscht, bevor wir in der Schule die ersten Regeln zur korrekten Bildung von Satzen, also die Grammatik, studiert haben. Kann man eine Programmiersprache genauso lernen? Sicher nicht, denn: - unsere Welt ist glOcklicherweise noch nicht so sehr von Computern beherrscht, da6 Programmiersprachen zum Oblichen Verstandigungsmittel geworden sind, - wir konnen uns nicht eintach in unsere Kindheit zurOckversetzen lassen und 8 - in der Welt der ProgrammiersDrschen herrscht eine wahrhaft babylonische Sprachverwirrung. Wenn auch die rein induktive lernmethode tOr eine Programmiersprache wohl kaum In Frage kommt. ist das Studium von Programmbeispielen dennoch sinnvoll: Sind sie Oberzeugend. prignant und einsichtig. wird (hottentlich) manches Beispiel haften bleiben und als Paradigma fOr ihnliche Fille dienen kijnnen. Auch bei einer (vorwiegend) deduktiven lehr- und lernmethode kann man auf Beispiele zur Erliuterung der Regeln und Ausdrucksmijglichkeiten einer Sprache nicht verzichten. Die in diesem Buch enthaltene Sammlung liefert dazu einiges Material. Schlie8lich kann eine Menge lernen. wer die zahlreichen Varianten und Zusatzprobleme zu den vollstindig ausgearbeiteten Beispielen lijst Dies ist also kein lehrbuch Dber die Programmiersprache Pascal. Wir haben im vierten Kapitel nur die wichtigsten Merkmale der Sprache Pascal und des UCSD-Systems systematisch zusammengestellt Viele Mijglichkeiten. Besonderheiten und Erweiterungen. die das UCSD-Pascal gegenUber Standard-Pascal bietet, bleiben unerwiihnt Zur Kliirung von Zweifelsfillen wird der leser die einschligigen HandbUcher zu Hilfe nehmen mOssen. ein auch bei einem erfahrenen Programmierer ganz normaler Vorgang. ProgrammierhandbUcher und detinierende Dokumente sind Oblicherweise in Englisch geschrieben. Denn - ob wir das begr08en oder nicht - Englisch hat sich zur lingua franca der Informatik entwickelt Wir benutzen deshalb manchmal nur englische und manchmal deutsche und englische FachausdrOcke nebeneinander. 9 2. Hundert Pascal-Beispiele Die folgenden 100 Beispiele umfassen stets die Problemstellung, die Beschreibung der GrundzOge des Losungswegs, und das die Aufgabe .osende Pascal-Programm. Obwohl wir bestrebt sein mu6ten, die Programme klein zu halten, haben wir doch wenigstens an einigen Stellen das Konzept der Entwicklung gro6erer Programme durch Modularisierung und schrittweise Verfeinerung zu illustrieren versucht. Wir haben dazu komplexc Probleme in kleinere Teilprobleme zerlegt, diese in einem separaten Kontext jeweils als eigene Beispiele gelost, und Teile der so entstandenen Programme im Programm zur Losung des komplexeren Problems verwendet. Auf solche Programmteile haben wir durch einen Kommentar der Form (* Hier: .. , *) hingewiesen, den Programmteil selbst haben wir aber nicht noehmals angegeben. Das vollstindige Programm erhalt man, indem man den Kommentar durch den spezifizierten Proyrammteil ersetzt. Zu den meisten Beispielen haben wir Bemerkungen gemacht, die das VersUindnis vertiefen helfen sollen und die MOglichkeit bieten, auf der Grundlage dcr gestellten Aufgabe und der angebotenen Losung an Variationen des Th&mas zu Oben. Diese Teile eines jeden Beispiels sollten stets in der genannten Reihenfolge studiert werden; nur aus PlatzgrOnden haben wir manchmal die Bemerkungen dem Programm vorangestellt. Die Soispiele sind im gro6en und ganzen nach zunehmendem Schwierigkeitsgrad geordnet, soweit dieser Ordnung nicht typographische Gesichtspunkte entgegengestanden haben. Jede Aufgabe ist einem Thema (in Klammern hinter dem Aufgabentitel) zugeordnet, und jede Losung ist durch diejenigen Merkmale der Sprache Pascal (in Klammern hinter dem Losungsweg) klassifiziert, die am Beispiel iIIustriert werden sollen. Das hei6t natiirlich nicht, da6 diese Sprachmerkmale nicht auch in anderen Programmen verwendet worden sind. EIOe Tabelle mit Verweisen am Ende des Suches erlaubt die Auswahl der Aufgaben nach beiden Kriterien. Diese Klassifizierung haben wir fOr die beiden Fallstudien zur Datelverwaltung und zur Graphik und fOr des letzte Beispiel (Tic Tac Toe) nicht vorgenommen, weil es uns hier in erster Linie um die Entwicklung und den Aufbau gro6erer Programme und nicht so sehr um einzelne Pascal-Merkmale gegangen ist. Die Pascalprogramme sind in UCSD-Pascal mit sehr wenigen apple-spezifischen Merkmalen geschrieben worden und auf einem Apple II plus gelaufen. Dann sind diejenigen Programmteile, Prozeduren und Funktionen, die aus anderen Programmen stammen, aus den Programmtexten entfernt worden; die entstandenen LOcken haben wir durch hinweisende Kommentare gekennzeichnet. Die so aufbereiteten Programmtexte sind Ober eine Datenleitung auf einen Kleinrechner Obertragen und dort durch einen Programm-Formatierer automatisch optisch aufbereitet worden. Schhe6\ich sind zum Zweck der Ausgabe der Programmtexte mit einem Drucker, der Ober verschiedene Schrifttypen und eine gewisse "Intelligenz" verfOgt, nOtwendige 10 }\nderungen vorgenommen und Steuerungskommandos eingefUgt worden. Wir haben aile Eingritte mit gro6er Sorgfalt vorgenommen und das jeweilige Produkt so gut als moglich auf seine Korrektheit UberprUtt. Wir nehmen daher an, daB sich keine Fehler eingeschlichen haben und zahlen jedem 1000 OM (tausend Mark), der jjfkjk ncusfgl Ffhkerel jhalkjhg pooaqq;I,II"OIINTERRUPTEO BY SYSTEM IN LINE 471100 Coaand: [(dit, R(un, F(ile, C(OIP, L(in~, X(mtf, A(SS!1, O(rbug,' [1.1l1 Running ... G!~en Sie bitte ein! ur,;mde Zahl zwischen 1 und 15 an --) 15 Es fol9t d3S .agisc~! OUidrit: 12. 1i3 86 69 S2 3S 18 1 224 217 191 173 156 139 122 114 87 71 S3 36 19 2 225 218 191 174 157 14@ 123 n6 m 88 71 S4 37 21 3 211 192 175 158 141 124 117 liS 72 55 38 214m 211 193 176 159 142 125 liB 91 89 m m 56 39 22 S 196 194 177 161 143 126 92 9a 73 .. 23 6 214 197 195 178 161 IH 127 118 93 76 74 57 24 7 21S 198 181 179 162 145 128 111 94 77 75 58 41 8 216 199 182 181 163 146 129 112 95 78 61 59 42 25 217 ?U 183 166 164 147 13i 113 96 79 62 6e 43 26 9 m 184 167 165 148 131 114 97 Si 63 46 44 27 1@ 218 185 168 151 149 132 115 98 81 64 47 45 28 11 219 282 169 152 15f 133 116 99 82 65 48 31 29 12 m m 186 153 136 134 117 lei 83 66 49 32 3e 13 m 2B4 187 171 137 135 118 tel 84 67 Si 33 16 14 m m 188 171 154 m m 121 119 lB2 85 68 51 34 17 15 189 172 155 138 12 1. Versumpft (Alltagsprobleme) In den pascalinischen SOmpfen leben die vier Stlmme der Asis, Belas, Cedis und Drudis. Forschungen ergaben, da8 es vier Eigenschaften gibt, die eine Unterscheidung der Stlmme erlauben: ein Bewohner der SOmpfe kann (mu8 aber nicht) manuseln, einen Knelt haben, liSpsen und nopeln. Man wei8, da8 nur die Asis einen Knelt haben und manuseln. Hat jemand keinen Knelt und nopelt, dann ist er gewi8 ein Bela. Ein Bewohner mit Knelt. der nicht manuselt, ist ein Cedi, wenn er immer nopelt. Wer keinen Knelt hat und liSpat. nle nopelt und stets manuselt. ist mit Bestlmmtheit ein Cedi; wOrde er nicht manuseln, wIre er ein Drudi. Es 1st geradezu typisch filr Dtudis, da8 sie weder manuseln noch nopeln, aber einen ordentlichen Knelt haben. Ganz enthaltsame Bewohner, die keinen Knelt haben, nicht IlSpsen und nicht nopeln, sind Drudis, wenn sie manuseln, und Cedis, wenn sie nicht manuseln. Ein programm soli die vier Eigenschaften eines Sumpfbewohners ertragen (Antwort JIN fOr Ja/Nein) und eine Diagnose liefern, zu welchem Stamm dieser gehlSrt. LlSsungsweg (If) Die Zuordnung der Kombinationen der Eigenschaften zu den Stlmmen ist eindeutig. Eine geschachtelte bedingte Anweisung, die genau der vorgegebenen Beschrelbung folgt. IlSst das Problem. Bemerkungen Wenn Sie sich tiefer in die pascallnischen SOmpfe begeben wollen, dann IlSsen Sie doch einfach die restlichen 99 Probleme. Danach gelten Sie als echter Asi.

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.