Arbeitsspeicher des Rechners Anweisung Anweisung 1 2 3 Anweisung ... Anweisung Prozessor des Rechners Anweisung Anweisung Bild 1-1 Der Prozessor bearbeitet eine Anweisung des Programms nach der anderen nur 1 Eingang Anweisung nur 1 Ausgang Anweisung ein zweiter Ausgang bzw. Eingang ist nicht möglich Anweisung Bild 1-2 single entry und single exit bei der Sequenz Bild 1-3 Sinnbild für Verarbeitungsschritt Blockname Bild 1-4 Sinnbild für Block Name des Hauptprogramms Lokaler Verarbeitungsschritt 1 Unterprogramm_A Lokaler Verarbeitungsschritt 2 Lokaler Verarbeitungsschritt 3 Bild 1-5 Struktogramm für ein Hauptprogramm Hauptprogramm einlesen verarbeiten ausgeben Bild 1-6 Hierarchiediagramm eines Programmes einlesen Daten von Tastatur einlesen Daten auf Platte speichern wird in Schritt 2 verfeinert wird in Schritt 2 verfeinert solange keine 0 gelesen wird Bild 1-7 Schrittweise Verfeinerung: Schritt 1 einlesen Verfeinerung von „Daten von Tastatur einlesen“ Zur Eingabe auffordern Zahl einlesen Verfeinerung von „Daten auf Platte speichern“ solange keine 0 gelesen wird Bild 1-8 Schrittweise Verfeinerung: Schritt 2 V1 V2 Bild 1-9 Nassi-Shneiderman-Diagramm für die Sequenz Boolescher Ausdruck TRUE V1 FALSE V2 Bild 1-10 Struktogramm für die einfache Alternative Bedingung TRUE V1 Bild 1-11 Struktogramm für die bedingte Verarbeitung c1 Arithmetischer Ausdruck c2 .... V1 V2 cn-1 Vn-1 cn Vn Bild 1-12 Struktogramm für die mehrfache Alternative Solange Bedingung V Bild 1-13 Struktogramm der Wiederholung mit vorausgehender Bedingungsprüfung V Solange Bedingung TRUE Bild 1-14 Struktogramm der Wiederholung mit nachfolgender Bedingungsprüfung V Bild 1-15 Struktogramm der Wiederholung ohne Bedingungsprüfung BREAK Bild 1-16 Abbruchanweisung V1 Bedingung TRUE FALSE BREAK V2 Bild 1-17 Struktogramm einer Schleife ohne Wiederholungsprüfung mit Abbruchbedingung Euklid’scherAlgorithmus Initialisiere x und y Solange x ungleich y x kleiner als y TRUE FALSE y=y-x x=x-y x ist größter gemeinsamer Teiler Bild 1-18 Struktogramm des Euklid’schen Algorithmus Wort |||| |||||| |||| Zwischenraum Bild 1-19 Erkennen von Wörtern ablauffähiges Programm main() SUB1() SUB2() . . . selbst geschriebene Funktionen SUBn() Bibliotheksfunktionen / Laufzeitsystem globale Variablen Stack Heap Bild 1-20 Adressraum eines ablauffähigen Programms Quellprogramm MAIN.C, SUB1.C und SUB2.C auf Platte MAIN.C SUB1.C Benutzte IncludeDateien SUB2.C Compiler Laufzeitsystem MAIN.OBJ, SUB1.OBJ und SUB2.OBJ auf Platte Objectcode MAIN.OBJ SUB1.OBJ SUB2.OBJ Aufgerufene LibraryFunktionen Fehlerfunktionen, Speicherverwaltungsroutinen, etc. Linker BEISPIEL.EXE auf Platte BEISPIEL.EXE Ablauffähiger Objectcode (ausführbares Programm) Lader BEISPIEL.EXE im Arbeitsspeicher BEISPIEL.EXE Ausführbares Programm im Arbeitsspeicher Bild 1-21 Ablauf und Erzeugnisse beim Kompilieren, Binden und Laden Bild 1-22 Variable im Arbeitsspeicher INT_MIN INT_MAX .... -1 0 1 2 .... Bereich des Typs int Bild 1-23 int-Zahlen FORTRAN BASIC BLISS BCPL ALGOL60 ALGOL68 SIMULA COBOL Pascal PL/I C Smalltalk Concurrent Pascal Modula Ada C++ Java C# Bild 1-24 C in der Verwandtschaftstafel einiger höherer Programmiersprachen Sicht sichtbar Abstraktionsschicht verborgen Detailschicht Bild 1-25 Durch Abstraktion wird Unwesentliches verborgen Sicht sichtbar Ausdrücke verborgen Maschinenregister Abstraktionsschicht Detailschicht Bild 1-26 Verbergen der Maschinenregister Sicht Konstrukte der Strukturierten Programmierung sichtbar verborgen GOTOs und Sprungmarken Abstraktionsschicht Detailschicht Bild 1-27 Verbergen der GOTOs und Sprungmarken Sichtbarer Teil des ADT: Aufrufschnittstellen der Operationen Unsichtbarer Teil des ADT: Repräsentation des Typs Implementierung der Operationen Bild 1-28 Verbergen der Implementierung eines abstrakten Datentyps Sicht sichtbar verborgen Klasse als Datentyp Aufrufschnittstelle der Methoden Abstraktionsschicht nach außen sichtbar Daten und Anweisungen sind verborgen Detailschicht Bild 1-29 Verbergen von Daten und Anweisungen