Table Of ContentDiedrich Sahlmann
Strukturiert
Programmieren
Die Methode
und ihr praktischer Einsatz
zum Selbststudium
Mit zahlreichen Abbildungen und Tabellen
Springer-Verlag
Berlin Heidelberg New York
London Paris Tokyo Hong Kong 1989
Dipl.-Ing. Diedrich Sahlmann
Siemens AG, Miinchen
Weiterfiihrung des friiheren Werkes "Strukturierte Programmierung"
von W. Jordan, D. Sahlmann, H Urban
ISBN-13: 978-3-540-50745-1 e-ISBN-13: 978-3-642-95582-2
DOl: 10.1007/978-3-642-95582-2
CIP-Kurztitelaufnahme der Deutschen Bibliothek:
Sahlmann, Diedrich: Strukturiert programmieren: die Methode
und ihr praktischer Einsatz zum Selbststudium/Diedrich Sahlmann.
- Berlin; Heidelberg; New York; London; Paris; Tokyo: Springer, 1989
Forts. von: Jordan, Wolfgang: Strukturierte Programmierung
ISBN-l3: 978-3-540-50745-1
Dieses Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte, insbesondere die der Ubersetzung,
des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der Funksendung, der Mikroverfil
mung oder der Vervielfiiltigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben,
auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfaltigung dieses Werkes oder von Teilen dieses
Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der
Bundesrepublik Deutschland vom 9. September 1965 in der Fassung yom 24.Juni 1985 zulassig. Sie ist grundsatzlich
vergiitungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes.
© by Springer-Verlag Berlin Heidelberg 1989
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch
ohne besondere Kennzeichnung nicht zu der Annahme, daB solche Namen im Sinne der Warenzeichen-und Mar
kenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden diirften.
Sollte in diesem Werk direkt oder indirekt auf Gesetze, Vorschriften oder Richtlinien (z. B. DIN, VDI, VDE) Bezug
genommen oder aus ihnen zitiert worden sein, so kann der Verlag keine Gewahr fiir Richtigkeit, Vollstandigkeit
oder Aktualitat iibernehmen. Es empfiehlt sich, gegebenenfalls fiir die eigenen Arbeiten die vollstandigen Vorschrif
ten oder Richtlinien in der jeweils giiltigen Fassung hinzuzuziehen.
Datenkonvertierung: Appl, Wemding; Druck: Saladruck, Berlin; Bindearbeiten: Liideritz & Bauer, Berlin
2362/3020 543210 - Gedruckt auf saurefreiem Papier .
Vorwort
Als der Springer Verlag im Jahr 1978 das Buch ,,strukturierte Programmierung" her
ausbrachte, war diese Methode der Software-Entwicklung noch ein neues Thema.
Folgerichtig enthielt das Werk sehr viele ErkHirungen, die die Vorteile dieser
Methode gegeniiber der damaligen Vorgehensweise herausstellten. Inzwischen ist die
Strukturierte Programmierung akzeptiert und etabliert (sicher mit ein Verdienst des
vorerwahnten Werkes), deutlichster Vorgang ist das_ Erscheinen von COBOL85 mit
neuen, ganz wesentlichen Sprachelementen zur Strukturierten Programmierung.
Auch sind in der Zwischenzeit leistungsfahige Software-Werkzeuge entstanden, die
die Methode wirksam unterstiitzen. .
Dies ist AnlaB genug, urn iiber eine. inhaltliche Anpassung des doch schon
10 Jahre alten Werkes nachzudenken und Erkenntnisse einzubiingen, die insbeson
dere die handwerkliche Umsetzung der Methode betreffen. Die~ wird durch viele
Beispiele und Aufgaben unterstiitzt. Wieder beriicksichtigt sind Unterrichtserfahrun
gen, die bei der Einweisung von Programmierern, Organisatoren un:dInformanden
an der Siemens-Schule fUr Kommunikations- und Datentechnik gentacht worden
sind. Hier danke ich Frau Ingrid Keuntje und Herrn Harry Claus fUr kollegiale
Unterstiitzung. Ganz besonderen Dank bin ich aber Herrn Rudolf Erbesdobler schul
dig, der nicht nur die Abschnitte COBOL85 und FORTRAN77 vollstandig ein
brachte, sondern audh ille technischen Kapitel einer kritischen Durchsicht unterzog.
Seine fundierten RatschHige habe ich gerne eingearbeitet.
Nach wie vor bleibt aber das Anliegen erhalten, den Leser in leicht faBbarer
Weise mit der Methode der Strukturierten Programmierung vertraut zu machen.
Deisenhofen bei Miinchen, im April 1989 D.Sahlmann
Inhaltsverzeichnis
I: Information
A: Aufgaben
L: Losungen
I A L
Hinweise zurn Selbststudiurn 1
1. Einfiihrung ....... . 3
2 Methode der Strukturierten Prograrnrnierung . 6
2.1 Ziele der Strukturierten Programmierung 8 10 236
2.2 Schrittweise Verfeinerung . . . . . . . 11 18 238
2.3 Beschrankung der Strukturblockarten 19 22 239
2.4 Blockkonzept. . . . . 23 26 240
2.5 Lesbarkeit. . . . . . . 27 31 240
2.6 Datenunterscheidung 32 35 241
3 Darstellungsrnittel fiir die Strukturierte Prograrnrnierung 36
3.1 Baumdiagramme . . . . . 37
3.2 Struktogramme ..... . 40 45 242
3.3 Verbale Entwurfssprache 46
3.4 DIN-Normen ..... . 48
4 Beispiele und Ubungen zu Struktograrnrnen 50
4.1 Praktische Hinweise . . . . . . . . 50
4.2 Einfache Strukturblocke. . . . . . 54 244
4.3 Zusammengesetzte Strukturblocke 56 246
5 Urnsetzung des Entwurfs in Prirniircode 58
5.1 Implementierung mit COBOL74 59
5.2 Implementierung mit COBOL85 74
5.3 Implementierung mit Assembler 89
5.4 Implementierung mit FORTRAN77 98
VIII Inhaltsverzeichnis
I A L
6 Beispiele und Ubungen zur Strukturierten Programmierung . . . 109
6.1 Lineare Verarbeitung 110 248
6.2 Mischen. . . . . . 112 260
Erweiterung ..... 115 266
6.3 Gruppenwechsel . . . 118 275
6.4 Tabellenverarbeitung 122
Einlesen und Aufbauen einer Tabelle 122 282
Verarbeiten von Tabellendaten . . 124 283
Sortieren von Tabellenelementen . . . 129 286
7 Strukturiert programmieren im System COLUMBUS-COBOL. 132
7.1 COLUMBUS-COBOL-Quellprogramm . 135
7.2 COLUMBUS-COBOL-Strukturblocke . 138
7.3 COLUMBUS-COBOL-Prozeduren ... 146
7.4 COLUMBUS-Dienstprogramme (COBOL) 153
7.5 COLUMBUS-COBOL-ET-Prozedur. 162
7.6 COLUMBUS-COBOL-Optimierung ..... 168
8 Strukturiert programmieren im System
COLUMBUS-Assembler. . . . . . . . 171
8.1 COLUMBUS-Assembler-Quellprogramm . 173
8.2 COLUMBUS-Assembler-Strukturblocke 177
8.3 COLUMBUS-Assembler-Bedingungen . 188
8.4 COLUMBUS-Assembler-Prozeduren . . 192
8.5 COLUMBUS-Assembler-Datenkonzept . 199
8.6 COLUMBUS-Dienstprogramme (Assembler) . 209
9 Strukturierte Programmierung und Software-Entwicklung . . .. 216
9.1 DV-Grobkonzept. . . . . . 218
9.2 DV-Feinkonzept . . . . . . 227
9.3 Implementierung und Test 231
9.4 Reverse Engineering. 234
LOsungen zu den Aufgaben 236
Sachverzeichnis ..... . 288
Hinweise zum Selbststudium 1
Hinweise zum Selbststudium
Was ist das Ziel dieses Buches?
Das vorliegende Buch befal3t sich mit einer der wichtigsten Methode der Software
Entwicklung, der Strukturierten Programmierung (im folgenden kurz SP genannt).
Projekte, die nach dieser Methode realisiert werden, ergeben hervorragende Produk
teo Die Entwicklungskosten werden spurbar gesenkt und die Entwicklungszeit verrin
gert.
Ziel dieses Buches ist deshalb, den Leser anhand einfacher praktischer Beispiele und
Aufgaben in die SP einzufUhren. Nach der Durcharbeit dieser Unterlage wird er sich
ein Grundwissen und praktische Fertigkeiten fUr den Einsatz dieser Methode erwor
ben haben. 1m einzelnen wird der Leser dann:
kennen: die Ziele der SP
die Methode der SP,
die Darstellungsmittel, die die methodische Anwendung unterstutzen;
konnen: einfache Aufgabenstellungen nach der Methode SP 16sen,
Struktogramme als Darstellungsmittel einsetzen.
An wen richtet es sich?
Die SP kann von jedem, der mit der Organisation und Entwicklung von Program men
beschiiftigt ist, wirksam eingesetzt werden. Die Unterlage richtet sich daher vor allem
an Datenverarbeitungsorganisatoren, Programmentwickler, Programmierer und Bera
ter. Weiter ist sie bestimmt fUr aIle, die die Software-Entwicklung steuern oder fertige
Programme priifen, wie z.B. DV-Revisoren. Schlief3lich ist sie eine nutzliche Informa
tion fUr Fuhrungskrafte, Weiterbildungsbeauftragte, Lehrkrafte, Studenten und Schu
ler. Spezielle fachliche Kenntnisse sind fUr das Verstandnis des Buches nicht erfor
derlich, jedoch wird ein Grundwissen in der Datenverarbeitung vorausgesetzt.
Das Kapitel "Umsetzung des Entwurfes in Primarcode" ist nur fUr die Leser interes
sant, die bereits eine der Programmiersprachen COBOL, FORTRAN oder Assembler
kennen. Dieses Kapitel kann aber auch ubergangen werden, ohne daB dadurch das
Verstandnis fur den Gesamtzusammenhang verlorengeht.
2 Hinweise zum Selbststudium
Was bieten die einzelnen Kapitel?
Der Stoff ist in Kapitel und diese sind in Abschnitte gegliedert. Jeder Abschnitt setzt
sich zusammen aus:
Informationen: gekennzeichnet durch ein I im Kolumnentitel,
Aufgaben: gekennzeichnet durch ein A im Kolumnentitel,
L6sungen zu
diesen Aufgaben: gekennzeichnet durch ein Lim Kolumnentitel.
Weiterhin wird bei den Informationen zwischen Prasenz- und Katalogwissen unter
schieden.
Bei dem Prasenzwissen handelt es sich urn Informationen, die der Studierende ohne
Hilfsmittel aus dem Gedachtnis wiedergeben soll. Dies beschrankt sich auf verhalt
nismal3ig wenige Grundzusammenhange. 1m Text sind sie durch grau unterlegte Fla
chen gekennzeichnet.
Unter Katalogwissen versteht man Begriffe und Sachverhalte, die yom Verstandnis
her grob eingeordnet werden k6nnen, deren Detailerklarung jedoch nur unter Heran
ziehung von weiteren Unterlagen sinnvoll ist.
Die meisten Abschnitte enden mit Fragen und Aufgaben, die der Studierende selb
stan dig 16sen solI. Zur Kontrolle k6nnen die eigenen Antworten verglichen werden
mit den vorgegebenen L6sungen; beide sollten sinngemaf3 iibereinstimmen. Dariiber
hinaus enthalten die vorgegebenen L6sungen haufig erganzende Informationen.
Wieviel Zeit ist fUr das Durcharbeiten erforderlich?
Das Durcharbeiten sollte m6g1ichst ziigig geschehen und nicht durch mehrtagige
Pausen unterbrochen werden. Bei einer durchschnittlichen Aufnahmebereitschaft
von etwa fiinf Stunden taglich beansprucht das Studium der Kapitel 1 bis 6 etwa vier
bis fiinf Tage. Selbst wenn alle gestellten Aufgaben richtig ge16st werden, so darf aber
nicht iibersehen werden, daB es sich hier urn die ersten - noch von einem Lehrbuch
begleiteten - Schritte in ein umfangreiches neues Wissensgebiet handelt. An die
Durcharbeit sollte sich die L6sung eigener Aufgaben anschlieBen zur Festigung des
Wissens und der neu erworbenen Fertigkeiten.
Wenn die ersten ohne Hilfe erstellten Entwiirfe mehr Zeit in Anspruch nehmen als
die bisherigen konventionellen L6sungen, ist dies kein Grund zur Beunruhigung. Erst
nach etwa zehn selbst erarbeiteten L6sungen in der neuen Methode stellt sich die Si
cherheit und Schnelligkeit ein, die die vollen Vorteile der Strukturierten Programmie
rung yom Entwurf iiber den jetzt erheblich verkiirzten Test bis zum Einsatz hin zei
gen.
I
1 Einfiihrung 3
1 Einfiihrung
Die Datenverarbeitung unterstiitzt uns heute in vielen Bereichen des Uiglichen Le
bens. Probleme, die noch vor einigen Jahren unlosbar erschienen oder nur mit sehr
groBem Aufwand bewaltigt werden konnten, bearbeitet eine Datenverarbeitungsanla
ge heute in kurzer Zeit. Dabei ist noch kein Ende der Entwicklung abzusehen: Neue
Fertigungstechniken, sHindig fortschreitende Miniaturisierung der Bauelemente, Er
hohung der Speicherkapazitaten und der Verarbeitungsgeschwindigkeit, neue Soft
waretechnologien usw. eroffnen immer weitere Einsatzgebiete.
Die Kosten fUr solche Datenverarbeitungssysteme wurden am Anfang wesentlich
durch den maschinellen Aufwand - die Hardware - bestimmt. Bald jedoch nahm die
Erstellung, Pflege und Weiterentwicklung von Programmen - die Software - einen
solchen Umfang an, daB ihre Kosten die der Hardware in vielen Fallen weit iibertra
fen.
Wodurch wurde diese Entwicklung beeinfluBt? Heute erstellte Programme weisen ei
nen viel groBeren Funktionsumfang auf als die Software friiherer Jahre. Die Proble
me, die durch die Datenverarbeitung gelost werden, sind umfangreicher und komple
xer geworden. So sind durch den Einsatz dialogfiihiger Systeme, der Datenfemverar
beitung, der Datenbanken und komfortabler Dialogsprachen integrierte Gesamtlo
sungen fUr ganze Funktionsbereiche im Untemehmen realisierbar. Die Bedienung
der Systeme wurde komfortabler und einfacher. Umfangreiche Hilfs-, Sicherungs
und Schutzvorrichtungen gewahrleisten einen reibungslosen Programmablauf.
All dieser Fortschritt machte allerdings quantitativ und qualitativ einen erheblich ho
heren Programmieraufwand erforderlich, so daB bei der Entwicklung und Wartung
und beim Einsatz mancher Produkte Probleme und Schwierigkeiten, bezogen auf die
Kriterien Qualitat, Kosten und Zeit, auftraten. Die entstandenen Softwareprodukte
entsprachen haufig nicht den urspriinglich gestellten Forderungen. Diese Probleme,
die den Fachleuten schon langere Zeit bekannt sind, iiberraschen immer wieder Au
Benstehende und fiihren oftmals zu ungerechtfertigter Kritik. Fiir das Auftreten der
gezeigten Mangel gibt es jedoch begriindete Argumente:
- Software-Entwicklung ist ein relativ neuartiges Gebiet und hat erst in den letzten
Jahren groBe wirtschaftliche Bedeutung erlangt.
- Das Gebiet ist wesentlich schwieriger, als zunachst allgemein angenommen wurde.
Eine Erarbeitung von wissenschaftlichen Grundlagen konnte sich fast nirgendwo
auf bewahrte traditionelle Wissenszweige stiitzen.
I
4 1 Einfiihrung
Eine allgemeine Ubersicht der Softwareprobleme, ihrer Symptome und Ursachen ist
in der folgenden Tabelle dargestellt.
Softwareprobleme, Symptome und Ursachen (Tagungsbericht aus "The High Cost of Software", Naval
Postgraduate School, Monterey/Cal. 1973)
Problem Symptome Ursachen
Qualitat U nzuverlassig, Unzulangliche Formulierung der Anforderungen durch den
benutzerunfreundlich, Benutzer, unzureichende Test- und Abnahmepraktiken, Man
inkompatibel, gel an Ma/3staben fUr die Effizienzmessung, unzulangliche
nicht anpa/3bar, Dokumentation, fehlende Aufmerksamkeit durch das Mana
nicht iibertragbar, gement und fehlende Kontrolle, ungeeignete Verwendung der
keine Gewahrleistung. vorhandenen Technologie, unzulanglicher Kenntnisstand der
Programmierer, falsches Verhaltnis von Software- zu Hard
ware-Investitionen, Mangel an geeigneter Support-Software.
Kosten Hohe Entwicklungskosten, Schlechte Schatzung der Herstellungskosten, schlechte Be
hohe Einsatz- und schaffungspraktiken, schlechte Entwicklungspraktiken, man
Wartungskosten, schlechte gelnde Automatisierung der Entwicklung, ungeeignete oder
Ausnutzung der keine Verwendung vorhandener Entwicklungen, mangelhafte
Maschinenkapazitat, Hardware, unzureichender Kenntnisstand der Programmierer,
hohe Anderungskosten, mangelhafte Systemanforderungen und Spezifikationen, keine
hohe Kosten fUr die Managementkontrolle iiber die Kosten, hohes Gehaltsniveau
Dokumentation. fUr Programmierer, Unsicherheit in der Kostenerfassung und
-zuordnung, unzureichende Aufmerksamkeit im Hinblick auf
Systemintegration und Test, schlechte Dokumentationsprakti
ken.
Zeit Uberschreitung des Schlechte Schiitzpraktiken, unzureichende Definition und/oder
Auslieferungstermins, falsche Auffassung der Aufgabe, stark streuende Fahigkeiten,
lange Entwicklungszeit, Kenntnisse und Produktivitat der Programmierer, mangel
verspatete Fertigstellung hafte Steuerung und Kontrolle durch das Management, un
der Dokumentation. realistische Zwischen termine, ungeeignete Nutzung vorhande
ner Entwicklungen, zu lange Beschaffungszeiten, ungeniigende
Support-Software, Mangel an automatisierter Entwurfstech
nik, ungeniigende Aufmerksamkeit im Hinblick auf die Doku
mentation.
In den letzten lahren hat sich nun aufgrund der wirtschaftlichen Bedeutung und der
Probleme bei der Entwicklung und Wartung von Programmen eine Disziplin heraus
gebildet, die l"Software-Engineering" genannt wird. ~hr Ziel besteht in der "Anwen
dung von Prinzipien, Methoden und Werkzeugen fUr die Technik und das Manage
ment der Software-Entwicklung und -Wartung auf der Basis wissenschaftlicher
Erkenntnisse und praktischer Erfahrungen sowie unter Beriicksichtigung des jeweili
gen 6konomisch-technischen Zielsystems".1
1 Grundlagen und Techniken einer rationellen Programmentwicklung sind hier -nicht nur bezogen
auf die Strukturierte Programmierung- umfassend dargestellt. Nach Gewald,K.;Haake,G.;Pfad
ler,W.: Software Engineering, Grundlagen und Technik rationeller Programmentwicklung. 5.Aufl.
Miinchen, Wien: Oldenbourg 1988.