ebook img

Programmierstil in Pascal, Cobol, Fortran, Basic, PL/I PDF

341 Pages·1985·8.628 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 Programmierstil in Pascal, Cobol, Fortran, Basic, PL/I

Karl Kurbel Programmierstil in Pascal, Cobol, Fortran, Basic, PL/I Mit 52 Abbildungen Springer-Verlag Berlin Heidelberg New York Tokyo Prof. Dr. Karl Kurbel Universität Dortmund Fachbereich Wirtschafts- und Sozialwissenschaften Lehrstuhl für Betriebsinformatik Postfach 500500 4600 Dortmund 50 ISBN-13 :978-3-642-70248-8 e-ISBN-13 :978-3-642-70247-1 DOI: 10.1007/978-3-642-70247-1 CIP-Kurztitelaufnahme der Deutschen Bibliothek Kurbel, Kar!: Programmierstil in Pascal, Cobol, Fortran, Basic, PLiI / Karl Kurbel. -Berlin; Heidelberg; New York; Tokyo: Springer, 1985. (Springer Compass) ISBN-13:978-3-642-70248-8 Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdruckes, der Entnahme von Abbildungen, der Funksendung, der Wiedergabe auf photomechanischem oder ähnlichem Wege und der Speicherung in Datenverarbeitungsanlagen bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Die Vergütungsansprüche des § 54, Abs.2 UrhG werden durch die "Verwertungsgesellschaft Wort", München, wahrgenommen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß solche Namen im Sinne der Warenzeichen-und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. © Springer-Verlag Berlin Heidelberg 1985 Softcover reprint of the hardcover 1st edition 1985 Gesamtherstellung: Appl, Wemding 2145/3140-543210 SPRINGER COMPASS Herausgegeben von G. R. Kofer P. Schnupp H. Strunz Vorwort des Herausgebers Moderne Programmierung wird meist in modernen Sprachen vorgeführt, in Pascal, Modula, Ada. Natürlich ist dies naheliegend und sinnvoll. Moderne Programmie rung ist der problemgerechte Umgang mit Daten-und Kontrollstrukturen, und die modernen Sprachen wurden so entworfen, daß sie diese problemnahen Programm strukturen nahelegen und optimal unterstützen. Bloß - die meisten Softwareentwickler in der Praxis programmieren nicht in ih nen. Dafür haben sie gute Gründe: - Die Sprachen sind auf der vorhandenen Hardware nicht verfügbar. ,. - Der Auftraggeber wünscht eine "klassische" Programmiersprache, auf Grund in- terner Normen, der Vorkenntnisse seines Wartungspersonals, der Verträglichkeit mit bereits vorhandenen Softwarekomponenten ... - Notwendige Basis- und Hilfssoftware, wie ein Datenbanksystem oder ein Taskmonitor, sind häufig nur aus COBOL oder FORTRAN heraus benutzbar. - Die eingeführten und bewährten Projektstandards und Programmierwerkzeuge existieren nur für eine bestimmte Sprache. Jeder Praktiker kann aus seiner Erfahrung diese Liste nahezu beliebig verlän gern. Und er weiß, daß es oft sinnlos ist, gegen eine "alte, unstrukturierte" Sprache zu argumentieren. "If you can't beat them, join them" sagen die anerkannt praktischen Amerika ner. Wenn wir die unmodernen Sprachen schon nicht aus dem Felde schlagen kön nen, dann sollten wir in ihnen erst recht modem programmieren. Daß, und wie das geht, das zeigt dieses Buch. Gute Software ist immer noch das Verdienst des Programmierers, nicht das der Programmiersprache. Und vielleicht stellt sich auch bei Ihnen beim Lesen dieses Buches zuweilen die Assoziation ein, die mich überkam: eigentlich klingen die Goldberg-Variationen auf einem Cembalo viel besser als auf einem Flügel. Womit ich nichts gegen einen modernen Ada-Flügel gesagt haben will ... München, im Mai 1985 Peter Schnupp Vorwort Gegenstand dieses Buches ist der sinnvolle Umgang mit klassischen Programmier sprachen. Darunter werden die in der Praxis verbreiteten prozeduralen Sprachen verstanden, deren bekannteste Vertreter Fortran, Cobol, PLII, Basic und Pascal sind. Die Idee, dieses Buch zu schreiben, entstand angesichts der unbefriedigenden Situation auf dem Gebiet der Programmiersprachen. Obwohl die Informatikfor schung in den letzten zehn bis fünfzehn Jahren zahlreiche Sprachen hervorgebracht hat, die hervorragend aufgebaut sind und über durchgängige und klare Sprachkon zepte verfügen, werden nach wie vor in der Praxis hauptsächlich Programmierspra chen eingesetzt, die vor dieser Zeit entstanden sind und nach heutiger Einschätzung entscheidende Mängel aufweisen. Es erscheint fraglich, ob die neue Generation von Programmiersprachen jemals die "alteingesessenen" Sprachen verdrängen kann, zumal die Flexibilität der Betrie be in dieser Hinsicht nicht besonders groß ist: viele betriebliche EDV-Anwender befinden sich noch heute im Stadium der Assembler-Programmierung, und häufig gilt es bereits als enormer Fortschritt, wenn überhaupt der Übergang zu Cobol oder einer anderen höheren Programmiersprache vollzogen wird. Die Entstehung des Software Engineering und die Weiterentwicklung der Soft waretechnologie in den letzten ein bis zwei Jahrzehnten trugen dazu bei, daß wichti ge Sprachelemente für den sinnvollen Aufbau von Programmen und Programmsy sternen in die neuentwickelten Sprachen bereits aufgenommen wurden. Dagegen bleibt der Anwender älterer Sprachen mit Schlagwörtern wie "struktu rierte Programmierung", "schrittweise Verfeinerung", "Modularisierung", "Infor mation Hiding" u. a. zunächst alleingelassen. In seiner Programmiersprache findet er keine oder nur wenige Ausdrucksmittel, die auf diese Konzepte unmittelbar zu geschnitten sind. Angesichts der Verbreitung klassischer Programmiersprachen in der betriebli chen Praxis erscheint es daher dringend geboten, den Anwender bei der Umsetzung fundamentaler Konzepte in seine Sprache zu unterstützen. Dies ist das zentrale An liegen des Buches. Dem Studierenden, der eine Programmiersprache erlernt, und dem Anwender, der mit einer Sprache umzugehen hat, soll eine Hilfestellung für die systematische Gestaltung von Programmen gegeben werden. Programme sind Texte in einer künstlichen Sprache. Die Gestaltung eines Texts ist, abgesehen vom materiellen Inhalt, eine Frage des Stils. In diesem Sinne werden die Aspekte des Aufbaus und der Darstellung von Programmen als Elemente des Programmierstils betrachtet. Sie erstrecken sich von der inhaltlichen Strukturierung bis hin zur optischen Aufbereitung des Programmtexts. Vorwort VII Dieses Buch wendet sich nicht an den Programmierneuling. Der Leser sollte zu mindest über Grundkenntnisse und gewisse Erfahrungen in einer beliebigen höhe ren Programmiersprache verfügen. Dies ist zum Verständnis der Sprachkonzepte und zur Beurteilung der Stilelemente erforderlich. Das Buch hat im wesentlichen vier Zielrichtungen. Erstens soll es einen Über blick über Aufbau und Sprachkonzepte der wichtigsten in der Praxis verbreiteten Programmiersprachen geben. Behandelt werden die Sprachen Fortran, Cobol, Ba sic, PLII und Pascal. Zweitens sollen zentrale Elemente des Programmierstils erör tert werden. Dabei wird gezeigt, wie diese mit den Ausdrucksmitteln der klassischen Sprachen zu realisieren sind. Ein drittes Anliegen geht dahin, den Leser, der bereits eine Programmiersprache beherrscht, beim Erlernen anderer Sprachen zu unter stützen und ihm die Realisierung wichtiger Programmkonstrukte vor Augen zu füh ren. Schließlich soll der Anwender in der Praxis eine Hilfestellung erhalten, die es ihm ermöglicht, mit seiner Sprache sinnvoll umzugehen und neuere Programmier techniken auszunutzen. Das Buch ist jedoch nicht als Ersatz für ein Nachschlagewerk oder ein lehr buch zu einer bestimmten Programmiersprache gedacht. Vielmehr geht es hier um grundlegende Konzepte und Strukturen. Die Details einer Sprache können und sol len nicht umfassend dargestellt werden. Dazu sei der Leser auf die einschlägigen Sprachbeschreibungen verwiesen. Die skizzierten Anliegen werden in sieben Kapiteln behandelt. Kapitell gibt zu nächst einen Überblick über qualitative Aspekte von Programmen und Program miersprachen. Davon ausgehend werden in Kapitel2 Anforderungen formuliert, die an eine gute Programmiersprache zu richten sind. Auf der Grundlage dieser "Wunschliste" werden in den späteren Kapiteln die Elemente des Programmierstils erörtert. Kapitel3 enthält eine Zusammenstellung der wichtigsten Sprachkonzepte von Fortran, Cobol, Basic, PLII und Pascal, die aus ihrer historischen Entwicklung her aus erläutert werden. Die Bewertung der Sprachkonzepte und insbesondere die sy stematische Verwendung der Sprachelemente sind Gegenstand von Kapitel 4. Wäh rend hier die zentralen Elemente des Programmierstils sprachspezifisch behandelt werden, befaßt sich Kapitel 5 mit verschiedenen Aspekten, die unabhängig von ei ner bestimmten Programmiersprache sind. Kapitel 6 beschließt die Ausführungen mit einer Zusammenfassung und einem Ausblick auf neuere Programmierspra chen. Die Erläuterungen werden durchweg mit Hilfe von Beispielen veranschaulicht. Die Tragweite der zahlreichen Einzelaspekte, die bei der systematischen Pro grammgestaltung zusammenwirken, wird jedoch nur deutlich, wenn man ein voll ständiges und einigermaßen typisches Programm betrachtet. In Kapitel7ist deshalb ein größeres Programmbeispiel beschrieben. Ausgehend von einer einheitlichen Problemstellung werden dort die zur Lösung entwickelten Programme in Fortran, Cobol, Basic, PLiI und Pascal wiedergegeben. Zum einen kann so der Leser Ver gleiche zwischen den fünf Programmiersprachen anstellen. Zum andern können die Programme zum besseren Verständnis und zum Nachschlagen bei der Lektüre der Kapitel 3 und 4 herangezogen werden. Beim Entwickeln und Testen der Musterprogramme im Anhang war Herr Dipl.-Kfm. Hans Hermann Soll behilflich. Dafür sei ihm herzlich gedankt. Beson- VIII Vorwort derer Dank gebührt auch Frau Karin Wüstenbecker, die die mühselige Arbeit der Manuskripterstellung mit bewundernswerter Ausdauer bewältigte. Dortmund, Mai 1985 Karl Kurbel Inhaltsverzeichnis 1 Programme und Programmiersprachen . . . . . . . . . . . . . . . . . 1 1.1 Aufgabe und Zweck einer Programmiersprache . . . . . . . . . . . . 1 1.2 Qualitätsanforderungen an Programme ........ . . . . . 3 1.3 Zur Qualität von Programmiersprachen . . . . . . . . . . . . . . . . . 6 2 Anforderungen an eine Programmiersprache ............... 11 2.1 Strukturierungshilfen.......................... 11 2.1.1 Zerlegungskonstrukte.......................... 11 2.1.2 Verfeinerungskonstrukte ........................ 13 2.1.3 Steuerkonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15 2.1.3.1 Sequenz ............ . . . . . . . . . . . . . . . . . . . 16 2.1.3.2 Selektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 16 2.1.3.3 Repetition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 17 2.2 Datenbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19 2.2.1 Datentypen ................................ 19 2.2.1.1 Zum Begriff des Datentyps . . . . . . . . . . . . . . . . . . . . . . .. 19 2.2.1.2 Standarddatentypen . . . . . . . . . . . . . . . . . . . . . . . . . . .. 20 2.2.2 Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 22 2.2.3 Neudefinierte Datentypen ........................ 24 2.3 Unterstützung der Selbstdokumentation . . . . . . . . . . . . . . . .. 27 2.3.1 Verbalisierung............ . . . . . . . . . . . . . . 27 2.3.2 Kommentierung........... . . . . . . . . . . . . . . 29 2.3.3 Programm-Layout.......... . . . . . . . . . . . . . . 30 2.4 Weitere Anforderungen . . . . . . . . . . . . . . . . . . . . . 30 3 Verbreitete Programmiersprachen . . . . 32 3.1 Fortran................................... 32 3.1.1 Entstehung von Fortran . . . . . . . . . . . . . . . . . . . . . . . . .. 32 3.1.2 Sprachkonzeptevon Fortran66 . . . . . . . . . . . . . . . . . . . . .. 34 3.1.2.1 Typ, Struktur und Vereinbarung von Daten. . . . . . . . . . . . . . .. 36 3.1.2.2 Anweisungen ............................... 38 3.1.3 Spracherweiterungen in Fortran 77 . . . . . . . . . . . . . . . . . . .. 41 X Inhaltsverzeichnis 3.2 Cobol.................................... 43 3.2.1 Entstehung von Cobol . . . . . . . . . . . . . . . . . . . . . . . . . .. 43 3.2.2 Sprachkonzepte von Cobol . . . . . . . . . . . . . . . . . . . . . . .. 46 3.2.2.1 Textgestaltung und statische Programmstruktur . . . . . . . . . . . .. 46 3.2.2.2 Datenbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . .. 49 3.2.2.3 Weitere charakteristische Merkmale von Cobol . . . . . . . . . . . .. 56 3.3 Basic.................................... 67 3.3.1 Entstehung von Basic . . . . . . . . . . . . . . . . . . . . . . . . . .. 67 3.3.2 Sprachkonzeptevon Minimal Basic ................... 70 3.3.3 Erweiterungen von Minimal Basic . . . . . . . . . . . . . . . . . . .. 76 3.3.4 Einbettung in das Betriebssystem . . . . . . . . . . . . . . . . . . . .. 84 3.4 Plii.................................... 85 3.4.1 Entstehung von PLiI ........................... 85 3.4.2 Elementare Konzepte von PLlI. . . . . . . . . . . . . . . . . . . . .. 88 3.4.2.1 Daten, Attribute, Ausdrücke ....................... 90 3.4.2.2 Anweisungen ............................... 95 3.4.3 Höhere Sprachkonzepte . . . . . . . . . . . . . . . . . . . . . . . . .. 101 3.4.3.1 Programmstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 101 3.4.3.2 Behandlung von Programmunterbrechungen .............. 104 3.4.3.3 Weitere Sprachkonzepte . . . . . . . . . . . . . . . . . . . . . . . . .. 107 3.5 Pascal................................... 108 3.5.1 Entstehung von Pascal. . . . . . . . . . . . . . . . . . . . . . . . . .. 108 3.5.2 Sprachkonzepte von Pascal . . . . . . . . . . . . . . . . . . . . . . .. 110 3.5.2.1 Datentypen ................................ 110 3.5.2.2 Vereinbarungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 113 3.5.2.3 Anweisungen ............................... 116 3.5.2.4 Prozeduren und Funktionen ....................... 119 4 Programmierstil und Ausdrucksmittel der klassischen Programmiersprachen . . . . . . . . . . . . . . . . . . 124 4.1 Vorbemerkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 124 4.1.1 Ausgewählte Elemente des Programmierstils . . . . . . . . . . . . . .. 124 4.1.2 Implementierung von Datenkapseln . . . . . . . . . . . . . . . . . .. 125 4.2 Stilelemente in Fortran .......................... 128 4.2.1 Zerlegung und Verfeinerung ....................... 128 4.2.2 Steuerkonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 133 4.2.3 Vereinbarungen und Selbstdokumentation . . . . . . . . . . . . . . .. 142 4.2.4 Einschränkungen bei Fortran66 ..................... 146 4.2.4.1 Verschiedenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 146 4.2.4.2 Einschränkungen bei Steuerkonstrukten . . . . . . . . . . . . . . . .. 148 4.2.4.3 Ersatzkonstruktion für sekundäre Eingangsstellen . . . . . . . . . . .. 150 4.3 Stilelemente in Cobol . . . . . . . . . . . . . . . . . . . . . . . . . .. 154 4.3.1 Sprachelemente zur Zerlegung . . . . . . . . . . . . . . . . . . . . .. 154 4.3.2 Sprachelemente zur Verfeinerung . . . . . . . . . . . . . . . : . . . .. 160 4.3.3 Steuerkonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 163 4.3.4 Aspekte der Verbalisierung und Selbstdokumentation . . . . . . . . .. 171 Inhaltsverzeichnis XI 4.4 Stilelemente in Basic. . . . . . . . . . . . . . . . . . . . . . . . . . .. 178 4.4.1 Probleme der Zerlegung mit Basic-Sprachelementen .......... 178 4.4.2 .. Unterprogramme" als Verfeinerungskonstrukte ............ 183 4.4.3 Implementierung der Steuerkonstrukte . . . . . . . . . . . . . . . . .. 185 4.4.3.1 Steuerkonstrukte auf der Grundlage von Minimal Basic. . . . . . . .. 185 4.4.3.2 Ausblick: Erweiterungen von Minimal Basic. . . . . . . . . . . . . .. 189 4.4.4 Probleme der Lesbarkeit und Selbstdokumentation . . . . . . . . . .. 191 4.5 Stilelemente in PLiI . . . . . . . . . . . . . . . . . . . . . . . . . . .. 194 4.5.1 Zerlegung durch externe Prozeduren . . . . . . . . . . . . . . . . . .. 194 4.5.2 Verfeinerung durch interne Prozeduren. . . . . . . . . . . . . . . . .. 198 4.5.3 Steuerkonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 200 4.5.3.1 Steuerkonstrukte auf Basis des ANS I-Standards . . . . . . . . . . . .. 200 4.5.3.2 Steuerkonstrukte auf Basis von Spracherweiterungen . . . . . . . . .. 204 4.5.4 Aspekte der Selbstdokumentation .................... 205 4.5.4.1 Hinweise zu Vereinbarungen . . . . . . . . . . . . . . . . . . . . . .. 206 4.5.4.2 Kommentierungsrichtlinien . . . . . . . . . . . . . . . . . . . . . . .. 207 4.5.5 Kritische Anmerkungen zu PLiI . . . . . . . . . . . . . . . . . . . .. 209 4.6 Stilelemente in Pascal . . . . . . . . . . . . . . . . . . . . . . . . . .. 210 4.6.1 Zerlegungund Verfeinerung ....................... 211 4.6.1.1 Prozeduren und Funktionen als Verfeinerungskonstrukte . . . . . . .. 213 4.6.1.2 Prozeduren und Funktionen als Zerlegungskonstrukte ......... 215 4.6.2 Steuerkonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 221 4.6.3 Aspekte der Selbstdokumentation .................... 223 5 Sprachübergreifende Aspekte des Programmierstils . . . . . . . . . . .. 228 5.1 Kommentierung und Programm-Layout . . . . . . . . . . . . . . . .. 228 5.1.1 Die Rolle von Kommentaren ................ : . . . . .. 228 5.1.2 Zur Wirkung von Einrückungen und Leerzeilen . . . . . . . . . . . .. 231 5.2 Weitere Einflußfaktoren . . . . . . . . . . . . . . . . . . . . . . . . .. 232 5.2.1 Einige Aspekte des EfTlZienzstrebens . . . . . . . . . . . . . . . . . .. 232 5.2.2 Datenvereinbarungen . . . . . . . . . . . . . . . . . . . . . . . . . .. 236 5.2.3 Einzelaspekte ............................... 239 6 Zusammenfassung und Ausblick . . . . . . . . . . . . . . . 243 7 Musterprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 248 7.1 Beschreibung des Programmbeispiels .................. 248 7.1.1 AufgabensteIlung . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 248 7.1.2 Lösungsweg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 249 7.2 Implementierung in Fortran. . . . . . . . . . . . . . . . . . . . . . .. 251 7.2.1 Fortran77 ................................. 251 7.2.2 Fortran 66 ................................. 262 7.3 Implementierung in Cobol ........................ 273

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.