10
Manfred Nagl ADA Eine Einführung in die Programmiersprache der Softwaretechnik

Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

  • Upload
    lamanh

  • View
    247

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

Manfred Nagl

ADA Eine Einführung in die Programmiersprache der Softwaretechnik

Page 2: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

____ --Informatikliteratur zur Programmierung __ ~

Pascal - Lehrbuch für das strukturierte Programmieren von D. Cooper und M. Cloney

Einführung in die Programmiersprache Modula 2 von H. Pudlotz

Einführung in die Programmiersprache C++ von F. Bouse und W. Tölle

Einführung in die Programmiersprache COBOL von W.-M. Kähler

Programmieren in PLI 1- Eine moderne Einführung von E. Sturm

ADA - Eine Einführung in die Programmiersprache der Softwaretechnik von M. Nagl

Die Wissensrepräsentationssprache OPS 5 von R. Kriekhohn und B. Rodig

Prolog - Eine methodische Einführung von R. Cordes, R. Kruse, H. Longendörfer und H. Rust

JSP - Einführung in die Methode des Jackson Structured Programming von K. Kilberth

Modulare Regelprogrammierung von S. Bocionek

Logische und Funktionale Programmierung von U. Furboeh

~ ___ Vievveg __________________________________ ~

Page 3: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

MANFRED NAGL

Eine Einführung in die Programmiersprache der Softwaretechnik

3., verbesserte Auflage

11 Vleweg

ADA

Page 4: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

1. Auflage 1982 Nachdruck 1983

2., neubearbeitete und erweiterte Auflage 1988 Diese Auflagen sind erschienen unter dem Titel .Einführung in die Programmiersprache Ada"

3., verbesserte Auflage 1991

Das in diesem Buch enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Die Autoren und der Verlag übernehmen infolgedessen keine Ver­antwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht.

Alle Rechte vorbehalten. © Springer Fachmedien Wiesbaden 1991

Ursprünglich erschienen bei Friedr. Vieweg & Sohn Verlagsgesellschaft mbR, Braunschweig 1991.

Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsge­setzes ist ohne Zustimmung des Verlags unzulössig und strafbar. Das gilt insbesondere für Vervielföltigungen, Obersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

Umschlag: Schrimpf + Partner, Wiesbaden

ISBN 978-3-528-23347-1 ISBN 978-3-663-14249-2 (eBook) DOI 10.1007/978-3-663-14249-2

Page 5: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

v

Vorwort zur 1. Auflage

Dieses Buch ist nicht für jemanden gedacht, der einen Ada-Übersetzer schreiben will. Es steht hier eher die methodische Hlrwendung der Sprache im Vordergrund als die Abgrenzung erlaubter von nichterlaubten (syntak­tischen) Konstruktionen. Trotzdem soll beim Nachschlagen wegen einer Unklarheit bezüglich Ada hier eine präzise Antwort auffindbar sein. Dieses Buch ist auch nicht als Einfiihrung in das systematische Programmieren für Anfänger gedacht. Statt dessen wendet es sich an Personen, die bereits eine gewisse Erfahrung im Program­mieren mit mindestens einer höheren Programmiersprache haben. Dies kann auch FORTRAN oder COBOL sein. Für diesen Personenkreis sollte die nachfolgende Ausarbeitung sowohl als Thxtbuch für Programmierkurse (auch wenn diese mangels eines verfügbaren Übersetzers vielerorts noch als lrockenkurs abgehalten werden müssen) als auch zum Selbststudium geeignet sein. Die Kenntnis einer neueren höheren Programmiersprache, wie etwa PASCAL, ist zwar nicht Voraussetzung für das Lesen, doch erleichtert sie den Einstieg.

Ada entstand aufgrund einer Initilltive des Hlrteüligungsministeriums der USA, das seine Ausgaben für Soft­ware in den Griff zu bekommen versuchte (1975 etwa 3,5 Milliarden $). Ein großer Teil dieser Ausgaben ging in den Bereich der sogenannten eingebetteten Systeme (z.B. Bordcomputer eines Flugzeugs), der sich durch Ef­fizienzvorgaben (Speicherplatz, Laufzeit), Hardwarenähe (z.B. durch Einsatz nichtstandardmäßiger Ein-/Aus­gabe) und Notwendigkeit von Konzepten für RealzeitanforderungenlNebenläufigkeit auszeichnet. Insbeson­dere durch Unterstützung der Zuverlässigkeit, Portabilität und Wartungsfreundlichkeit von Software sollte eine Reduktion der Kosten erzielt werden. Das Ergebnis der Initiative ist eine universelle höhere Program­miersprache, die sich für einen breiten Einsatz eignet, nicht nur auf dem Gebiet der eingebetteten Systeme.

Ada bietet für Kontroll- und Datenstrukturen vieljäUige Konstrukte an. Ada eignet sich wegen des Paketkon­zepts, der Hilfsmittel zur getrennten Übersetzung und der generi~chen Programmeinheiten insbesondere auch für das Programmieren "großer" Probleme, die von einer Programmierermannschaft und nicht von einem ein­zelnen Programmierer bearbeitet werden. Hier ist die Beachtung der Erkenntnisse des Software-Engineering, insbesondere bezüglich der Programmiermethodik, unerläßlich. Wir haben deshalb in Kapitell die wichtigsten Grundbegriffe aus diesem Bereich zusammengetragen. Aber auch während der restlichen Ausarbeitung wurde stets versucht, die methodische Sicht bei der Erörterung der Ada-Sprachelemente zu betonen.

Ada ist kein Forschungsergebnis, sondern das Resultat eines Entwicklungsprozesses, der öffentlich und unter großer Anteilnahme der Öffentlichkeit (aus Industrie, Verwaltung und Universitäten) ablief. Insoweit faßt Ada eher bisher Bekanntes zusammen und repräsentiert den Stand der Technik auf dem Programmiersprachensek­tor, als neue, bahnbrechende Wege zu gehen. Aus dieser Öffentlichkeit ist bereits jetzt, vor dem Großeinsatz dieser Sprache, ein Erfolg der Ada-Unternehmung erkenntlich: Mit der Diskussion über Ada wurde auch stets über Konzepte in Programmiersprachen diskutiert und damit zur Verbreitung und Erweiterung von Kenntnis über Programmiersprachen beigetragen.

Bücher über Programmierung fallen hauptsächlich in zwei Kategorien. Die eine Kategorie enthält Ein­führungen in die Programmierung, heute meist mit dem Zusatz methodisch oder systematisch. Um dieser Ziel­setzung gerecht zu werden, sollten hierbei alle Gesichtspunkte des Programmierens angesprochen werden, ins­besondere die Verifikation, die Effizienzanalyse und die Programmiermethodik. Eine solche Darstellung ist jedoch einerseits weitgehend programmiersprachenunabhängig und andererseits nur für "kleine" Probleme machbar. Man sollte sich dabei einer einfachen aber sauberen Programmiersprache bedienen, wie etwa PAS­CAL oder ELAN. Ein Buch über Ada muß schon wegen des Umfangs der Sprache, die ja auch weniger für die Ausbildung als für den Einsatz in großem Maßstab erfunden wurde, in die zweite Kategorie von Büchern fallen, nämlich in die der Einführungen in eine bestimmte Programmiersprache. Hier darf dann auch einige Kenntnis über die Programmierung vorausgesetzt werden. Wir haben bei der Erläuterung von Ada versucht, die sinnvolle und methodische Verwendung dieser Sprachkonstrukte in den Vordergrund zu rücken und nicht nur die Details zu sehen, wie das eine oder andere hinzuschreiben ist.

Jede Programmiersprache, insbesondere aber eine so umfangreiche wie Ada, ist stark rekursiv. Man weiß nicht, wo mit der Erläuterung begonnen werden soll, da die einzelnen Konstrukte direkt oder indirekt gegen­seitig voneinander abhängen. Dadurch wird in vielen Fallen Wiederholung erzwungen. Wir haben versucht, aus dieser Not eine Thgend zu machen. So wurden die komplizierten Sprachelemente im allgemeinen stets zuerst in einfacher Form erläutert, die allgemeine Verwendung und das dahinterstehende Konzept wurde später nach­getragen. Eine Einführung in eine Programmiersprache sollte sich in ihrem Aufbau nicht am Sprachreport

Page 6: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

VI

orientieren. Bei diesem ist es eine Zielsetzung, diese obige Rekursivität sichtbar werden zu lassen, während es hier aus didaktischen Gründen Zielsetzung ist, diese zunächst zu verbergen.

Ein einführendes Buch über eine Programmiersprache ist kein geeigneter Platz, sich kritisch mit einer Programmiersprache auseinanderzusetzen. Wir haben deshalb an einigen Stellen bewußt auf Randbemerkun­gen verzichtet. Die Akzeptanz einer Programmiersprache hängt nic)lt von ihren "technischen" Eigenschaften ab, sondern auch von dem Vorhandensein Jlers/ijndlicher Einführungen und Nachschlagewerke. Wir hoffen, zu diesem Gesichtspunkt der Pragmatik von Ada einen kleinen Beitrag geleistet zu haben.

Nun eine Übersicht: Kapitell beschäftigt sich nach einer kurzen Darstellung der Entwicklungsgeschichte von Ada mit einigen Grundbegriffen der Softwaretechnik.

In Kapitel 2 wird die Notation der Syntax erläutert, und die Grundsymbole der Sprache werden aufgeführt. Kapitel 3 ist den Elementen des Programmierens im Kleinen gewidmet und dabei hauptsächlich den Struk­

turen zur Ablaufkontrolle. Dazu zählen insbesondere die schon klassischen Kontrollstrukturen if-, case-, while- und for-Anweisung, die Funktionen und Prozeduren und die Sprünge. Nicht klassisch ist hier lediglich die Ansnahmebehandlung. Datenstrukturen werden hier nur andeutungsweise angesprochen, um kleine Pro­gramme oder Programmstücke formulieren zu können. Die Thxtein-/ausgabe wird jedoch bereits hier abgehan­delt.

Kapitel 4 erläutert die Datenstrukturierung, die in neuen Programmiersprachen umfangreicher ist als die Ablaufstrukturierung. Hierzu zählen die Aufzählungstypen, die Felder und Verbunde, die in Ada in speziellen Formen als Felder mit unspezifizierten Grenzen und Verbunde mit Diskriminanten auftreten können. Erst dann folgt das 1}pkonzept mit der Erklärung der Begriffe 1}p, Untertyp, abgeleiteter 1}p. Den numerischen 1}pen, nämlich den ganzzahligen und den reellen Datentypen, ist hier in Ada mehr Aufmerksamkeit geschenkt worden als in anderen Programmiersprachen insoweit, als sich der Programmierer (über die Definition neuer numeri­scher1}pen) unabhängig von den vordefinierten numerischen 1}pen machen kann. Ein ausführlicher Abschnitt über Zeiger und Haldenobjekte und ihre Verwendung in der Listenverarbeitung schließt das Kapitel ab.

Während Kapitel 3 und 4 eher die konventionellen Sprachelemente enthält, die hauptsächlich dem Programmieren im Kleinen, d.h. der Implementierung einzelner Moduln dienen, bietet das Kapitel 5, teilweise auch 6, Elemente für das Programmieren im Großen, die während des Entwurfs bzw. während der Wartung gro­ßer Software-Systeme benötigt werden. Hierzu zählen hauptsächlich das Paketkonzept, das Konzept der Generizität, der privaten 1}pen und die Hilfsmittel zur getrennten Übersetzung, nämlich Bibliothekseinheiten und Untereinheiten. Da sich hinter letzterem mehr verbirgt als nur Hilfen für die textuelle Auf teilung des Programms, haben wir in einem sehr ausführlichen Abschnitt versucht, den Bezug zu Modulkonzepten heraus­zuarbeiten.

Kapitel 6 dient der Erklärung der nebenläufigen Programmierung. Nach Einführung der hierfür vor­gesehenen Programmeinheit (der Thsk), der automatischen Aktivierung und der normalen Beendigung, folgt das Rendezvous-Konzept als Konstrukt zur Synchronisation und zum gegenseitigen Ausschluß. Der nächste Abschnitt widmet sich der nichtdeterministischen Auswahl zwischen verschiedenen Interaktionswünschen auf der Seite der akzeptierenden Thsk. Verzögerung, Unterbrechung, Ausnahmebehandlung, normale und anomale Thskbeendigung schließen sich an, sowie Ada-Spezielles wie Thsktypen und Entryfamilien. Ein größeres Beispiel schließt das Kapitel ab.

Das letzte Kapitel erläutert die Beziehungen zur Umwelt. Hierzu zählt die Ein-/Ausgabe mit ihrer Un­terscheidung zwischen internen und externen Dateien, die neben Ein-I Ausgaberoutinen auch die Dateiverwal­tung mit enthält. Schließlich gibt es noch vielfältige Möglichkeiten der Angabe von Darstellungen auf der Basis­maschine.

Jedes Kapitel endet mit Übungsaufgaben, die der Leser zur Vertiefung seiner Ada-Kenntnisse benutzen kann. Ein umfangreiches Literaturverzeichnis soll Hinweise zum weiteren Studium geben. Die vordefinierten Pragmas und die vordefinierten Ausnahmen sind in Form zweier Anhänge am Ende zusammengestellt. Die vor­definierten Attnbute werden in den entsprechenden Buchabschnitten erläutert. Dem leichten Nachschlagen schließlich dient ein Anhang, der die gesamte Grammatik enthält, sowie ein ausführliches Register.

Ich möchte dieses Vorwort mit einer Danksagung an alle diejenigen abschließen, die zu der Gestalt dieses Buches in seiner jetzigen Form durch Kritik, Anregungen und Hilfe beigetragen haben. Hier sind Herr Dr. H. Hummel und Dr. Plödereder, München, sowie Herr Kollege J. Perl Getzt Main2;) zu nennen. Zu besonderem Dank wegen sehr intensiver Mitarbeit bin ich jedoch Herrn Kollegen J. Ebert und den Herren Dr. G. Engels und Dr. W. Schäfer (alle früher in Osnabrück), sowie Herrn Dr. R. Gall, Erlangen, verpfliChtet. Schließlich gilt mein Dank auch Frau K. Guss für die große Geduld und Sorgfalt beim Schreiben dieses Manuskripts, sowie dem Vieweg-Verlag für das Anfertigen der Zeichnungen. Für Fehler und Mängel ist der Autor allein verantwortlich.

Page 7: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

VII

Es kann auch kein Compiler dafür zur Rechenschaft gewgen werden, die (hoffentlich nicht zu zahlreichen) Syn­taxfehler nicht erkannt zu haben.

Osnabrück, im Juni 1982 Manfred Nagl

Vorwort zur 2. Auflage

Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges geiJnderl: Ada ist seit 1983 standar­disiert worden, Ada-Veranstaltungen finden heute nicht mehr nur als 'frockenkurse statt, weil in den letzten Jahren effizientere und preiswertere Ada-Compiler verfügbar wurden, in der Industrie gibt es mehr und mehr Software-Projekte, die in Ada implementiert werden, und die Initiativen und Aktivitäten um Ada herum, die man in den USA als 'Ada Culture' bezeichnet, haben sich verstärkt und ausgeweitet (Validierungsprozedur, Ada-Software-Entwicklungsumgebung, STARS-Projekt usw.). Ferner, was nicht gering geschätzt werden darf, hat ein Arbeitskreis eine deutsche Ada-Terminologie erarbeitet, die in dieser 2. Auflage übernommen wurde.

Ada ist für die Erstellung großer Softwaresysteme gedacht, wo die Erkenntnisse, Konzepte und Methoden der Softwaretechnik eingesetzt werden sollten. Ada bietet hierfür vielerlei Konstrukte an. Dies betrifft ins­besondere die Konstrukte für das Programmieren im Großen, die insbesondere die Wartung vereinfachen, sich aber ebenfalls auf die lebenszyklusbegleitenden Bereiche Qualitätssicherung, Projektmanagement und Dokumentation günstig auswirken. Man kann Ada deshalb ohne Übertreibung als die Softwaretechnik-Program­miersprache bezeichnen!

Ein Buch über Ada sollte diesen Zusammenhang deutlich werden lassen. Nach Kenntnis des Autors war die 1. Auflage dieses Buches das erste Buch, das diesen Zusammenhang herausgearbeitet hat. Diese Verflechtung mit der Softwaretechnik wurde in der 2. Auflage noch einmal beträchtlich verstärkt (insbesondere durch Kap. 1 und Kap. 5). Erfahrungen des Autors mit Ada-Vorlesungen und Industrieseminaren bestätigen, daß bei diesem didaktischen Ansatz der gedankliche Hintergrund der Ada-Konzepte vermittelt werden kann, d.h. sich die Er­örterung nicht nur auf die Aufzählung der Sprach konstrukte beschränkt.

Ada gehört zur Familie der imperativen und prozeduralen Programmiersprachen und liegt damit auf der Linie der "klassischen" Programmiersprachen (FORTRAN - Algol 60 - PLII - Algol 68 - Pascal). In Ada sind Ideen einer Reihe anderer neuerer Programmiersprachen eingeflossen (Modula, Alphard, CLU, US, Mesa etc.). Diese Sprachlinie zeichnet sich durch das Bestreben nach Sicherheit (durch viele Compilezeit-Prüfungen) und Effizienz (insbesondere für den erzeugten Code) aus. Diese Ausrichtung ist ganz im Sinne der oben an­gedeuteten Verflechtung mit der Softwaretechnik.

Trotz dieser eher konservativen Ausrichtung von Ada hat der Sprachvorschlag nicht nur Zustimmung hervor­gerufen (vgl. Literatur in Abschnitt 3). Dabei richtet sich die Kritik weniger gegen den Ansatz der Sprache an sich, sondern eher gegen einzelne Sprachkonstrukte, insbesondere jedoch gegen den Gesamtumfang der Sprache. Auf diese Kritik wird in der folgenden Darstellung nicht im einzelnen eingegangen. Obwohl sich der Autor in etlichen Punkten dieser Kritik anschließen kann, so teilt er doch die Überzeugung, daß Ada für den professionellen Bereich das beste ist, was an Programmiersprachen z.Zt. zur Verfügung steht und für den nächsten überschaubaren Zeitraum zur Verfügung stehen wird.

Neben dieser eher konservativen Ausrichtung von Ada haben in den letzten Jahren einige Program­miersprachen in der wissenschaftlichen Diskussion Bedeutung erlangt oder eine Renaissance erfahren, die völlig anderen Softwareerstellungs-Paradigmen folgen, und die wir in diesem Buch nicht erläutern. Es sind dies, um nur die wichtigsten aufzuzählen: Programmieren ist Logik (logiSche Programmiersprachen), Programmieren ist Erstellen loser Einheiten mit Vererbung und Botschaftsaustausch (objektorientierte Sprachen), Program­mieren ist Zusammenbau. von Funktionen (funktionale Sprachen), Programmieren ist Spezifizieren (Spezifikationssprachen, 'fransformationssprachen), Programmieren ist Zusammenstellen von Fakten und Regeln (KI-Sprachen) u.s.w. Diese Paradigmen können eines Thges für die tägliche praktische Arbeit des Soft­ware-Ingenieurs große Bedeutung erlangen. Dies ist jedoch eher für einen längerfristigen Zeitpunkt der Fall.

Eine verständliche AdtI-EinJührung zu schreiben, ist nicht einfach. Dies hat zum einen mit der Verflechtung mit der Softwaretechnik zu tun, da nicht bei jedem Leser Basiswissen über diesen Bereich vorausgesetzt werden kann. Zum anderen redet man bei der Erläuterung von Ada, wegen des zusammenfassenden Charakters dieser Sprache, implizit auch immer über Konzepte von (klassischen) Programmiersprachen. Ein Blick in das In-

Page 8: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

VIII

haltsverzeichnis so manchen Buches über Programmiersprachenkonzepte (vgl. Uteraturabschnitt 4) bestätigt dies. Dort fmdet man nämlich oft die Kapiteleinteilung des Ada-Sprachreports wieder. Letztlich erfordert das bereits im Vorwort der 1. Auflage diskutierte Rekursivitätsproblem von Programmiersprachen und der Umfang von Ada eine sorgfältige didaktische Ausarbeitung. Jede Ada-Einführung, die alle diese Probleme verschleiert und den Eindruck erweckt, als sei Ada eine Sprache für Anfänger oder im Handumdrehen zu vermitteln, ist die Zeit nicht wert, mit der man sich mit ihr beschäftigt.

Die Verflechtung mit der Softwaretechnik bzw. die Diskussion über Programmiersprachenkonzepte bereichert an sich die Denkwelt jedes Lesers und hat damit Auswirkungen auf seine tägliche Arbeit auch dann, wenn er in der nächsten Zeit keine Chance hat, Ada für ein konkretes Projekt einzusetzen. Dies gilt übrigens auch für die oben angedeuteten anderen Softwareerstellungs-Paradigmen. Eine Beschäftigung mit diesen Paradigmen bringt nicht nur Bereicherung, da sie in andere Denkwelten einführt, sondern sie läßt auch die Kon­zepte von Ada in einem deutlicheren Ucht erscheinen.

Wenn für Ada als Programmiersprache Teilsprachenbil4ung verboten ist, d.h. jeder Compiler Ada voll "verstehen" können muß, so gilt dies nicht notwendigerweiseftlr die Lehre. So ist der Pascal-'Jeil von Ada allein durch Kap. 3 und 4 beschrieben, wobei noch einige Abschnitte wegfallen (etwa 3.9, 4.7 und 4.8) und einige sich vereinfachen. In diesem Sinne ist Ada auch für die Anfängerausbildung einsetzbar. Ist man nur an sequentieller Programmierung interessiert (z.B. übliche mathematisch-technische Anwendungen, betriebswirtschaftliche Anwendungen, Systemprogrammierung ohne Nebenläufigkeit), so kommt noch Kap. 5 hinzu. Für numerische Anwendungen ist darüber hinaus ein detailliertes Studium der Abschnitte 3.7 und 3.8 nötig. Nur wenn man sich mit nebenläufiger und hardwarenaher Programmierung gleichzeitig beschäftigt, ist ein Studium der gesamten Sprache (bis auf die numerischen Datentypen) nötig.

Ich möchte dieses Vorwort mit einem Dank an alle diejenigen abschließen, die zu der 2. Auflage des Buches beigetragen haben. Hier ist zunächst Herr Dr. C. Lewerentz zu nennen, der das Textsystem geschrieben hat, mit dem dieses Manuskript neu erstellt wurde, und der bei Auftreten von Schwierigkeiten seines Pilotsystems nie die Geduld mit den Bedienern und seinem Produkt verlor. Insbesondere möchte ich mich bei Frau G. Holmann, Os­nabrück, bedanken, die trotz des Umfangs des Manuskripts, der Schwierigkeiten mit dem Thxtsystem und der mehrmaligen Verbesserungen stets mit Engagement, Sorgfalt und unglaublicher Geduld dieses Manuskript nicht nur geschrieben, sondern auch in eine druckreife Form gebracht hat. Schließlich bin ich Herrn Dr. Jackel, Koblenz, und Herrn Heimann, insbesondere aber den Herren A. Schürr und B. Westfechtel für das kritische Durcharbeiten des Manuskripts und der vielen sich daraus ergebenden Verbesserungsvorschläge dankbar.

Aachen, im September 1987 Manfred Nagl

Vorwort zur 3. Auflage

Der Inhalt der dritten Auflage ist nahezu identisch mit dem der zweiten. Es wurde lediglich das Uteraturver­zeichnis aktualisiert. Wie bereits im Vorwort zur zweiten Auflage festgestellt, steht eine breite Anwendung von Ada in der Industrie bzw. in Hochschulen zur Zeit noch aus. Das Buch hat somit, neben einer Grundlage der Schulung für Ada-Programmierer, seine Bedeutung in erster Linie darin, die Konzepte moderner klassischer Sprachen vorzuführen, die in Ada sauberer als sonst definiert sind. Der Titel des Buches wurde geändert, um die Verflechtung mit der Softwaretechnik zum Ausdruck zu bringen. Dies war bereits ein Anliegen der ersten Auf­lage und wurde durch die Überarbeitung der zweiten Auflage noch deutlicher. Für das in Kap. 5 angesprochene Modulkonzept ist inzwischen eine umfangreiche Ausarbeitung entstanden 15. Na 90/. Da diese größtenteils pro­grammiersprachenunabhängig ist, wurde darauf verzichtet, Kap. 5 auszuweiten. Die sich abzeichnenden Ände­rungen von Ada im Zusammenhang mit dem 9X-Standard werden in der nächsten Auflage berücksichtigt.

Aachen, im Oktober 1990 Manfred Nagl

Page 9: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

IX

INHALT

1. ADA UND SOFfWARETECHNIK 1

1.1 Ziele und Geschichte der Entwicklung von Ada 1 1.2 Programme, Programmiersprachen und Maschinen 4 1.3 Softwaretechnik und Phasen der Software-Entwicklung 6 1.4 Gütekriterien von Programmsystemen/Ziele der Software-Entwicklung 10 1.5 Übliche Hilfsmittel der Software-Erstellung/Ada-Validierung 13 1.6 Ada-Programmentwicklungs-Umgebung 17 1.7 Das STARS-Projekt 20 Aufgaben zu Kap. 1 24

2. GRUNDBEGRIFFE 25

2.1 Syntaxnotation, Zeichen und lexikalische Einheiten 25 2.2 Bezeichner, Zahlen und Zeichenketten 28 2.3 Quellprogramm-Notation, Pragmas 32 Aufgaben zu Kap. 2 34

3. OBJEKTE FÜR DAS PROGRAMMIEREN IM KLEINEN 36

3.1 Einfache Objekt- und '!ypdeklarationen 37 3.2 Ausdrücke, Wertzuweisungen und Anweisungsfolgen 41 3.3 Bedingte Anweisungen, Auswahlanweisungen (if, case) 44 3.4 Zählschleifen, Schleifen mit Bedingungen (for, while) 47 3.5 Ineinanderschachtelung von Kontrollstrukturen und saubere Sprünge 51 3.6 Blockstruktur, Gültigkeit, Sichtbarkeit 58 3.7 Funktionen und Operatoren 63 3.8 Prozeduren 71 3.9 Ausnahmebehandlung bei Blöcken und Prozeduren 79 3.10 Text-Ein-/Ausgabe 86 Aufgaben zu Kap. 3 98

4. DATENSTRUKTURIERUNG DETAIlliERT 102

4.1 Basisdatentypen BOOLEAN, CHARACTER und allgemeine Aufzählungstypen 103

4.2 Feldtypen mit spezifizierten Grenzen 108 4.3 Feldtypen mit unspezifizierten Grenzen und der Datentyp STRING 116 4.4 Einfache Verbunde 122 4.5 Verbunde mit Diskriminanten, variante Verbunde 127 4.6 Das '!ypkonzept von Ada, Untertypen, abgeleitete '!ypen 135 4.7 Ganzzahlige Datentypen 145 4.8 '!ypen numerisch-reeller Zahlen: Gleitpunkttypen, Festpunkttypen 149

Page 10: Manfred Nagl - Springer978-3-663-14249-2/1.pdf · Osnabrück, im Juni 1982 Manfred Nagl Vorwort zur 2. Auflage Seit dem Erscheinen der ersten Auflage dieses Buches hat sich einiges

x

4.9 Ausdrücke 158 4.10 Zeigertypen und Haldenobjekte, Ilstenverarbeitung 163 Aufgaben zu Kap. 4 177

5. PROGRAMMIEREN IM GROSSEN 182

5.1 Generische Unterprogramme und der generische Mechanismus 183 5.2 Pakete, die Ada-Notation für Moduln 189 5.3 Programmstruktur, Gültigkeit, Sichtbarkeit 200 5.4 Getrennte Übersetzung 206 5.5 Ein Modulkonzept und seine Umsetzung in Ada 218 5.6 Ein Beispiel 240 Aufgaben zu Kap. 5 247

6. NEBENLÄUFIGE PROGRAMM SYSTEME 249

6.1 Prozeßeinheiten als Programmeinheiten für nebenläufige Programmierung 250

6.2 Das Rendezvous-Konzept 256 6.3 Nichtdeterministische Auswahl zwischen Alternativen 261 6.4 Verzögerung, Unterbrechung, Ausnahmebehandlung, Beendigung 268 6.5 Prozeßtypen, Entry-Familien, Implementierungsaspekte 275 6.6 Ein Beispiel 279 Aufgaben zu Kap. 6 287

7. EIN-/AUSGABE UND BASISMASCHINENABHÄNGIGKEIT 289

7.1 Ein-/Ausgabe und Dateiverwaltung 290 7.2 Angaben zur Darstellung auf der Basismaschine 301 Aufgaben zu Kap. 7 311

UTER1XI1JR 312

ANHÄNGE 318

Ada-Wortsymbole 318 Vordefinierte Pragmas 319 In der Sprache vordefinierte Ausnahmen u. zugehörige Laufzeitprüfungen 321 Ada-Grammatik 323

STICHWORTVERZEICHNIS 331