ebook img

Programmierkurs TURBO-PASCAL Version 7.0: Ein Lehr- und Übungsbuch mit mehr als 220 Programmen PDF

495 Pages·1998·13.999 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 Programmierkurs TURBO-PASCAL Version 7.0: Ein Lehr- und Übungsbuch mit mehr als 220 Programmen

Henning Mittelbach Programmierkurs TURBO-PASCAL Version 7.0 Programmierkurs TURBO-PASCAL Version 7.0 Ein Lehr- und Obungsbuch mit mehr als 220 Programmen Von Prof. Henning Mittelbach Fachhochschule MOnchen 2., durchgesehene Auflage EI3 B.G. Teubner Stuttgart· Leipzig 1998 1m vorliegenden Buch erwahnte Produkt- und Firmennamen wie BORLAND, EPSON, IBM, MS. DOS, TURBO u. a. sind gesetzlich geschOtzt, ohne daB im einzelnen darauf hingewiesen wird. Die Deutsche Bibliothek - CIP-Einheitsaufnahme Mittelbach, Henning: Programmierkurs TURBO-PASCAL Version 7.0 : ein Lehr-und Obungsbuch mit mehr als 220 Programmen / von Henning Mittelbach. - 2., durchges. Aufl. - Stuttgart; Leipzig: Teubner, 1998 ISBN 978-3-519-12986-8 ISBN 978-3-322-87200-5 (eBook) DOI 10.1007/978-3-322-87200-5 Das Werk einschlie8lich alier seiner Teile ist urheberrechtlich geschOtzt. Jede Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Ver lages unzuliissig und strafbar. Das gilt besonders fOr Vervielfiiltigungen, Obersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. © B. G. Teubner Stuttgart 1995 Softcover reprint of the hardcover 2nd edition 1995 Vorwort 1m Sommer 1995 ist -nach friiheren Texten zu Pascal -das voniegende, sehr umfangreiche und damit ziemlich vollstandige Buch zu TURBO Pascal erstmals erschienen. Zwar vvird TURBO Pascal im Hochschulbereich nach und von professionellen (besser kommerziellen) Sprachen vvie C und C++ (und anderen, darunter Java) verdrangt, hat sich also keine zehn Jahre gehalten, aber als Lemsprache in allgemeinbildenden Schulen und mit Anwendungen im gesamten Hobbybereich vvird sich dieses schone Pascal von Bonand sichenich noch einige Zeit behaupten konnen. Der Venag hat sich wegen des bisherigen Absatzes daher entschlossen, einen Nachdruck des Buches herauszubringen. 1m bisherigen Text sind nur wenige Fehler entdeckt v.urden; um die Kosten des Neudrucks moglichst gering zu harten, sind daher nur flinf Seiten ausgewechselt v.urden, auf denen sich vvirklich sinnentstellende Fehler befanden: Einige harmlose Tipp- bzw. Rechtschreibfehler werden Sie also hie und da noch vorfinden, obv.uhl sie durehaus bekannt waren bzw. sind. Viele Leserzusehriften aus dem deutschen Sprachraum haben gezeigt, daB mein Konzept zum Enemen einer Sprache gut ankommt, das Buch im Nachdruck also siehenich weiterhin auf groBes Interesse stoBen vvird. Da von mir Anfang 1997 bei Teubner in gleicher Aus stattung ein Erganzungsband TURBO PASCAL in Beispielen erschienen ist, eriibrigt sich jede inhaltliche Oberarbeitung der Texte. Dieses zweite Buch ist auf den .ersten" Band abgestimmt und praktisch ohne Oberschneidungen. Die weiterhin beim Autor erhaltlichen Disketten (siehe dazu den Hinweis am Ende des Kap. Betriebssystem, S. 486) decken nun mehr den Inhalt der beiden Bande exakt ab, die zusammen einen auBerst umfangreichen Programmierkurs bilden: In Turbo Pascal sollten damit keine Fragen mehr offen bleiben. Die Vielfalt der angebotenen Algorithmen und Routinen aus den verschiedensten Anwendungsbereichen weist aber deutlich uber die Sprache Pascal hinaus und ist beim eventuellen spateren Umsteigen auf eine andere Sprache von groBem Vorteil, da man schon gelemt hat, in grundlegenden Algorithmen zu denken. Gevvisse Schvvierigkeiten kann es (nach eigenen Erfahrungen) beim objektorientierten Ansatz geben. Wenn Sie vorhaben, spater auf C++ umzusteigen, sollten Sie die einschlagigen OOP-Kapitel von Turbo Pascal eher nicht dureharbeiten, sondem sich gleich mit C++ ins objektorientierte Abenteuer stUrzen ... Der klassische Ansatz von Pascal hingegen ist leicht nach C zu transferieren, also keine uberflussige Muhe gewesen: Immerhin erzieht Pascal zu klarem Programmierstil mit sauberen Strukturen, was man von C und seinen Derivaten nicht unbedingt behaupten kann ... Fur (spalere) Umsteiger(innen) auf C I C++ sei milgeteilt, daB Sie ein im Konzept sehr ahnliches Bueh erwerben konnen, das Ende 1997 unter dem Tilel Programmieren in C ++ ebenfalls bei Teubner erschienen ist und derselben Lempsyehologie .Ieaming by doing" huldigt: Enemen einer Programmiersprache anhand vieler praktischer Beispiele: weniger syslemalisch, daflir mehr exemplarisch. Das macht mehr SpaB, weil es von Anfang an stets einigermaBen sinnvolle Programme gibt, mit denen man etwas anfangen kann. Unverandert gilt: Der vortiegende Band ist als Begleitmaterial zu Lehrveranstaltungen in Turbo Pascal, aber auch zum Selbststudium konzipiert. Er beginnt daher .ganz am Anfang", setzt also keinertei Vorkenntnisse voraus, und gibt notfalls auch eine kleine EinfUhrung in die PC-Ideologie mit einem Kapitel zum Betriebssystem DOS, das jedenfalls noch im Hinter grund der meisten Windows-Versionen steht. Ob Sie Ihr Turbo Pascal unter DOS oder unter einer Windows-Version lauten lassen, ist fur die allermeisten Programme ohne Bedeutung: Einige Ausnahmen (ge\l\lisse Systemzugriffe, TSR-Philosophie) sind lediglich in den Kapiteln 15 und 16 zu beachten, die vor Jahren unter DOS zusammengestellt \/\.orden sind. Bei den Grafikprogrammen kann es unter Windows gelegentlich zu Problemen kommen; starten Sie dann die IDE aus DOS heraus ... Aile Programme wurden mit der .Ietzten" Version Turbo 7.0 ent\l\lickelt und mit Turbo 6.0 getestet. In ganz wenig en Fallen kommen auch Routinen vor, die unter 6.0 noch nicht lauten, also umgeschrieben werden muBten. -Und nun viel SpaB mit Turbo Pascal ... Munchen und Friedberg (Bayem), im Herbst 1998 Henning Mittelbach Inhaltsverzeichnis Vorwort 1 Einleitung 7 Quell- und Objektcode, Programmiersprachen, Sprachversionen, Rechner und Zahlensysteme, die Ganzzahltypen in TURBO 2 Programme in TURBO Pascal 21 Reservierte Worter, Standardbezeichner, Ein- und Ausgabe, Wertzuweisungen, Die Sprachumgebung IDE von TURBO 3 Funktionen und Logik 33 Ganzzahlrechnungen, Standardfunktionen, der ASCII-Code, BOOLEsche Ausdriicke, Wahrheitstafeln, Operatorenhierarchie 4 Kontrollstrukturen 45 Schleifen und Maschen, Wiederholungsanweisungen, Selektion mit IF, der CASE-Schalter, Menusteuerung, Syntaxdiagramme 5 Programmentwicklung 61 Problemanalyse und Algorithmus, Fehler, Flu~diagramme, Struktogramme, modulares und strukturiertes Programmieren, der TURBO Debugger 6 Mengen, Felder und Strings 75 Mengen, Mengenoperationen, Arrays, Sortieren in Feldern, Primzahlen, Tone am PC, Stringprozeduren 7 Der Zufall in Pascal 95 Zufallszahlen, Wurfeln und andere Simulationen von Zufallsereignissen, Monte-Carlo-Methoden, Geheimtexte, Normalverteilung 8 Fenster, auch im Editor 107 Window u.a. Prozeduren der Unit Crt, der TURBO Editor, der Bildschirmspeicher, Pull-down-Menus 9 Struktur mit TYPE und RECORD 119 Typen und Typenvereinbarungen, einfache und strukturierte Typen, Bereichsuberprufung, variante Records 10 Externe Dateien 131 Files und Dateien, Zugriffe auf die Peripherie, Binarsuche, Filekopierer, Directory, Viren, Dateitypen 11 Unterprogramme 149 Globale und lokale Variable, Wert- und Referenzparameter, Funktionen, Scancodes, ein 8-Bit-Rechner, prozedurale Typen 12 Bibliotheken und Units 169 Include-Files, Programmbiblotheken, System units, eigene Units, die Fenstertechnik des TURBO Editors, Programmparameter 6 Inhalt 13 Rekursionen 181 Rekursive Prozeduren, Rekursion und Iteration, Permutationen, das Dame-Problem, die TOrme von Hanoi, Backtracking 14 Programme 199 Druckertreiber, Minitext, Kalender, Lister, Inhaltsverzeichnisse, Primzahlen und Public-Key-Verfahren, Editoren, die Maus 15 DOS und Systemprogrammierung 235 DOS-Routinen und Interrupts, verdeckte Files, PaBworter, Hexdump, Kopierschutz, Programme, die sich selbst verandern ... 16 OP-Code als Inline-Code 265 Debugger und Maschinensprache, Inline-Code in Pascal, Assembler, Sektorenlesen, Slowdown, (residente) TSR-Programme 17 Grafik unter TURBO 289 Die Unit Graph, Farbsteuerung, Speichern und Laden von Bildern, die Grafikmaus, rekursive Grafiken, das Apfelmannchen, viele Farben 18 Algorithmen 325 Warteschlangen, Baliiste, Verfolgungskurven, Mondlandung, Drehungen im Raum, Stereobilder, Manipulation von Farben in Grafik 19 Verkettung und Zeiger 355 Heap und Stack, Dynamische Adressierung, Verketten, auch mehrfach, Ortsnetze (Graphen), Binarbaume, Musik am PC 20 Schwach besetzte Felder 385 Rechenblatter, Terminkalender, Kalenderalgorithmen 21 Zeigerverwaltung 397 Ein komplettes Verwaltungsprogramm mit Pointervariablen 22 Dateien und Baume 413 Sortieralgorithmen in Feldern und auf der Peripherie, mittelgroBe und groBe Dateien, Indexdateien, B-Baume, Datenschutz 23 OOP und TURBO VISION 443 Klassen und Objekte, Kapselung, Vererbung, Polymorph ie, typfreie Schnittstelien, Oberteitung zu TURBO VISION 24 DOS Betriebssystem 467 Eine EinfOhrung in MS.DOS fOr Anfanger Hinweise zu den beiden Disketten zum Buch 25 Literatur 487 26 Stichwortverzeichnis 489 1 EINLEITUNG In diesem Kapitel findet der Anfanger allgemeine Hintergrundinformationen zum Umfeld von Programmiersprachen und Rechnern ... Die Steuerung von Computern erfolgt teils uber Kommandos von der Betriebssystem ebene aus, teils uber sog. Programme: Das sind letztlich Foigen von Bitmustern, die von der CPU (Central Processor Unit) des Rechners direkt verstanden und nacheinander (sequentiell) abgearbeitet werden. Solche prozessorabhangigen Maschinenprogramme (object code) konnen zwar auch seiber entwickelt werden, doch ist das relativ schwierig und damit recht fehlertrachtig. Kleine Beispiele finden Sie in Kap. 16 dieses Buches ... Heutzutage bedient man sich meist sog. hoherer Programmiersprachen, die auf ganz verschiedenen Rechnern einsetzbar, kompatibel sind. Die weit verbreiteten Personal computer (PC) *) gehoren meist zur Familie der DOS-Rechner und benutzen haupt sachlich Prozessoren der Baureihen 8086, 80286, 80386 ... Die im Laufe dieses Kurses vorkommenden Programme, die wir in der sog. TURBO Sprachumgebung IDE (Integrated Development Envirement) entwickeln werden, laufen auf diesen PCs ohne Probleme. Fur absolute Neulinge im Umgang mit PCs ist zu Ende des Buches noch ein Kapitel angefUgt, das den ersten Umgang mit dieser Rechnerfamilie erleichtert und jene Begriffe (z.B. Betriebssystem DOS) erklart, die wir standig verwenden werden. Eine hOhere Programmiersprache wie BASIC oder Pascal ist eine ganz speziell entwickelte Kunstsprache, nach Wortwahl und Anzahl der Worter ein sehr kleiner Aus schnitt aus einer lebenden Sprache (meist Englisch), und zwar mit praziser Eingrenzung der Semantik (etwa: Bedeutungsinhalt), und im Blick auf maschinelle Bearbeitung sehr strenger Syntax (Grammatik). Die Worter werden mit dem anglo-amerikanischen Alphabet (also ohne Umlaute etc.) gebildet; hinzu kommen die Ziffern zum Aufbau der Zahlen, femer noch allerhand Sonderzeichen, mit denen z.B. Steuersequenzen gesendet werden konnen. Die lauffahigen Bausteine solcher Sprachen heiBen Anweisungen (statements); jede zulassige Anweisung bewirkt eine genau definierte Reaktionsfolge des Computers. "Zulassig" ist eine Anweisung dann, wenn sie aus den vorab definierten Elementen der Sprache syntaktisch regelgerecht aufgebaut ist. Man muB also sowohl diese Syntax lernen als auch die Bedeutung der Sprachelemente kennen, urn die ge wunschte Wirkung sicher zu erzielen. Wissenschafistheoretisch: Eine Programmiersprache ist ein abgeschlossenes System mnemotechnisch (zum Erinnern) gunstig formulierter Anweisungen zur Steuerung eines Automaten. - "Abgeschlossen" bedeutet, daB jede sinnvolle Verknupfung von An weisungen nach den geltenden Regeln zu neuen Anweisungen und damit wiederum zu einer spezifischen Aktion des Automaten fUhrt. Eine endliche (!) Menge zulassiger Anweisungen zu einem bestimmten Zweck heiBt Programm, Abbild eines Algorithmus zur Losung eines Problems. Programmieren in diesem allgemeinen Sinn ist eine we it gefacherte Tatigkeit: Man muB das Problem analysieren, sich einen Losungsweg aus den ken und sachgerecht formulieren sowie zuletzt den Algorithmus in einer passenden Sprache codieren, ehe man einen Rechner hinzuzieht. Kein Wunder also, daB die mittlerweile ausgefeilte Rechnertechnik und die Vielfalt differenzierter Probleme, die mit Rechnern untersucht werden konnen, viele dieser Einzelschritte Spezialisten zuweisen. "Programmieren" steht daher in engerem Wortsinn nur noch fUr einen einzigen der Arbeitsschritte, namlich das Codieren des Algorithmus zum Quellprogramm. *) AT steht bei IBM fUr Advanced Technology, XT fOr Small Technology der alteren PCs; die Prozessoren der Baureihe 8086 ff ... stammen von INTEL, CYRIX, AMD u.a. H. Mittelbach, Programmierkurs TURBO-PASCAL Version 7.0 © B. G. Teubner Stuttgart 1995 8 Einleitung Diese Arbeit leistet ein bei Bedarf verfugbares Programm des jeweiligen Sprach systems, das zusatzlich zum Betriebssystem des Rechners geladen werden muB. 1m Faile von TURBO Pascal handelt es sich um die o.g. sehr aufwendige Sprachumgebung IDE, ein Werkzeug, das neben diesem Obersetzer eine Reihe weiterer Komponenten aufweist, vor allem einen Editor zum Erstellen und Bearbeiten der Quelltexte in TURBO Pascal, ferner einen Debugger zur Fehlersuche und noch andere praktische Features. Der Benutzer eines PCs ist, wenn er nicht nur kaufliche Software einsetzt, oftmals in allen Rollen tatig. 1m Laufe dieses Kurses werden wir daher in vielen Fallen zuerst etwas Problemanalyse betreiben mussen, ehe wir ein Programm selbst schreiben und aus testen. Damit der Rechner das in einer Hochsprache geschriebene Quellprogramm (source code) abarbeiten kann, muB es erst in ein Bitmuster "ubersetzt", d.h. in ein maschinenorientiertes Objektprogramm verwandelt werden. Zwei grundsatzlich verschiedene Typen solcher Obersetzer existieren: Wird das Quell programm unter Laufzeit (Runtime) Zeile fUr Zeile ubersetzt und sogleich zeilenweise abgearbeitet, so spricht man von einem Interpreter. Charakteristisch ist fUr diesen Fall, daB auch ein Programm mit fehlerhaften Anweisungen gestartet werden kann, weil solche erst unter Laufzeit erkannt werden. Interpretierte Programme sind relativ lang sam, da bei jeder AusfUhrung neuertich ubersetzt werden muB. Ein Compiler hingegen generiert vorab den vollstandigen Maschinencode und speichert ihn auf Wunsch auch dauerhaft ab; nur bei erfolgreicher Obersetzung steht (auch ohne Quelle) ein syntaktisch fehlerfreier Objektcode zur Verfugung, der dann wiederholt sehr schnell abgearbeitet werden kann. DaB jenes Programm dann "Iauft", spricht noch lange nicht fUr seine "Richtigkeit", denn semantische oder logische Fehler, letztlich Fehler im Algorithmus, werden auch von Compilern nicht oder nur selten erkannt. Kann z.B. bei einem Quotienten der Nenner Null werden, so muB dies der Programmierer durch eine Abfrage im Programm vorab berlicksichtigen ... Hohere Programmiersprachen waren zumindest anfangs fast immer problemorientiert, d.h. fUr einen ganz gewissen Zweck konzipiert. Das zeigt oft schon der Name: ALGOL: ALGOrithmic Language, BASIC: Beginners All purpose Symbolic Instruction Code, COBOL: COmmon Business Oriented Language, FORTRAN: FORmula TRANslator u.a. ALGOL und FORTRAN sind mathematisch-naturwissenschaftlich, COBOL ist kauf mannisch ausgerichtet. Baustatiker haben ihre eigene(n) Programmiersprache(n) mit sehr speziellem Anweisungsvorrat und einer passenden Sprachstruktur. BASIC ist meist in ein interpretierendes Sprachsystem eingebunden (es gibt aber auch BASIC-Compiler), die ubrigen werden stets compiliert. Allen gerade aufgefuhrten Sprachen ist gemeinsam, daB das zu losende Problem streng algorithmisiert werden muB, der Losungsweg also sehr detailliert prozedural zu beschreiben ist. Man nennt sie daher zusammenfassend prozedura/e Sprachen. Auch Pascal gehOrt zu dieser Gruppe. Hingegen ist z.B. PROLOG (PROgramming in LOGics) eine sog. deklarative Sprache (der fUnften Generation): Ein Programm beschreibt die Aufgabe (z.B. das bekannte Problem des Handelsreisenden) sinnfallig; der Rechner sucht dann eine Losungs strategie. PROLOG gehOrt zur groBen Gruppe der symbolischen Sprachen, in der es neben den deklarativen auch noch applikative und logische gibt. Die Programmier technik ist hier gegenuber Pascal meist deutlich anders. Immer mehr an Bedeutung gewinnen sog. objektorientierte Sprachen; zu Ende dieses Kurses kommen wir auf diesen Gesichtspunkt (und zwar sogar bei Pascal) zuruck. Einleitung 9 Die Sprache Pascal ist nach dem franzosischen Philosophen und Mathematiker Blaise Pascal (1623 - 1662) benannt, der schon urn 1642 eine funktionsfahige Rechenmaschine entworfen hat. *) Pascal wurde urn 1971 an der ETH ZOrich von Niklaus Wirth vor gestellt und von ihm als Sprache konzipiert, die "klar und natorlich definiert ist und das Erlernen des Programmierens als einer systematischen Disziplin im Sinne des Strukturierens unterstotzen 5011 ... " Wirth hat seinerzeit wohl kaum ahnen konnen, welchen Siegeszug sein Entwurf einer "didaktischen Lernsprache" antreten wOrde: Mittlerweile sind we It we it Millionen von solchen Sprachsystemen installiert, nicht zuletzt deswegen, weil sich Pascal auch auf kleineren Rechnern mit relativ wenig Speicherplatz schon vor Jahren (s.u. APPLE Pascal) vorteilhaft implementieren lie~ und au~erdem eine Kunstsprache ist, die die Vorteile vieler bis dahin bekannter Sprachen verbindet und dabei gleichzeitig eine Reihe spOrbarer Nachteile vermeidet: Pascal ist kaum schwerer erlernbar als die Antangersprache BASIC, weist aber weit bessere Strukturierungsmerkmale auf und hat nicht die sehr fehlertrachtige Syntax, die beim Betrachten eines FORTRAN-Programms sofort auffallt. Sehen Sie sich dazu die dargestellten Listings (Quellprogramme) zu ein und derselben Aufgabenstellung auf der nachfolgenden Seite an: Das erste Beispiel eines BASIC-Programms verrat auch dem weniger Kundigen, worum es geht: Es liest sechs Zahlen ein, bildet deren Summe und gibt das Ergebnis aus. Die restlichen Listings leisten in etwa dasselbe, lassen das aber im Faile ALGOL, Version 1960 (eine deutsche Entwicklung) bzw. FORTRAN IV (zeitlich frOher, ab 1954 von IBM) keineswegs so einfach erkennen, auch wenn z.B. die sog. FOR-Schleife wenigstens in drei Listings in vergleichbarer Weise auftritt. Pascal ahnelt in den Formulierungen BASIC, ist jedoch besser strukturiert, was wir freilich jetzt noch nicht erkennen konnen. Obrigens: Die Gro~- bzw. Kleinschreibung der Anweisungen in Pascal ist fOr den Rechner ohne Bedeutung; sie hat nur didaktische GrOnde, wie noch erlautert wird. Die Obersetzung eines Pascal-Quelltextes erfolgt stets per Compiler. Enthalt der Quell text irgendwelche Syntaxfehler, also Versti:i~e gegen die Regeln der Sprache, oder sehr einfache logische Fehler (z.B. Nichtabschlu~ von Schleifen und ahnliches), so ist kein Maschinencode generierbar. 1st die Obersetzung erfolgreich, so liegt ein Objektcode vor, der auch ohne Quelltext lauffahig ist. Kommerzielle Software wird meistens so geliefert. Die Sprachumgebung IDE von TURBO besteht nicht nur aus einem solchen Compiler, sondern zusatzlich aus etlichen weiteren (und notzlichen) Komponenten, von denen der Anfanger zunachst nur den Editor zur Quelltextbearbeitung benotigt. HierfOr konnte man sogar einen anderen (externen) Editor benutzen und den Compiler in der vollig "abgemagertell" Form TPC.EXE einsetzen (was dann zwingend ist, wenn die Quellen sehr umfangreich werden und der Arbeitsspeicher an seine Grenzen sti:i~t). Auf den Um gang mit der TURBO Sprachumgebung werden wir im nachsten Kapitel und fallweise auch spater nur soweit eingehen, wie es fOr den Anfanger unbedingt erforderlich ist. Die insgesamt sehr umfangreichen und komfortablen Arbeitsmoglichkeiten kann man dann nach und nach den Manualen [1] ... [4] von BORLAND entnehmen. Unser Kurs ist auch dazu da, eben diese Manuale im Laufe der Zeit zu verstehen und mit Gewinn zu lesen. Von Wirths Pascal ausgehend, wurde zunachst Standard-Pascal entwickelt, das seit Mitte der siebziger Jahre auf Gro~rechenanlagen im Einsatz ist. Der Anweisungsvorrat ist wegen der Kompatibilitat im sog. ANSI-Standard genormt. Die jeweils imple mentierten Compiler erstellen direkt ein Maschinenprogramm. *) Urn 1623 baute Wilhelm Schickard (1592 - 1635) eine Rechenuhr, urn 1673 Gottfried Wilhelm Leibniz (1646 - 1716) eine Maschine mit Staffelwalze, die sogar multiplizierte.

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.