Beschreibung
Eine Programmiersprache ist ein Notationssystem, in dem Anweisungen für eine Rechenanlage formuliert werden können. Sie ist aber gleichermaßen auch ein Werkzeug zur Beschreibung von Problemen und deren Lösungswegen. Deshalb hat eine neue Programmiersprache immer dann ihre Berechtigung, wenn sie im Vergleich zum Bestehenden neue, mächtigere Konzepte und adäquatere Abstraktionsmittel anbietet, die das Lösen von Problemen erleichtern und es erlauben, Lösungen verständlicher darzustellen. In den nächsten Kapiteln werden wir die Elemente der Programmiersprache Modula-2 (MODUlar programming LAnguage; im folgenden werden wir Modula synonym mit Modula-2 verwenden) im einzelnen vorstellen und den Umgang mit ihnen an vielen Beispielen vorführen. Im folgenden aber sei für den jenigen, der bereits Erfahrung mit Programmieren hat, dargelegt, was Modula-2 gegenüber Pascal beispielsweise an Neuem zu bieten hat. Das wichtigste neue Abstraktionsmittel der Programmiersprache Modula-2 ist ihr Modulkonzept. Mit ihm lassen sich Programme in überschaubare und voneinander weitgehend unabhängige Teile - in sogenannte Moduln - gliedern, deren Aufspaltung in Definitions- und Implementationsteil (Definitionsmodul und Implementationsmodul) ein separates Übersetzen ermöglicht. Diese Moduln können in einer Programmbi bliothek abgelegt werden. In ihrem Definitionsteil wird von den Details der Real isierung der Modulfunktion abstrahiert. Er beschreibt, was das Modul leistet, nicht wie.
Autorenportrait
Inhaltsangabe1. Einleitung.- I: Grundlagen.- 2. Repräsentation von Modula Programmen.- 2.1 Programm- Moduln.- 2.2 Zeichensatz und Schlüsselsymbole.- 2.3 Darstellung der Syntax.- 2.4 Beispiel einer Programmausfürung.- 2.5 Aufgaben.- 3. Namen und Konstanten.- 3.1 Namen.- 3.2 Konstantenvereinbarung.- 3.3 Aufgaben.- 4. Elementare Datentypen.- 4.1 Typdeklaration.- 4.2 Wahrheitswerte.- 4.3 Zeichen.- 4.4 Ganze Zahlen und Kardinalzahlen.- 4.5 Real -Zahlen.- 4.6 Mengen von Kardinalzahlen.- 4.7 Aufzählungs- und Unterbereichstypen.- 4.8 Typenbindung und Typkompatibilität.- 4.9 Aufgaben.- 5. Anweisungen und Kontrollstrukturen.- 5.1 Ausdrücke und Anweisungen.- 5.2 Kontroll-Strukturen.- 5.2.1 Wiederholungsanweisungen.- 5.2.2 Bedingte Anweisungen.- 5.2.3 Fallunterscheidungen.- 5.3 Aufgaben.- 6. Prozeduren und Funktionen.- 6.1 Unterprogramme.- 6.2 Aufruf von Unterprogrammen.- 6.3 Lokalität.- 6.4 Rekursion.- 6.5 Standardunterprogramme.- 6.6 Aufgaben.- 7. Prozedurtypen.- 7.1 Vereinbarung von Prozedurtypen.- 7.2 Aufgaben.- 8. Strukturierte Datentypen.- 8.1 Felder.- 8.2 Zeichenketten.- 8.3 Verbunde.- 8.4 Variante Verbunde.- 8.5 Mengen.- 8.6 Aufgaben.- 9. Dynamische Datentypen.- 9.1 Zeiger.- 9.2 Ein Beispiel.- 9.3 Aufgaben.- II: Modulare Programmierung.- 10. Moduln.- 10.1 Lokale Moduln.- 10.2 Externe Moduln.- 10.3 Funktionsmoduln und Datenabstraktionen.- 10.4 Programmentwurf und Modularisierung.- 11. Basismoduln.- 11.1 Modul System.- 11.1.1 SYSTEM unter UNIX.- 11.1.2 SYSTEM unter MS-DOS.- 11.1.3 SYSTEM unter TOS.- 11.2 Modul UnixClock.- 11.3 Eine Anwendung unter MS-DOS.- 12. Bibliotheksmoduln.- 12.1 SystemTypes.- 12.2 Streams.- 12.3 StdIO.- 12.4 Files.- 12.5 InOut.- 12. 6 RealIO.- 12.7 ReallnOut.- 12.8 MathLib.- 12.9 LongCalcs.- 12.10 Storage.- 12.11 Loader.- 12.12 Standard-Bibliotheksmoduln.- 13. Datentstrukturen und ihre Algorithmen.- 13.1 Listen.- 13.2 Schlangen.- 13.3 Stapel.- 13.4 Ein Bibliotheksmodul für Listen.- 13.5 Bäume.- III: Coroutinen und Prozesse.- 14. Coroutinen.- 14.1 Nebenläufigkeit.- 14.2 Coroutinen in Modula-2.- 14.3 Beispiele für Coroutinen.- 15. Prozesse.- 15.1 Prozeß-Systeme.- 15.2 Zentrales Dispatchen.- 15.3 Signale.- 15.4 Kritische Abschnitte.- 15.5 Botschaften.- 16. Interrupts, Prioritäten, Monitore.- 16.1 Feste Adressen.- 16.2 Interrupts.- 16.3 Prioritäten.- 16.4 Monitore.- 16.5 Beispiele für Geräte-Prozesse.- 17. Ausblick.- Implementationsmoduln.- Die Syntax von Modula-2.- Modula-2 Syntaxdiagramme.- Compiler-Fehlermeldungen.- Reservierte Wörter und Standardnamen.- Standardprozeduren.- ASCII-Zeichen.- Modulverzeichnis.- Stichwortverzeichnis.