Bauinformatik 4. Semester Fachstudium - Pflichtmodul - Teil 1 Menkenhagen / Baeck 2.4.2007 Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 1 / 98 Inhaltsverzeichnis 1 Vorbemerkungen 1.1 Veranstaltungsstruktur . . . . . . . . . . . . . . . . . . . . . . 1.2 Online-Unterlagen . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Prüfungsleistungen . . . . . . . . . . . . . . . . . . . . . . . . 2 Einleitung 2.1 Dreimomentengleichung (Clapeyron) 2.2 Programmtechnische Umsetzung . . 2.2.1 Problembeschreibung . . . . 2.2.2 Problemlösung . . . . . . . . 3 Hardware 3.1 Hardwarearchitektur . . . . . . . . 3.1.1 von-Neumann Architektur 3.1.2 Restaurant-Analogon . . . 3.2 IBM-PC, der Ur-PC . . . . . . . . . 3.3 Mikroprozessoren . . . . . . . . . . 3.4 Eingabemedien . . . . . . . . . . . 3.4.1 Lochkartenstanzer . . . . . 3.4.2 Die Tastatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 8 . . . . 9 11 12 12 12 . . . . . . . . 13 13 13 14 16 18 19 19 20 Bauinformatik - I 2 / 98 . . . . . . . . . . . . 21 22 23 24 24 25 26 27 30 30 31 34 4 286-386-Prozessor 4.1 Das legendäre Hello World als 16-Bit-Assembler-Programm 4.2 Register der 286-Architektur . . . . . . . . . . . . . . . . . . 4.3 Register der 386-Architektur . . . . . . . . . . . . . . . . . . 37 37 38 40 5 Zahlensysteme 5.1 Das binäre Zahlensysteme . . . . . . . . . . . . . . . . . . . . 5.2 Das oktale Zahlensysteme . . . . . . . . . . . . . . . . . . . . 5.3 Das hexadezimale Zahlensysteme . . . . . . . . . . . . . . . . 41 42 43 43 3.5 3.6 3.4.3 Touchscreen . . . . . . . . . 3.4.4 Mäuse . . . . . . . . . . . . . 3.4.5 Graphiktablett . . . . . . . . Speichermedien . . . . . . . . . . . . 3.5.1 Der Lochstreifen . . . . . . . 3.5.2 Die Lochkarte . . . . . . . . 3.5.3 Die Festplatte . . . . . . . . 3.5.4 Mobile Speichermedien . . . Einheiten . . . . . . . . . . . . . . . . 3.6.1 Speichereinheit . . . . . . . . 3.6.2 Speicherkapazitäten . . . . . 3.6.3 Performanceeinheit FLOPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bauinformatik - I 3 / 98 5.4 5.5 5.6 5.7 . . . . 43 44 45 46 6 Programmiersprachen 6.1 Generationen der Programmiersprachen . . . . . . . . . . . . 6.2 Sprachebenen . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 48 51 7 Algorithmen 7.1 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . 7.2 Beschreibung . . . . . . . . . . . . . . . . . . . . . . . 7.3 Beispiel: Euklidischer Algorithmus . . . . . . . . . . . 7.4 Programmablaufplan PAP . . . . . . . . . . . . . . . . 7.4.1 Beispiel: PAP - Algorithmus nach Euklid . . . 7.5 Nassi-Shneiderman-Diagramm, Struktogramme, NSD 7.5.1 Beispiel: NSD - Algorithmus nach Euklid . . . 7.6 UML - Unified-Modeling-Language . . . . . . . . . . . . . . . . . . . 52 52 53 54 56 57 59 63 64 VBA-Einführung 8.1 Elementare Datenobjekte . . . . . . . . . . . . . . . . . . . . 8.2 Elementare Datentypen . . . . . . . . . . . . . . . . . . . . . 66 66 67 8 Beliebige Zahlensysteme . . . Darstellung negativer Zahlen IEEE-Float-Darstellung . . . Zeichentabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bauinformatik - I 4 / 98 8.2.1 Implizite Deklaration . . . . . . . . . . . . . 8.2.2 Explizite statische Deklarationen . . . . . . 8.2.3 Explizite dynamische Deklarationen . . . . 8.2.4 Benutzerdefinierte Datentypen, Strukturen 8.3 Operatoren . . . . . . . . . . . . . . . . . . . . . . 8.4 Intrinsic Funktionen . . . . . . . . . . . . . . . . . . 8.5 Verzweigungen . . . . . . . . . . . . . . . . . . . . 8.6 Schleifen . . . . . . . . . . . . . . . . . . . . . . . . 8.7 Auswahl . . . . . . . . . . . . . . . . . . . . . . . . 8.8 Unterprogramme und Funktionen . . . . . . . . . . 8.9 Dateifunktionen . . . . . . . . . . . . . . . . . . . . 8.9.1 Open . . . . . . . . . . . . . . . . . . . . . 8.9.2 Close . . . . . . . . . . . . . . . . . . . . . 8.9.3 Eine Textdatei . . . . . . . . . . . . . . . . 8.9.4 Input . . . . . . . . . . . . . . . . . . . . . . 8.9.5 Write . . . . . . . . . . . . . . . . . . . . . 8.9.6 EOF . . . . . . . . . . . . . . . . . . . . . . 8.9.7 Line Input . . . . . . . . . . . . . . . . . . . 8.10 Klassenmodule . . . . . . . . . . . . . . . . . . . . 8.10.1 Instanzen . . . . . . . . . . . . . . . . . . . 8.10.2 Konstruktor . . . . . . . . . . . . . . . . . . 8.10.3 Destruktor . . . . . . . . . . . . . . . . . . Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 69 70 71 72 73 74 77 81 82 83 84 84 85 86 87 88 89 90 90 91 91 Bauinformatik - I 5 / 98 8.11 Listen und Containerklassen . . . . . . . . . . . 8.11.1 Die Add-Methode . . . . . . . . . . . . 8.11.2 Die Remove-Methode . . . . . . . . . . 8.11.3 Die Item-Methode . . . . . . . . . . . . 8.12 Beispiel Newton-Verfahren . . . . . . . . . . . . 8.12.1 Der Algorithmus, 1-dimensionaler Fall 8.12.2 Pseudo-Code . . . . . . . . . . . . . . . 8.12.3 Programmablaufplan . . . . . . . . . . 8.12.4 Nassi-Schneidermann-Diagramm . . . . Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 93 94 94 95 95 96 97 98 Bauinformatik - I 6 / 98 1. 1.1. Vorbemerkungen Veranstaltungsstruktur Veranstaltungsteile • Teil 1: 7 Wochen: Baeck/Menkenhagen (Baustatik) • Teil 2: 4 Wochen: Schröder (Mechanik) • Teil 3: 4 Wochen: Schnellenbach-Held (Massivbau) Weitere Hinweise • 1,5 SWS Vorlesung und 2,5 SWS Übungen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 7 / 98 1.2. Online-Unterlagen • Auf dem Info-Server (http://info.baustatik.uni-due.de) werden aktuelle Skriptteile zur Veranstaltung Teil 1 veröffentlicht. • Weitere Informationen werden im Forum zur Veranstaltung veröffentlicht. 1.3. Prüfungsleistungen • 1 Klausuren pro Veranstaltung. • 2 Hausarbeit pro Veranstaltungsteil. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 8 / 98 2. Einleitung • Nach einer kurzen Darstellung der Hardwareentwicklung und einem Überblick über die gängigen Einheiten für Speicher und Performance wird anhand des Beispiels der 3-Momentengleichung (Clapeyron) ein roter Faden durch eine angewandte Informatik gelegt. Wofür ist das gut? • Einführung in VBA. Grundlegende Sprachkonstrukte (Schleifen, Verzweigungen, Funktionen). • Beispiele: – Arbeiten mit Vektoren und Matrizen (Skalarprodukt, Matrixmultiplikation). – Dreieckszerlegung nach Cholesky und Lösung eines linearen Gleichungssystems unter optionaler Ausnutzung der Bandstruktur. • Objektorientierter Ansatz für Vektoren und Matrizen. Anwendung auf Clapeyron-Beispiel. • Arbeiten mit Listen und Bäumen. Listenbasierendes Datenmodell für Belastungen (Lastfälle, Lastdaten). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 9 / 98 • Rekursive Probleme: Quicksort, Backtracking (Weg des Läufers). • Textdateien als neutrale Programmschnittstellen. Datenaustausch zwischen verschiedenen Anwendungen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 10 / 98 2.1. Dreimomentengleichung (Clapeyron) Mit der Dreimomentengleichung werden unter folgender Einschränkungen die Stützmomente mehrfeldriger Durchlaufträger berechnet. Abbildung 1: Durchlaufträger mit 8 Feldern ⇒ Stützpunkte sind starr gelagert. ⇒ Auftretende Lasten wirken senkrecht zur Stabachse. ⇒ Die Biegesteifigkeit EI ist feldweise konstant. Für 2-feldrigen Abschnitt gilt (mit m ∈ [b, h] in Abbildung 1): Ml · ll + 2 · Mm · (ll + lr ) + Mr · lr = −Rl · ll − Lr · lr mit: Ml , Mm , Mr , l l , lr , Rl , Lr , (1) dem linken, mittleren und rechten Stützmoment der effektiven linken und rechten Feldweite dem linken und rechten Lastterm (rechte Seite) Die effektiven Feldweiten ll und lr sind bei unterschiedlichen Steifigkeiten auf ein Vergleichsträgheitsmoment Ic zu beziehen, d.h. ll = IIcl · ll,0 mit ll,0 , der realen Feldweite. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 11 / 98 2.2. 2.2.1. Programmtechnische Umsetzung Problembeschreibung ⇒ Zusammenstellung einer EXCEL-Tabelle zur Erfassung der Modellpa-. rameter (Feldlängen, Steifigkeiten, Belastungen). Wie sieht der Anwender das Problem? ⇒ Aufbau eines VBA-Datenmodells A · M = R . Anlegen der Koeffizientenmatrix A, Anlegen des Last- und Momentenvektors R und M , etc.) Wie sieht der Computer das Problem? 2.2.2. Problemlösung ⇒ Implementierung eines Gleichungslösers zur Berechnung der Stützmo-. mente. Ausgabe der Ergebniswerte. Welche Aufgabe hat der Computer? Aus Gleichung 1 ergibt menten. a1,1 a 2,1 .. . an,1 sich das lineare Gleichungssystem für die Stützmo a1,2 . . . a1,n M1 R1 R2 a2,2 . . . a2,n M2 (2) · = .. . . . .. . . . . . . . . Mn Rn an,2 . . . an,n Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 12 / 98 3. 3.1. 3.1.1. Hardware Hardwarearchitektur von-Neumann Architektur Das heute allgemein angewandte Prinzip, das nach seiner Beschreibung durch John von Neumann von 1946 als Von-Neumann-Architektur bezeichnet wird, definiert für einen Computer fünf Hauptkomponenten: ⇒ das Rechenwerk (Arithmetisch-, Logische Einheit, ALU) führt Rechenoperationen aus ⇒ das Steuerwerk, Control Unit, interpretiert die Anweisungen eines Programmes und steuert die Ausführung dieser Befehle ⇒ das Verbindungssystem, Bus, verbindet alle Komponenten Abbildung 2: Schema der von Neumann Architektur ⇒ der Speicher (Prozessor-Register, Hauptspeicher, Festplatten etc.), ⇒ die Ein-/Ausgabeeinheit(en), IO-Unit, (Tastatur, Maus, Bildschirm, Drucker etc.). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 13 / 98 3.1.2. Restaurant-Analogon Die fünf Komponenten der Von-Neumann-Architektur können im Analogon eines Restaurants wie folgt abgebildet werden. ⇒ Der Koch ist das Rechenwerk. Er nimmt Aufträge entgegen und führt sie aus (z.B. Schnitzel mit Pommes zubereiten). ⇒ Der Chef-Koch ist das Steuerwerk, er nimmt die Bestellung vom. Kellner entgegen und gibt die Anweisungen in der Küche weiter, seine Aufgabe ist die Koordination (Bestellung zwei mal Schnitzel mit Pommes) ⇒ Die Lehrlinge sind das Verbindungssystem, sie holen die Zutaten vom Supermarkt, holen sie im Bedarfsfall aus dem Kühlhaus, stellen die Kochutensilien zusammen (z.B. der Koch ruft dem Lehrling zu Hol’ ” mir mal die Pfanne aus dem Schrank!“). ⇒ Es gibt i.A. verschiedene Speicher. Im Bücherregal steht das Kochbuch, es enthält die Produktionsabläufe. Im Kühlhaus liegen die Lebensmittel für die Verarbeitung. Die Produktionsabläufe entsprechen den Programmen. Die Lebensmittel entsprechen den zu verarbeitenden Daten. Sie werden gemäß vorgegebener Produktionsabläufe verarbeitet. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 14 / 98 ⇒ Die Speisekarte ist eine Eingabeeinheit. (Der Gast zeigt auf ein Gericht und gibt die Bestellung auf). Der Kellner ist Ausgabeeinheit, er erhält von der Küche das Signal, das zubereitete Gericht auszuliefern. Als Eingabeeinheit legt er die Rechnung vor und kassiert. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 15 / 98 3.2. IBM-PC, der Ur-PC Der erste IBM-PC (Modell 5150) ⇒ gebaut von 1981-1987, ⇒ 2 Disketten-LW (360KB) ⇒ 0 Festplatten-LW, ⇒ 256 KB Hauptspeicher, ⇒ 4,77 MHz Taktung, ⇒ 16Bit-Prozessor 8088, ⇒ 8Bit-Datenbus, ⇒ 8087-Arithmetik-Prozessor ⇒ Gratulation zum 25. Geburtstag! Abbildung 3: IBM-PC 5150 Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 16 / 98 ⇒ ⇒ ⇒ ⇒ Adressierbarer Speicher: 1024 KB Systemspeicher: 384 KB Programmspeicher 640 KB Beschränkung durch MSDOS bis 1995 auf 640 KB. Abbildung 4: MEM-Befehl in Konsole Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 17 / 98 3.3. Mikroprozessoren ⇒ Ein Mikroprozessor ist ein Prozessor in sehr kleinem Maßstab, bei dem alle Bausteine des Prozessors auf einem Mikrochip vereinigt sind, er besteht aus Millionen kleiner Transistoren. ⇒ Als Erfinder des Mikroprozessors gilt die Firma Texas Instruments. Im Jahr 1971 stellte Intel mit dem 4004 die erste CPU auf einem Chip vor, einen 4BitProzessor. ⇒ 1997 wurde bereits der MC68000 Motorola-32-Bit Prozessor vorgestellt. Mitte der 80-iger Jahre in Atari-ST und Commodore-Amiga. Abbildung 5: Intel 8088 Prozessor (16/8 Bit) mit 4,77 MHz, Prozessor des IBM-PCs 5051 Abbildung 6: Intel Pentium 4 Prozessor (32 Bit) mit 2,8 GHz ⇒ 1986 erster Intel 32-Bit-Prozessor. Der 80386 kann direkt bis zu 4 GiB Hauptspeicher adressieren ⇒ 2003 mit AMDs AMD64 erster 64-Bit-Prozessor. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 18 / 98 3.4. 3.4.1. Eingabemedien Lochkartenstanzer ⇒ Computereingaben wurden auf Lochkarten gestanzt. ⇒ Für jede Zeile wurde eine Karte gestanzt. ⇒ Spaltenvorschrift in FORTRAN bezieht sich auf Lochkarte und wird heute noch berücksichtigt. Abbildung 7: IBM Lochkartenstanzer ⇒ Gestanzter Kartenstapel (Stapelverarbeitung, Batchprogramm) wurde zur Ausführung dem Operator übergeben. Einlesen mit Kartenleser. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 19 / 98 3.4.2. Die Tastatur ⇒ ca. 100 Tasten sind in einer elektrischen Matrix aus Reihenund Spalten-Leitungen angeordnet. Wird eine Taste gedrückt, so wird eine Reihe mit einer Spalte elektrisch verbunden. Der so generierte Scancode wird zum Recher geleitet. Abbildung 8: Übliche Tastatur mit deutschem Layout ⇒ Das Layout der Tastatur, sieht man ab von Funktions- und Sondertasten, entspricht im Wesentlichen der Tastatur der mechanischen Schreibmaschine. Man beachte die versetzte Tastenanordnung, die eine gradlinige Verbindung von Taste zu AnschlagHammer des Schreibwerks ermöglichen soll. ⇒ Abweichende Tastenlayouts bzgl. 2-5ter Tastenreihe konnten sich bislang nicht durchsetzen. Abbildung 9: Schreibmaschine Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Olivetti Bauinformatik - I 20 / 98 3.4.3. Touchscreen ⇒ Analoge Systeme bestehen aus zwei gegenüberliegenden leitfähigen Indiumzinnoxidschichten (ITO) (x und y Schicht), die mit einer konstanten Gleichspannung angesteuert werden. ⇒ Zwischen den zwei ITO-Schichten befinden sich viele kleine und kaum sichtbare Abstandshalter, die eine Trennung der zwei Schichten garantieren. Abbildung 10: Prinzipskizze eines Touchscreens ⇒ Durch Berührung des Touchscreen an einer Stelle, ergibt sich ein elektrischer Kontakt zwischen den ITOSchichten. Durch den Widerstand dieses Kontaktes entsteht an jeder Stelle eine unterschiedliche Spannung. Die Bestimmung der Koordinaten x und y ergibt sich aus der Spannungsänderung. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Abbildung 11: PDAComputer mit Bauinformatik - I Touchscreen 21 / 98 3.4.4. Mäuse ⇒ Die erste Computermaus wurde 1963/1964 von Engelbart/English am Stanford Research Institute (SRI) entwickelt und im Dezember 1968 auf der Herbsttagung der American Federation of Information Processing Societies (AFIPS) ohne Resonanz vorgestellt. Der erste Mac wurde am 24. Januar 1984 vorgestellt. Erster erfolgreicher Rechner mit Maus. Abbildung 12: Innenansicht einer optomechanischen Maus ⇒ Lange Zeit waren optomechanische Mäuse üblich. Neuere Mäuse ersetzen die Kugelmechanik durch einen optischen Sensor. Man nennt sie Optische Maus. Als Nachfolger der optischen Maus hat die Firma Logitech die erste Lasermaus vorgestellt. Abbildung 13: Prinzip einer optomechanischen Maus Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 22 / 98 3.4.5. Graphiktablett ⇒ Die Spitze eines Stiftes wird auf einer Platte bewegt. Der Stift sendet Daten über Stiftdruck und gedrückte Tasten an das Tablett, die so gewonnen Bewegungsdaten werden vom Grafiktablett an den Computer übermittelt. Eingesetzt in Digitaler Bildbearbeitung und Design bzw. CAD. ⇒ Im Gegensatz zur Maus positioniert ein Graphiktablett absolut und damit genauer. Abbildung 14: WACOM Graphiktablett elektromagnetisches ⇒ Der Stift enthält eine Spule, die ein gerichtetes Feld erzeugt. Dieses Feld liegt in einer Achse mit der Kunststoffspitze am Stift. Leiterschleifen im Tablett ermitteln die Stiftposition. Zusätzliche Stiftinformationen wie Stiftdruck oder das Betätigen einer Taste am Stift modulieren das Feld und werden vom Tablett bzw. dem Gerätetreiber ausgewertet. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 23 / 98 3.5. 3.5.1. Speichermedien Der Lochstreifen ⇒ Der Lochstreifen ist der Vorläufer der Lochkarte. ⇒ Bei mechanischer Abtastung ca. 6 Zeichen/s. ⇒ Bei optischer Abtastung später wesentlich höhere Lesegeschwindigkeiten realisiert. ⇒ 5-Bit-Code Bautdot-Code oder CCITT-2 Code erlaubt die Darstellung von 25 = 32 Zeichen. Abbildung 15: 5-Bit-Lochstreifen, ca. 1976. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 24 / 98 3.5.2. Die Lochkarte ⇒ Von IBM 1928 mit 80 Spalten und rechteckigen Löchern patentiert. ⇒ 80 Zeichen/Zeile ist Standardbildschirmbreite im ZeichenmoAbbildung 16: 5-Bit-Lochstreifen, ca. 1976. dus. ⇒ Noch heute in FORTRAN: Spalten 1-5 Labelnummern, Spalte 6 als Fortsetzungszeichen, Spalte 7-72 Datenspalten, ab Spalte 73 Kartennummerierung. ⇒ Lochkartenstapel findet sich wieder in den Worten Stapelverarbeitung, BATCH-Programm im Gegensatz zu Dialogprogramm. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 25 / 98 3.5.3. Die Festplatte ⇒ Erste kommerziell Fesplatte, die IBM 350, wurde von IBM 1956 angekündigt. 1973 startete ebenfalls IBM das Winchester Projekt. Erstes Laufwerk mit versiegelter Einheit aus Platten, Zugriffsmechanik und Schreib-/Leseköpfen (IBM 3340). Da erfolgreich, war bis in die 1990er Jahre für Festplatten die Bezeichnung WinchesterLaufwerk gebräuchlich. ⇒ Seit 2000 wird die ursprüngliche Baugröße (IBM 5051) von 5,25” nicht mehr produziert. ⇒ 2007 wird eine Festplattenkapazität bei Baugröße 3,5” von 1 TB erwartet. Abbildung 17: IBMFestplatte 62PC, ca. 1979, 6x8”, 65MB Abbildung 18: Schreib- bzw. Lesekopf einer Festplatte Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 26 / 98 3.5.4. Mobile Speichermedien ⇒ Erste Diskette 8” 1971, ROM mit 80 KiB bis max. 1000 KiB. ⇒ Erste Diskette 5,25” 1976, mit 110 KiB. IBM-PC 5051 mit 360 KiB, max. 1200 KiB. ⇒ Erste Diskette 3,5” 1982, mit 360 KiB. Gebräuchlich ab 1987 als HD mit 1440 KiB. Weitere Formate konnten sich nicht mehr etablieren. Abbildung 19: Verschiedene mobile ⇒ Erste CD vorgestellt 1979 auf Messe in ToSpeichermedien kio. Die CD mit 650MB später (CD-R/CDRW) hat mit dem Preisverfall der Brenner die Diskette abgelöst. ⇒ Erste DVD Ende 1995, ursprünglich als Video-Datenspeicher gedacht Digital Vi” dea Disc“. Später universeller nutzbar Di” gital Versatile Disc“. 1999 erste DVDBrenner für 5000DM verfügbar. Heute Abbildung 20: 8” und 3,5” in jedem Notebook zu finden. Speicher Diskette 4,7GB. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 27 / 98 ⇒ CompactFlash-Karten waren lange Marktführer. Sie werden insbesondere bei Digitalkameras eingesetzt. Robust und günstig. ⇒ SD Memory Card wurde von ScanDisk 2001 entwickelt und hat die CompactFlash abgelöst. Abbildung 21: CompactFlash Karte mit 64MB ⇒ Sony’s Memory-Stick wurde 1998 als eigener Standard eingeführt und wird zumeist in Sony-Geräten eingesetzt. Die Pro-Version kann laut Hersteller bis zu 32GB adressieren. Abbildung 22: Secure Digital Memory Card, 1GB Abbildung 23: Memorystick Klassisch Abbildung Memorystick Pro Duo 24: Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 28 / 98 ⇒ Die neue Generation der Sony-USB-Sticks haben ein Gewicht von ca. 1,5 Gramm und eine Dicke von 2,4 mm und sind ca. so lang wie der USB-Stecker bei einem Speicher wahlweise 256MB bis 2GB. Abbildung 25: SonyUSBStick 2GB Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 29 / 98 3.6. 3.6.1. Einheiten Speichereinheit • Einheit (im Sinne der Informationstheorie) ist 1 Bit (Binary digit). • Byte ursprünglich systemabhängige Gruppe von Bits. Standard: 1Byte = 8 Bit (Oktett), Datenübertragung: 1Byte = 7 Bit. • Kilobyte = 210 = 1024 Bytes (anstatt 1000 Byte). Die IEC, November 2000, führt neue Standard-Präfixe ein, um (im Sinne einer Rechtschreibreform) die Verwirrung zwischen 103 und 210 aufzulösen. Dazu der Historischer Unglücksfall der 3,5 Zoll-Dikette: Auf eine 720-KiB-Diskette passen 720 · 1024 Byte. Als die Kapazität dann verdoppelt wurde, nannte man diese jedoch nicht 1440-KiB-Diskette, sondern fälschlich 1,44-MB-Diskette. Da ihre Kapazität hingegen 1,44 · 1000 · 1024 Byte beträgt, handelt es sich hier also weder um 1,44 Megabyte noch um 1,44 Mebibyte, sondern um 1,44 Kilokibibyte. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 30 / 98 3.6.2. Speicherkapazitäten • Bit – 1 Bit - (21 = 2), 0/1 – 5 Bit - (25 = 32), Großbuchstabe aus dem lateinischen Alphabet – 7 Bit - (27 = 128), ein ASCII-Zeichen • Nibble (⇒ eine HexZiffer: 0xF) – 1 Nibble - (24 = 16), HexZiffern: 0/1/2/.../15 – 2 Nibble - (28 = 256), 1 Byte ≡ 2 HexZiffern (0xFF) • Byte (⇒ 2 HexZiffern: 0xFF) – 1 Byte - (28 = 256), Zeichen in ANSI-Codierung – 2 Byte - (216 = 65.536), Zeichen in UTF-16-Codierung (Unicode) – 4 Byte - (232 = 4, 3 · 109 ), Max. Partitionsgröße von FAT16 ⇒ 2 GB) • Kilobyte kB (103 Byte = 1000 Byte), Kibibyte KiB (210 Byte = 1024 Byte), auch KB, ⇒ ca. eine Buchseite ⇒ 3,5 Zoll-Diskette Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 31 / 98 • Megabyte MB (106 Byte = 1.000.000 Byte) Mebibyte MiB (220 Byte = 1.048.576 Byte), ⇒ Standard CD-ROM mit ca. 703,1 ⇒ MiB 737,8 MB • Gigabyte GB, (109 Byte = 1.000.000.000 Byte), Gibibyte GiB (230 Byte = 1 073 741 824 Byte) ⇒ DVD±R mit ca. 4,38 GiB ⇒ 4,7 GB ⇒ komprimierter Spielfilm in DVD-Qualität mit ca. 5 GB • Terabyte TB (1012 Byte = 1000 GB), Tebibyte TiB (240 Byte) ⇒ Library of Conress (Nationalbibliothek der USA) mit mehr als 128 Millionen Titeln (Bücher, Handschriften, etc.) ca. 80 TB • Petabyte PB (1015 Byte = 1.000.000 GB), Pebibyte PiB (250 Byte) ⇒ Die Speicherkapazitäten der weltweit größten Rechenzentren lagen Ende 2002 zwischen 1 PB und 10 PB • Exabyte EB (1018 Byte), Exbibyte EiB (260 Byte) ⇒ Die Gesamtheit aller gedruckten Werke wird auf 0,2 EB geschätzt Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 32 / 98 • Zettabyte ZB (1021 Byte), Zebibyte ZiB (270 Byte) • Yottabyte YB (1024 Byte), Yobibyte YiB (280 Byte) ⇒ 1 YB sind etwa so viel Byte, wie Atome in 1,67 Gramm Wasserstoff, entsprechend 0,83 mol H2, vorhanden sind. Aber: Da Soft- und Hardwarehersteller nur sehr zögerlich auf die Binärpräfixe umstellen, ist ein Ende der Konfusion noch nicht in Sicht. Es ist anzunehmen, dass die alten Binärpräfixe ebenso Jahrzehnte in Gebrauch bleiben wie Kalorie und PS. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 33 / 98 3.6.3. Performanceeinheit FLOPS FLOPS, FLOP/s bzw. F/s ⇒ englisch: floating-point operations per second ⇒ Maßeinheit für Geschwindigkeit wissenschaftlich genutzte Computersystemen bzw. Prozessoren. ⇒ Anzahl der pro Sekunde ausgeführten Gleitkommazahl-Operationen (Additionen oder Multiplikationen) ⇒ Angabe der FLOPS mit Präfixen Mega, Giga, Tera, Peta ⇒ Performance-Messung mit Linpack-Benchmark-Programm (Lösen linearer Gleichungssysteme ⇒ FEM, siehe auch Beispiel Clapeyron) ermittelt FLOPS. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 34 / 98 Performance einiger Computerysteme in FLOPS ⇒ Zuse Z1 (1937), 5 Hz ⇒ 0,2-2 F/s (2 Additionen/s, 5s pro Multiplikation) ⇒ Intel 386DX, 33MHz (1. 32-Bit-PC) ⇒ 8 MF/s ⇒ Intel Pentium 4, 3GHz (32-Bi) ⇒ 3,6 GF/s ⇒ Intel Itanium 2, 1,6GHz ⇒ 6 GF/s ⇒ Cray T3E 1200/1900 Itanium 2 ⇒ 1.2 TF/s ⇒ System X, 1100 Dual 2,3 GHz, Apple G5-Prozessoren ⇒ 12 TF/s (Nov. 2005 auf Platz 20 der TOP500) ⇒ NEC Earth Simulator, Vektorprozessoren ⇒ 36 TF/s (von Juni 2002 bis Juni 2004 auf Platz 1 der TOP500) ⇒ IBM BlueGene/L Supercomputer JUBL“ FZ-Jülich ⇒ 36,5 TF/s (Nov. ” 2005 auf Platz 6 - inoffiziell - der TOP500) ⇒ IBM BlueGene/L Supercomputer, Lawrence Livermore National Laboratory ⇒ 281 TF/s (Nov. 2005 auf Platz 1 der TOP500) Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 35 / 98 Supercomputer BlueGene/L und Nachfolger • Skalierbare Architektur • Einsatz von Basisbausteinen • 65 536 Knoten (zu je 2 Prozessoren) • BlueGene/L 360 TF/s (2004/2005) • BlueGene/P 1000 TF/s (2006/2007) • BlueGene/Q 3000 TF/s (2007/2008) Abbildung 26: BlueGene - Suppercomputer Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 36 / 98 4. 4.1. 286-386-Prozessor Das legendäre Hello World als 16-Bit-Assembler-Programm segment code => Start Code-Segment start: mov ax, data mov ds, ax => Laden der Datensegmentadresse in AX => Belegen des Datensegmentregisters mov dx, hello mov ah, 09h int 21h => Laden des Textes ins Datenregister (DX) => Interruptfunktion setzen => Interrupt ausführen: Text schreiben mov ah, 4Ch int 21h => Interruptfunktion setzen: => Interrupt ausführen: Programmende segment data => Start des Datensegments hello: db ’Hello World!’, 13, 10, ’$’ Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 37 / 98 4.2. Register der 286-Architektur • Der 286-Prozessor hat 4 allgemeine 16-Bit-Daten-Register – AX (Accumulator), – BX (Base Register), – CX (Counter Register) und – DX (Data Register). Die niederwerteigen Bytes (z.B. AL) und die höherwertigen Bytes (z.B. Abbildung 27: Allgemeine ProzessorreAH) können getrennt angesprochen gister werden. • Das Stack-Zeigerregister SP wird für Stackzugriffe eingesetzt (z.B. Datenübergabe bei Unterprogrammen) • Mit dem Basis-Zeigerregister BP wird Datenspeicher adressiert. (Zugriff auf externen Speicher). • Die Register SI und DI werden bei Kopieraktionen als Indexvariablen eingesetzt. (z.B. Kopieren eines Textes, Quelle: SI, Ziel DI). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 38 / 98 • Eine Speicher-Adresse besteht aus einer Segment- (16Bit) und einer Offsetadresse (16Bit). Die Segmentregister enthalten den Segmentanteil der Adressen. Abbildung 28: Segmentregister • Das Codesegment CS verweist auf den Programmcode (z.B. Adressen bei Unterprogrammaufrufen). • Das Datensegment DS verweist auf den Datenbereich (globaler Speicher). • Das Stacksegment SS verweist auf eine Stackadresse (temporärer Übergabe oder lokaler Speicher eines Programms). • Das Extra Segment gibt die Position eines weiteren Datensegmentes (wird z. B. für String-Kopierbefehle verwendet) an. • Die Register SI und DI werden z.B. bei Kopieraktionen eingesetzt. (Quelle: SI, Ziel DI). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 39 / 98 4.3. Register der 386-Architektur • Der 386-Prozessor hat 4 allgemeine 32-Bit-Daten-Register – EAX (Accumulator), – EBX (Base Register), – ECX (Counter Register) und – EDX (Data Register). • Die 16-Bit-Register können in der 386-Architektur, da niederwertiges Doppelbyte der 32-Bit-Register, getrennt angesprochen werden. Damit sind prinzipiell 16-Bit-Programme auf Abbildung einem 386-er Prozessor auzuführen. gister 29: Allgemeine Prozessorre- • Mit der Datenbreite von 32-Bit können somit prinzipiell bis zu 4GB (ff ff ff ff) große Datenfelder angelegt werden. Bei 16-Bit-Breite 64kB (ff ff). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 40 / 98 5. Zahlensysteme ⇒ Der Computer kann prinzipiell nur zwei Zustände in einem Bit (einem Schalter ⇒ Zustand: ein bzw. aus) speichern. Damit ist das dezimale Zahlensystem (ein Schalter hat 10 Zustände) zur Darstellung von Informationen ungeeignet. ⇒ Da die binären Zahlen (nur Ziffern 0 und 1) sehr unübersichtlich und lang werden, wurden zunächst 3 Bits in einer Informationseinheit zusammengefaßt (23 = 8), das oktale Zahlensystem. Das oktale Zahlensystem hat 8 Ziffern 0,1,2,...,6,7. Nachteil des oktalen Zahlensystems ist das letzte unbenutzte Bit in einem oktalen Byte: 3 · 3 = 9 Bits in 3 oktalen Ziffern. ⇒ Mit der Zusammenfassung von 4 Bits (24 = 16) erhält man das hexadezimale Zahlensystem, Zahlen zur Basis 16. Der Vorteil ist, die mögliche Aufspaltung eines Bytes in zwei hexadezimale Ziffern ohne Verschnitt. Nachteil ist die Notwendigkeit der Einführung der weiterer Ziffern A,B,C,D,E,F. Das hexadezimale Zahlensystem hat sich bei der Darstellung der Computer-Adressen durchgesetzt. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 41 / 98 ⇒ Im Alltag wird das dekadisches System verwendet. Im dekadischen Zahlensystem stehen die Ziffern von 0 - 9 für eine Zahlenstelle zur Verfügung. Die Schreibweise dekadischer Zahlen ist eine abgekürzte Schreibweise für die Darstellung des tatsächlichen Gesamtwertes. Zum Beispiel schreibt man 123 oder 12310 und meint damit 1 · 100 + 2 · 10 + 3 · 1. Die Anzahl der möglichen Ziffern je Stelle bezeichnet man als Basis b des Zahlensystems. Beim dekadischen Zahlensystem ist b gleich 10. 5.1. Das binäre Zahlensysteme Die binäre Zahl 10110 oder 101102 ist demnach: ⇒ 101102 = 1 · 24 + 0 · 23 + 1 · 22 + 1 · 21 + 0 · 20 = 1 · 16 + 1 · 4 + 1 · 2 = 22. Divisionsverfahren: 22:2 = 11 Rest: Die konvertierende Zahl wird durch die Basiszahl 11:2 = 5 Rest: geteilt. Man merke sich den Rest. Das Ergebnis 5:2 = 2 Rest: wird erneut durch die Basiszahl geteilt. Man merke 2:2 = 1 Rest: sich den Rest. Man verfahre solange in dieser Weise 1:2 = 0 Rest: bis das Divisionsergebnis den Wert 1 erreicht hat. 2210 = 101102 Die Divisionsreste werden in invertierter Reihenfolge von links nach rechts notiert. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] 0 1 1 0 1 Bauinformatik - I 42 / 98 5.2. Das oktale Zahlensysteme Oktale Zahlen (Ziffern 0,1,2,...,6,7) sind Zahlen zur Basis 8. Die oktale Zahl 121 oder 1218 ist demnach: ⇒ 1218 = 1 · 82 + 2 · 81 + 1 · 80 = 1 · 64 + 2 · 8 + 1 · 1 = 7310 . 5.3. Das hexadezimale Zahlensysteme Hexadezimale Zahlen (Ziffern 0,1,2,...,8,9,A,B,C,D,E,F) sind Zahlen zur Basis 16. Die hexadezimale Zahl 121 oder 12116 ist demnach: ⇒ 12116 = 1 · 162 + 2 · 161 + 1 · 160 = 1 · 256 + 2 · 16 + 1 · 1 = 28910 . ⇒ 28910 = 1001000012 = 1|0010|00012 = 12116 5.4. Beliebige Zahlensysteme Es können Zahlensysteme zu beliebigen Basiszahlen b generiert werden. Die Umrechnung erfolgt wie im Fall der Binärzahlen demonstriert mit dem Divisionsverfahren. z.B. das Zahlensystem zur Basis 5: ⇒ 1215 = 1 · 52 + 2 · 51 + 1 · 50 = 1 · 25 + 2 · 5 + 1 · 1 = 3610 . Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 43 / 98 5.5. Darstellung negativer Zahlen • Vorzeichen-Bit Das erste Bit wird als Vorzeichen interpretiert. Damit wird die 0 doppelt dargestellt. • Echtes Komplement / b-Komplement Beim echten Komplement wird eine Ziffer einer Zahl x = b − x − 1 gesetzt. Anschließend wird auf die Zahl 1b aufaddiert. Die Summe aus Zahl und Komplement ergibt 0. In den Beispielen werden die Komplemente die Zahl 2110 für b = 2 +21 => 0001 0101 -21 => 1110 1010 + 1 =1110 1011 und b = 8 dargestellt. +21 => 0000 0025 -21 => 7777 7752 + 1 =7777 7753 Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 44 / 98 5.6. IEEE-Float-Darstellung • Das Format IEEE-754 (1985) beschreibt eine Float-Zahl (Single Precision) in 4 Bytes (32Bit) besteht aus – einem Vorzeichen Bit (Bit 31), Abbildung – einem Exponenten (Bit-23 bis Bit-30) und – einer Mantisse (Bit-0 bis Bit-22). 30: IEEE-Single-Precision • Für das Vorzeichen-Bit gilt: 0 ⇒ positive Zahl, 1 ⇒ negative • Auf den Exponenten E wird 127 aufaddiert (Es = E + 127) damit gilt: Es > 127 ⇒ E > 0, Es < 127 ⇒ E < 0. • Die Mantisse ist normalisiert, d.h. das führende Bit ist immer 1. • Darstellungsbereich: 10−38 · · · 10+38 • Double Presicion (64Bit): Darstellungsbereich: 10−308 · · · 10+308 Mantisse mit 52 Bit. Sollte aus numerischen Gründen in Berechnungen verwendet werden. • Extendet Presicion (80Bit) meist interne Verwendung (Math. Coprozessor) Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 45 / 98 5.7. Zeichentabellen • ASCII, American Standard Code for Information Interchange 7Bit-Code, 128 Zeichen, Kennt keine Umlaute und andere landesspezifischen Zeichen. • Erweiterter ASCII-Zeichzensatz (8Bit, 256 Zeichen) Mit Codeseiten können landesspezifische Zeichen (ä, ö, ü, etc.) geladen werden. • Unicode (16Bit, 65535 Zeichen) Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 46 / 98 6. Programmiersprachen Allgemeine Definition einer Programmiersprache: • Sprache zur Formulierung von Rechenvorschriften, die direkt oder indirekt von einem Rechner ausgeführt werden können. • oder indirekt: Umsetzung der Rechenvorschriften in ein für den Rechner verständliches Format. Wichtige Eigenschaften einer Programmiersprache: • eindeutige Syntax Festlegung, welche Zeichenfolgen als Programme zugelassen sind. • eindeutige Semantik Festlegung, welche Auswirkung die Ausführung des Programms auf einem Rechner hat. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 47 / 98 6.1. Generationen der Programmiersprachen Klasse Beispiel: s = 3+4 1. Generation 1011 0011 0000 0011 1000 0000 1100 0011 0000 0100 2. Generation MOV BL,3 ADD BL,4 3. Generation a = 3; b = 4; summe = a+b; 4. Generation OOP pW = new Window; pW→Show(); Sprache Maschinensprache Assembler 86 Prozedurale Sprachen BASIC, FORTRAN, C, PASCAL, COBOL Deskriptive Sprachen SQL,Informix/4GL Objektorientierte Sprachen Simula, C++, Java, Trubopascal, Delphi, VB, VBA, PHP, Phyton, etc. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 48 / 98 • Generation 1: Die Programmiersprachen stellen die Maschinen- oder maschinennahen Programmiersprachen dar. Hierbei wird unmittelbar durch eine Bit- bzw. Binärcodierung, die in direkter Abhängigkeit zum verwendeten Prozessor steht, der Maschine mitgeteilt, welche Operationen durchgeführt werden sollen. • Generation 2: Diese Programmiersprachen beinhaltet so genannte mnemotechnische Ausdrücke. Dies sind Abkürzungen für eine bestimmte Anzahl konkreter Maschinenbefehle. MOV bedeutet soviel wie: bewege oder lade eine Konstante in ein Register des Prozessors. Die Sprachen dieser Generation nennt man auch Assemblersprachen, z.B. 80?86 Makroassembler. • Generation 3: Ab der 3. Generation spricht man von Höheren Programmiersprachen. Diese Sprachen zeichnen sich dadurch aus, dass sie weitestgehend unabhängig von einem bestimmten Prozessortyp sind und es ermöglichen, ein Problem abstrakt zu formulieren. Imperative Sprachen wie z.B. FORTRAN, BASIC, C, PASCAL, COBOL. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 49 / 98 • Generation 4: Nichtprozeduralen oder aber auch deskriptiven oder deklarative Sprachen. Hier steht nicht die Formulierung des Algorithmus (also wie soll der Rechner eine Aufgabe lösen) im Vordergrund sondern die Formulierung des was ist zu tun, d.h. der Programmierer ist mehr abfrageorientiert. ⇒ Abfragesprachen. Z.B. Datenbanksprache SQL = Structured Query Language. • Verschiedene jüngere Sprachen: Objektorientierte Sprachen, z.B. C++, Java, C# eingeschränkt Visual Basic. In diesen Sprachen werden Daten mit ihren darauf anwendbaren Operationen zu Objekten zusammengefasst (⇒ Kapselung), die mittels Botschaften miteinander kommunizieren. Wissensbasierte Sprachen (künstliche Intelligenz), z.B. die funktionale Programmiersprache LISP (List Processing Language) (z.B. LISPDialekt AutoLISP, AutoCAD-Skript), PROLOG (Programming in Logic). Scriptsprachen, zur Programmierung grafischer Oberflächen bzw. Internetprogrammierung, z.B.: PHP, Perl und JavaScript. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 50 / 98 6.2. Sprachebenen Maschinensprache ⇒ Generation 1. Assemblersprache ⇒ Generation 2. Problemorientierte Sprachen ⇒ ab Generation 3. Mikroprogrammierung ⇒ nicht flüchtige SW ⇒ Firmware z.B. BIOS = basic I/O-System • ROM: Read-Only-Memory (in alten Bauteilen) • EPROM: Erasable Programmabele ROM (Löschen mit UV-Strahlung) • EEPROM: Electrically EPROM (CPU löscht, schreibt) Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 51 / 98 7. 7.1. Algorithmen Eigenschaften Schrittweises Verfahren zur Berechnung von Zielgrößen aus gegebenen Eingangsgrößen mit folgenden Eigenschaften. • deterministisch Zu jedem Ausführungszeitpunkt ist der Folgeschritt eindeutig bestimmt. • determiniert Wird der Algorithmus mit denselben Eingangsgrößen durchlaufen, ergeben sich dieselben Ergebnisgrößen. • statische Finitheit Die Beschreibung des Algorithmuses besitzt eine endliche Länge. • dynamische Finitheit Zu jedem Zeitpunkt eines Unterbrechens wird nur endlich viel Speicher belegt. • Terminierung Die Ausführung wird nach endlich vielen Schritten abgeschlossen. • Korrektheit Berechnung korrekter Ausgabewerte (bzg. Spezifikation) aus beliebig zulässigen Eingangswerten. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 52 / 98 • Äquivalent Zwei Algorithmen sind äquivalent, wenn nach Spezifikation aus den selben Eingangswerten die selben Ausgabewerte folgen. 7.2. Beschreibung • Pseudocode Umgangssprachliche Beschreibung unter Verwendung allgemeiner Programmiersprachenkonstrukte. • Programmablaufplan Flußdiagramme nach DIN 66001 • Struktogramme Nassi-Shneiderman-Diagramm nach DIN 66261 • UML-Diagramme Unified-Modeling-Language für objektorientierte Algorithmen und Datenstrukturen (OOP) Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 53 / 98 7.3. Beispiel: Euklidischer Algorithmus Es ist der größte gemeinsame Teiler zweier positiver natürlicher Zahlen m und n zu berechnen, wobei n > m. Nach Euklid kann dazu der folgende Algorithmus in einem Pseudocode formuliert werden. (0) Initialisierung (1) Restbildung Es wird n durch m geteilt, der Rest sei r. (Es gilt 0 ≤ r < n) (2) Restprüfung Wenn r = 0, endet der Algorithmus; m ist das Ergebnis. (3) Vertauschen und weiterer Durchlauf Setze n := m und m := r und gehe zu Schritt (1) zurück. oder: Eingabe n und m; Wiederhole: r:=a mod b; n:=m; m:=r; solange r != 0; Ausgabe n; Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 54 / 98 Beispiel: Es ist der ggT der Zahlen 544 und 119 zu ermitteln. Pos. Anweisung Bemerkung (0) n := 544; m := 119 Initialisierung (1) 544 = 4 * 119 + 68 Rest ist 68 da r6=0... (2) r := 68 (3) n := 119 m := 68 (oder n := m; m := r) Tauschen und zu (1) (1) 119 = 1 * 68 + 51 Rest ist 51 da r6=0... (2) r := 51 (3) n := 86 m := 51 (oder n := m; m := r) Tauschen und zu (1) Rest ist 17 (1) 68 = 1 * 51 + 17 (2) r := 17 da r6=0... (3) n := 51 m := 17 (oder n := m; m := r) Tauschen und zu (1) (1) 51 = 3 * 17 + 0 da r=0... (2) r := 0 ⇒ Ergebnis: 17 Ergebnis gefunden! 5 (-) 544 = 17 * 32 = 2 * 17; 119=3*17 ok! Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 55 / 98 7.4. Programmablaufplan PAP Mit einem Programmablaufplan, PAP, läßt sich ein Programm symbolisch darstellen. PAP wurde in der DIN 66001 (September 1966) genormt. Nachfolgend die gebräuchlichsten Symbole. Symbol Anmerkung Start und Endpunkt eines Programms. Mit der Linie bzw. dem Pfeil werden einzelne Operationen oder Entscheidungsstrukturen verknüpft. In einer Operation wird eine Anweisung ausgeführt. Ist auch als Makro zu verstehen. Mit einer Entscheidungsstruktur können verschiedene Programmzweige ausgewählt werden. Entscheidungsstrukturen werden im PAP zum Aufbau von Schleifen eingesetzt. Ein Unterprogramm oder eine Funktion ist ein abgeschlossener Programmteile, der im Sinne eines Makros aufgerufen wird (z.B. sin(x), cos(x), etc.). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 56 / 98 7.4.1. Beispiel: PAP - Algorithmus nach Euklid Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 57 / 98 Nachteile von PAP: Für komplexere Algorithmen wird ein PAP schnell unübersichtlich und verführt zu Entwicklung von Spagetti-Codes. Direktes Verbinden nach Entscheidungsstrukturen suggeriert einen Goto-Sprung. Diese Sprünge waren in Zeiten knapper Programmspeicher und elementarer Programmiermöglichkeiten (Assembler, FORTRAN4) kaum zu vermeiden und führten letztendlich aufgrund der undurchschaubaren Programmierung zum Ansatz der strukturierten Programmierung (Struktogramme bzw. Nassi-SchneidermanDiagramme in Abschnitt 7.5). Abbildung 31: PAP zum Euklidischer Algorithmus Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 58 / 98 7.5. Nassi-Shneiderman-Diagramm, Struktogramme, NSD Entwurfsmethode für die strukturierte Programmierung (1972/73) und Aufnahme in die Norm DIN 66261. Nachfolgend die gebräuchlichsten Symbole. Symbol Anmerkung Jede Anweisung wird in einen rechteckigen Strukturblock geschrieben. Die Strukturblöcke werden nacheinander von oben nach unten durchlaufen. Leere Strukturblöcke sind nur in Verzweigungen zulässig. Sequenz Verzweigung Nur wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. Ein Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Trifft die Bedingung nicht zu (falsch), wird der Durchlauf ohne eine weitere Anweisung fortgeführt (Austritt unten). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 59 / 98 Symbol Zweifache Verzweigung Mehrfache Verzweiung Fallauswahl Anmerkung Wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. Trifft die Bedingung nicht zu (falsch), wird der Anweisungsblock 2 durchlaufen. Ein Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Austritt unten nach Abarbeitung des jeweiligen Anweisungsblocks. Auch verschachtelte Auswahl genannt, da eine weitere Bedingung folgt. Die Verschachtelung ist ebenso im Nein-Fall (noch) möglich. Besonders bei mehr als drei abzuprüfenden Bedingungen geeignet. Der Wert von Variable kann bedingt auf Gleichheit wie auch auf Bereiche (größer/kleiner bei Zahlen) geprüft werden und der entsprechend zutreffende Fall mit dem zugehörigen Anweisungsblock wird durchlaufen. Eine Fallauswahl kann manchmal in eine Mehrfachauswahl umgewandelt werden - etwa wenn die eingesetzte Programmiersprache Fallauswahlen nicht kennt. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 60 / 98 Symbol Anmerkung Wiederholungsstruktur, bei der die Anzahl der Durchläufe festgelegt ist. Als Bedingung muss eine Zählvariable angegeben und mit einem Startwert initialisiert werden. Ebenso muss ein Endwert und die (Zähl-)Schrittweite angegeben werden. Nach jedem Durchlauf des Schleifenkörpers Zählergesteuerte (Anweisungsblock 1) wird die Zählvariable um Schleife die Schrittweite inkrementiert (bzw. bei negativer Schrittweite dekrementiert) und mit dem Endwert verglichen. Ist der Endwert überschritten, wird die Schleife verlassen. Wiederholungsstruktur mit vorausgehender Bedingungsprüfung. Der Schleifenkörper (Anweisungsblock 1) wird nur durchlaufen, wenn (und solange) die Bedingung zutreffend (wahr) ist. Diese SymAbweisende Schlei- bolik wird auch für die Zählschleife (Anzahl der fe, kopfgesteuert Durchläufe bekannt) benutzt. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 61 / 98 Symbol Nicht Schleife Anmerkung Wiederholungsstruktur (fußgesteuert) mit nachfolgender Bedingungsprüfung. Der Schleifenkörper (Anweisungsblock 1) wird mindestens einmal durchlaufen, auch wenn die Bedingung von Anfang abweisende an nicht zutreffend (falsch) war. Kann allenfalls durch einen Aussprung (break) verlassen werden. Endlosschleife Aussprung Aufruf Der Aussprung (break) stellt die Beendigung eines Programmteils dar und sollte nicht als das verstanden werden, was Nassi und Shneiderman mit den Struktogrammen eigentlich vermeiden wollten, die Sprunganweisung (Sprung Goto). Symbolik zum Aufruf eines Unterprogramms bzw. einer Prozedur oder Funktion. Nach Durchlauf dieser wird genau zu der aufrufenden Stelle zurückgesprungen und der nächstfolgende Strukturblock durchlaufen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 62 / 98 7.5.1. Beispiel: NSD - Algorithmus nach Euklid Programm-Code in PASCAL: PROGRAM GGT(Input,Output); VAR a,b: Integer; BEGIN ReadLn(a,b); WHILE (a>0) AND (b>0) DO IF a>b THEN a:=a-b; ELSE b:=b-a; IF b=0 THEN WriteLn(a) ELSE WriteLn(b) END. Abbildung 32: NDS zum Euklidischer Algorithmus Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 63 / 98 7.6. UML - Unified-Modeling-Language Die Unified Modeling Language (UML) ist eine von der Object Management Group (OMG) entwickelte und standardisierte Sprache für die Modellierung von Software und anderen Systemen. Im Sinne einer Sprache definiert die UML dabei Bezeichner für die meisten Begriffe, die für die Modellierung wichtig sind, und legt mögliche Beziehungen zwischen diesen Begriffen fest. Die UML definiert weiter grafische Notationen für diese Begriffe und für Modelle von statischen Strukturen und von dynamischen Abläufen, die man mit diesen Begriffen formulieren kann. Gängige moderne Programmiersprachen wie Java, C++ und C# (ab 1990) unterstützen sowohl die OOP als auch den prozeduralen Ansatz. Erste objektorientierte Sprache ist Simula 68 (entwickelt von Ole-Johan Dahl und Kristen Nygaard am Norwegian Computing Center (NCC) in OsloVorbild von C++). In einem Klassendiagramm wird ein Objekt in 3 Feldern beschrieben: oben die Bezeichnung, Window, in der Mitte die Eigenschaften (size und visibility ), unten die Methoden oder Operationen (display und hide). Abbildung 33: Klassendiagramm Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 64 / 98 Motivation: Erzählt wird, dass Dahl und Nygaard an Schiffssimulationen gearbeitet hatten. Dabei ergab sich durch die kombinatorische Explosion von Parameterbeziehungen eine verwirrende Vielfalt an Möglichkeiten, wie sich die verschiedensten Attribute der unterschiedlichen Schiffe gegenseitig beeinflussen konnten. So kam die Idee auf, die unterschiedlichen Schiffstypen jeweils als eigenständige Objekte zu klassifizieren, wobei jede Klasse von Objekten für die eigenen Daten und das eigene Verhalten selbst zuständig war. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 65 / 98 8. VBA-Einführung • Der Name BASIC steht für Beginner’s All-purpose Symbolic Instruction Code, was so viel bedeutet wie symbolische Allzweck-Programmiersprache für Anfänger. • textbfBASIC wurde von Microsoft als Visual-Basic zur Programmierung von Windows-Anwendungen favorisiert und • als VBA (Visual-Basic for Applications) als universelle Steuersprache in Windows-Anwendungen eingeführt (seit EXCEL 95). 8.1. Elementare Datenobjekte • Konstanten sind Speicherobjekte, deren Inhalt konstant ist, d.h. im Programm nur einmal gesetzt werden kann und unveränderlich bleibt, (z.B. 1, 2, "Ein Text"). • Variablen sind Speicherobjekte, deren Werte variabel sind, d.h. im Programm jederzeit neu belegt werden können, (z.B. 1, 2, "Ein Text"). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 66 / 98 8.2. Elementare Datentypen • Für die Variablen und Konstanten stehen unter VBA verschiedene Datentypen zur Verfügung. • Eine Variable bzw. Konstante erhält einen symoblischen Namen (z.B. x). • Der Datentyp einer Variablen wird – explizit vorgegegeben (z.B. durch den Schlüssel dim), – oder implizit durch Anhängen eines Kenners an den Variablennamen (z.B. text$). • Nicht deklarierte Variablen erhalten automatisch den Typ Variant. • Variablen vom Typ Variant sollten aufgrund der automatischen Typanpassung bei der Kommunikation mit der EXCEL-Oberfläche eingesetzt werden. • Eine Variable des Typs Variant kann verschiedene Datentypen durch Wertzuweisung erhalten. var = 1.23 => Fließkommazahl var = "Ein Text" => Text (mit "..." geklammert) var = 4 => Ganze Zahl Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 67 / 98 In nachfolgender Tabelle werden die elementaren VBA-Datentypen für 32Bit-Windows/EXCEL zusammengestellt. Datentyp Byte Boolean Bytes 1 2 Kenner Beschreibung 0 - 255 Wahrheitswert (-1:TRUE, ffff; 0:FALSE) Integer 2 % Ganze Zahl (z.B. n%) Long 4 & Ganze Zahl (z.B. n&) Single 4 ! Gleitkommazahl (7 Stellen genau Double 8 # Gleitkommazahl (16 Stellen genau) Currency 8 @ Währungswert (15 Stellen vor und 4 Stellen nach dem Dezimalpunkt) String 1/char Feste Länge. Max. 65400 Zeichen. String 1/char+10 $ Variable Länge. Max. 2 ∗ 109 Zeichen. Variant Object 4 Verweis auf ein Objekt (nur für Klassenmodule relevant, OOP) Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 68 / 98 8.2.1. Implizite Deklaration Schlüssel DefBool DefByte DefInt DefLng DefCur 8.2.2. Datentyp Boolean Byte Integer Long Currency Beispiel DefBool DefByte DefInt DefLng DefCur b c i-k l-n d Explizite statische Deklarationen Variablen werden mit der Anweisung Dim [Variable] as [Typ] deklariert. 1. Variablen Beispiel: Dim n As Integer 2. Felder Felder werden unter Vorgabe der Feldgrenzen deklariert. Dim F(1 to 3) As Double Indexbereich von 1 bis 3 Dim F(2) As Double Indexbereich von 0 bis 2 Dim F(2,2) As Double 2-fach indiziert, Indexbereich je von 0 bis 2 Mit der Anweisung Option Explicit wird eine explizite Deklaration erzwungen. Um Programmierfehler zu vermeiden, wird dies ausdrücklich empfohlen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 69 / 98 8.2.3. Explizite dynamische Deklarationen Die Dimensionen der statischen Felder wird zum Programmstart angelegt und kann zur Programmlaufzeit nicht mehr abgeändert werden. Mit dem Schlüssel ReDim kann die Dimension dynamischer Felder zur Laufzeit verändert werden. Schritt Deklaration Dimension Allokieren Zuweisung Beispiel Dim F() As Double nDim = 10 ReDim F(nDim) F(2) = 4 Anmerkung Das Feld wird als dynamisch vereinbart. Festlegen der Felddimension. Anlegen des Speichers. Zuweisung von 4 auf Feldelement 3. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 70 / 98 8.2.4. Benutzerdefinierte Datentypen, Strukturen Benutzerdefinierte (problemorientierte) Datentypen werden mit Type ... End Type deklariert. Dabei werden i.A. mehrere unterschiedliche Datentypen (elementare oder benutzerdefinierte) zu einem neuen Datentype, einer Struktur, zusammengefaßt. [Attribut] Type <Name> <Elementname 1> As Typ <Elementname 2> As Typ ... <Elementname n> As Typ End Type Beispiel: Daten eines Punktes Public Type Punkt RGB(1 to 3) As Integer ’ Farbwerte X (1 to 3) As Double ’ x,y,z Layer As Integer ’ Layernummer End Type Mit Public wird der Datentyp für alle Module bekannt gegeben, mit Private ist der Datentyp nur im Modul der Deklaration sichtbar. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 71 / 98 8.3. Operatoren Operator + * / ^ mod < > <= >= = <> not and or Beispiel x = y+2 x = y-2 x = y*2 x = y/2 x = 4^2 x = 3 mod 2 x = 2 < 3 x = 2 > 3 x = 2 <= 3 x = 2 >= 3 x = (2 = 3) x = (2 <> 3) x = not (2 < 3) x = (2<3) and (4<5) x = (2<3) or (4>5) Anmerkung Addition zweier Werte. Subtraktion zweier Werte. Multiplikation zweier Werte. Division zweier Werte. Potensierung (x=16). Rest aus Integerdivision (x=1). Kleiner-Operator (x=true). Größer-Operator (x=false). Kleiner-Gleich-Operator (x=true). Größer-Gleich-Operator (x=false). Gleichheits-Operator (x=false). Ungleichheits-Operator (x=true). Kleiner-Operator (x=false). UND-Operator (x=true). ODER-Operator (x=true). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 72 / 98 8.4. Intrinsic Funktionen Funktion Beispiel Anmerkung sqr x = sqr(4) Ziehen der Wurzel (x=2). abs x = abs(-4) Absolutbetrag (x=4). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 73 / 98 8.5. Verzweigungen 1. If-Then-Struktur if <Bedingung> Then <Anweisung> End If Beispiel: Bedingte Zuweisung a = 0 : i = 1 if i=1 then a = a+1 endif Die Anweisung wird nur dann ausgeführt, wenn die Bedingung den Wert true ergibt. Die Anweisung kann aus mehreren Teilanweisungen bestehen Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 74 / 98 2. If-Then-Else-Struktur If <Bedingung> Then <Anweisung 1> Else <Anweisung 2> End If Beispiel: Bedingte Zuweisung a = 0 : i = 1 if i=1 then a = a+1 else a = a-1 endif Die Anweisung 1 wird dann ausgeführt, wenn die Bedingung den Wert true ergibt. Ergibt die Bedingung den Wert false, so wird Anweisung 2 ausgeführt. Die Anweisung 1 bzw. 2 können i.A. aus mehreren Teilanweisungen bestehen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 75 / 98 3. If-Then-ElseIf-Else-Struktur If <Bedingung 1> Then <Anweisung 1> ElseIf <Bedingung 2> Then <Anweisung 2> Else <Anweisung 3> End If Beispiel: Bedingte Zuweisung a = 0 : i = 1 if i=1 then a = a+1 else if i=2 a = a+2 else a = a-1 endif Die Anweisung 1 wird dann ausgeführt, wenn die Bedingung 1 den Wert true ergibt. Ergibt die Bedingung 2 den Wert true und die Bedingung 1 den Wert false, so wird Anweisung 2 ausgeführt. Ergeben beide Bedingungen den Wert false, so wird die Anweisung 3 ausgeführt. Alle Anweisungen könne aus mehreren Teilanweisungen bestehen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 76 / 98 8.6. Schleifen 1. DO-While-Loop-Schleife Do While <Bedingung> <Anweisung> Loop Beispiel: Summe der ganzen Zahlen 1 bis 10 a = 0 : s = 0 Do While a < 10 a = a+1 s = s+a Loop Die Anweisungen werden solange ausgeführt, solange die Bedingung den Wert true ergibt. Die Bedingung wird vor Schleifendurchlauf geprüft. 2. DO-Until-Loop-Schleife Do Until <Bedingung> <Anweisung> Loop Beispiel: Summe der ganzen Zahlen 1 bis 10 a = 0 : s = 0 Do Until a = 10 a = a+1 s = s+a Loop Die Anweisungen werden solange ausgeführt, bis die Bedingung den Wert true ergibt. Die Bedingung wird vor Schleifendurchlauf geprüft. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 77 / 98 3. DO-Loop-While-Schleife Do <Anweisung> Loop While <Bedingung> Beispiel: Summe der ganzen Zahlen 1 bis 10 a = 0 : s = 0 Do a = a+1 s = s+a Loop While a< 10 Die Anweisungen werden solange ausgeführt, solange die Bedingung den Wert true ergibt. Die Bedingung wird nach Schleifendurchlauf geprüft. 4. DO-Loop-Until-Schleife Do <Anweisung> Loop Until <Bedingung> Beispiel: Summe der ganzen Zahlen 1 bis 10 a = 0 : s = 0 Do a = a+1 s = s+a Loop Until a = 10 Die Anweisungen werden solange ausgeführt, bis die Bedingung den Wert true ergibt. Die Bedingung wird nach Schleifendurchlauf geprüft. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 78 / 98 5. For-Schleife For i = start To ende _ Step Inkrement <Anweisung> Next [i] Beispiel: Skalarprodukt Dim a(2), b(2), s As Double a(0) = 1. : a(1) = 2. : a(2) = -1. b(0) = 1. : b(1) = 1. : b(2) = 0. S = 0. For i = 0 To 2 s = s + a(i)*b(i) Next Die Anweisungen werden solange ausgeführt, solange für den Schleifenindex gilt: i ∈ [istart , iende ]. Der Index i wird mit istart initialisiert und nach jedem Schleifendurchlauf um das Inkrement iInkrement (Standard=1) erhöht, bis die Bedingung i > iende erfüllt ist. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 79 / 98 6. Each-Schleife über Felder oder Collections For Each <Variable> In <Feld> <Anweisung> Next <Variable> Beispiel: Drucken eines Vektors Dim a(2), ai As Double a(0) = 1. : a(1) = 2. : a(2) = -1. For Each ai In a if ai = -1. Then exit for Debug.Print "ai : " + str(ai) Next ai Die Anweisungen werden solange ausgeführt, bis das Ende, d.h. das letzte Element im Feld erreicht ist. In vorliegendem Beispiel wird die Schleife mit dem Kommando exit for verlassen. Do-Schleifen werden analog mit exit do vorzeitig abgebrochen. Collections sind Objektlisten und werden im Teil OOP erläutert. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 80 / 98 8.7. Auswahl Select Case <Testausdruck> Case <Werteliste-1> <Anweisung-1> Case <Werteliste-2> <Anweisung-2> ... Case <Werteliste-n> <Anweisung-n> Case Else <Else-Anweisung> End Select Dim Zahl Zahl = 8 ’ Variable initialisieren. Select Case Zahl ’ Zahl auswerten. Case 1 To 5 ’ Zahl von 1 bis 5. Debug.Print "Zahl von 1 bis 5" ’ Das ist der einzige Case-Abschnitt, ’ der True ergibt. Case 6, 7, 8 ’ Zahl von 6 bis 8. Debug.Print "Zahl von 6 bis 8" Case Is 9 To 10 ’ Zahl ist 9 oder 10. Debug.Print "Größer als 8" Case Else ’ Andere Werte. Debug.Print "Außerhalb von 1 bis 10" End Select Mit der Select-Case Anweisung kann in Abhängigkeit vom Wert eines Testausdrucks (ein beliebiger numerischer Ausdruck oder Zeichenfolgenausdruck) in beliebig viele Einzelfälle verzweigt werden. Redundant zur Verzweigung mit if - elseif - else - endif (siehe Abschnitt 8.5). Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 81 / 98 8.8. Unterprogramme und Funktionen • Unterprogramme und Funktionen sind zusammengefaßte Codeblocke, die über eine Parameterliste und gegebenenfalls einen Rückgabewert mit dem aufrufenden Programm kommunizieren. • Der Geltungsbereich von Variablen eines Unterprogramms bzw. einer Funktion erstreckt sich nur auf den Codeblock des Unterprogramms bzw. der Funktion. [Public | Private] [Static] Function Name [(ArgListe)] [As Typ] [Anweisungen] [Name = Ausdruck] [Exit Function] [Anweisungen] [Name = Ausdruck] End Function Public Private Static Function test (x as double) as double test = x^2+1 End Function As Typ Exit Funktion ist in allen Modulen sichtbar. Funktion ist nur im lokalen Modul sichtbar. Variablen der Funktion erhalten ihre Werte bei Mehrfachaufruf. Datentyp der Rückgabevariablen Mit ExitFunction wird die Funktion beendet. Der Rücksprung ins aufrufende Programm erfolgt. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 82 / 98 8.9. Dateifunktionen Die Dateifunktionen werden in nachfolgender Tabelle zusammengestellt. Funktion Open Close Input Write Line Input EOF Beschreibung Öffnen einer Datei. Schließen einer Datei. Lesen eines Datenfeldes aus einer Datei. Schreiben eines Datenfeldes in eine Datei. Einlesen einer Zeile aus einer Datei. Erkennen des Dateiendes. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 83 / 98 8.9.1. Open Öffnen einer Datei Open <Dateiname> For <Modus> As #<Kanal> Parameter Beschreibung Dateiname Dateiname der zu öffnenden Datei. Modus Zugriffsmodus: Input (Öffnen zum Lesen aus Textdatei) Output (Öffnen zum Schreiben in Textdatei). Append (Anhängen eines Textes an Datei). Kanal Zugriffsnummer für weitere Dateizugriffe. 8.9.2. Close Schließen einer Datei Close #<Kanal> Parameter Beschreibung Kanal Zugriffsnummer der zu schließenden Datei. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 84 / 98 8.9.3. Eine Textdatei Eine Textdatei hat die folgenden Eigenschaften. • Zeichen- und zeilenweise Organisation. • Zeilenende wird unter WINDOWS mit cr lf abgeschlossen (chr(13) chr(10)), unter UNIX nur mit lf. • Textdateien sind als sequentielle Dateien zu betrachten. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 85 / 98 8.9.4. Input Lesen von Textfeldern aus einer Textdatei. Input #<Kanal>, <Variable-1>, <Variable-2>,...,<Variable-N> Parameter Kanal Variable-1 Variable-2 ... Variable-N Beschreibung Zugriffsnummer der zu lesenden Datei. Lesen des 1. Textfeldes. Lesen des 2. Textfeldes. ... Lesen des N. Textfeldes. Beispiel: Input #1, x, y, z ’Einlesen der Punktkoordinaten Mit Input wird die Liste aus der Datei gelesen, wobei die Variablen durch Kommas getrennt und die Strings in Anführungszeichen geschlossen werden. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 86 / 98 8.9.5. Write Schreiben von Textfeldern in eine Textdatei. Write #<Kanal>, <Variable-1>, <Variable-2>,...,<Variable-N> Parameter Kanal Variable-1 Variable-2 ... Variable-N Beschreibung Zugriffsnummer der zu lesenden Datei. Lesen des 1. Textfeldes. Lesen des 2. Textfeldes. ... Lesen des N. Textfeldes. Beispiel: Write #1, x, y, z ’Schreiben der Punktkoordinaten Mit Write wird die Ausgabeliste in die Datei geschrieben, wobei die Variablen durch Kommas getrennt und die Strings in Anführungszeichen geschlossen werden. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 87 / 98 8.9.6. EOF Erkennen des Dateiendes (End Of File). EOF(<Kanal>) Parameter Beschreibung Kanal Zugriffsnummer der zu lesenden Datei. Beispiel: Do While Not EOF(1) In der While-Schleife wird eine Datei eingelesen. EOF zeigt das Dateiende an. Die Schleifendurchläufe werden nach Erreichen des Dateiendes beendet. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 88 / 98 8.9.7. Line Input Einlesen einer Zeile aus einer Textdatei. Line Input <Kanal>, <Zeile>) Parameter Beschreibung Kanal Zugriffsnummer der zu lesenden Datei. Zeile Textvariable. Beispiel: Line Input #1, s$ In die Variable s$ wird die nächste Zeile der Textdatei aus Kanal 1 gelesen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 89 / 98 8.10. Klassenmodule Ein Klassenmodul enthält eine Klassevorlage, d.h. Objekteigenschaften und Objektmethoden. Dim x() As Double Dim n As Integer Dim l As Double ’ Vektorkomponenten ’ Vektordimension ’ Vektorlänge Private Sub Class_Initialize() Dim i As Integer n = 3 ReDim x(1 To n) For i = 1 To n x(i) = 0# Next i End Sub 8.10.1. Instanzen Instanzen einer Klasse werden generiert mit dem Operator new. Dim obj As new Klasse1 Dim obj As Klasse1 Set obj = new Klasse1 Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 90 / 98 8.10.2. Konstruktor Wird eine neue Instanz einer Klasse erzeugt, set obj = new MeinObjekt so wird zunächst der Konstruktor, die Objektfunktion Class_Initialize(), aufgerufen. Im Konstruktor sind einmalige Initialisierungen zu implementieren (z.B. Initialisierung der Objekteigenschaften, Anlegen dynamischen Speichers, Anlegen von Unterobjekten, etc.). 8.10.3. Destruktor Wir eine Instanz einer Klasse entfernt, freigegeben: set obj = nothing wird der Destruktor (), d.h. die Funktion Class_Terminate() aufgerufen. Diese Funktion wird genutzt für Aufräumarbeiten, z.B. zum Freigeben von Unterobjektinstanzen. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 91 / 98 8.11. Listen und Containerklassen Listen oder Containerklassen können Objekte dynamisch speichern (d.h. automatisches Speichermanagment). VBA liefert die Klasse Collection zur Speicherung von Objektinformationen (z.B. ChartObjects). Objekte können der Liste hinzugefügt werden (Add), sie können aus der Liste entfernt werden (Remove), sie können aus der Liste unter Vorgabe des Indexwertes oder der Objektbezeichnung abgerufen werden (Item). Die Anzahl der gespeicherten Objekte kann mit Count ermittelt werden. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 92 / 98 8.11.1. Die Add-Methode Mit der Methode Add wird ein Objekt der Liste hinzugefügt. Die Methode hat die folgenden Parameter. Operator Item Key Before After Beispiel: Anmerkung Zeiger auf Objekt Objektbezeichnung Objektbezeichnung für Einfügen vor Objektbezeichnung für Einfügen nach dim obj as MeinObjekt set obj = new MeinObjekt Liste.Add item:= obj key:="Objekt1" set obj = new MeinObjekt Liste.Add item:= obj key:="Objekt 2" Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 93 / 98 8.11.2. Die Remove-Methode Mit der Methode Remove wird ein Objekt aus der Liste entfernt. Die Methode hat die folgenden Parameter. Operator Anmerkung Index Index des zu löschenden Objekts oder Bezeichnung (d.h. key), siehe Add-Methode. Beispiel: Liste.Remove(2) Liste.Remove("Objekt 1") 8.11.3. Die Item-Methode Mit der Methode Item wird ein Objekt aus der Liste aufgerufen. Die Methode hat die folgenden Parameter. Operator Anmerkung Index Index des zu holenden Objekts oder Bezeichnung (d.h. key), siehe Add-Methode. Beispiel: dim set set set obj obj obj obj as MeinObjekt = Liste.Item(2) = Liste(2) = Liste.Item("Objekt 2") Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 94 / 98 8.12. Beispiel Newton-Verfahren 8.12.1. Der Algorithmus, 1-dimensionaler Fall Mit dem Newton-Verfahren kann iterativ eine Nullstelle einer Funktion f (x) bestimmt werden. Hierfür sind ein Startwert x0 , eine Genauigkeit und eine maximale Iterationsanzahl nx vorzugeben. Durch Nullsetzen einer Taylor-Reihenentwicklung um den Punkt xn kann die Iterationsformel des Newton-Verfahrens leicht abgeleitet werden. (3) Abbildung 34: Graphische f (xn+1 ) = f (xn ) + (xn+1 − xn ) · f 0 (xn ) = 0 ⇒ Darstellung des Newtonf (xn ) xn+1 = xn − 0 (n = 0, 1, 2, . . . ; x0 gegeben) Verfahrens f (xn ) Die Ableitung der Funktion f (x) kann durch den Differenzenquotienten angenähert werden. f 0 (x) = f (x + h/2) − f (x − h/2) mit h = 0.001 h Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] (4) Bauinformatik - I 95 / 98 8.12.2. Pseudo-Code Das Problem kann wie folgt in einem Pseudo-Code (umgangsprachliche Beschreibung) formuliert werden. 1. Wähle einen Startwert x. 2. Berechne f (x) 3. Falls |f (x)| < , dann Nullstelle gefunden. 4. Falls maximale Anzahl Iterationen erreicht, Ausgabe Fehlermeldung. 5. Berechne f 0 (x). 6. Falls |f 0 (x)| < , Ausgabe einer Fehlermeldung. 7. Nächsten x-Wert berechnen: x ⇐ x − f (x) f 0 (x) 8. Nächster Iterationsschritt mit Punkt 2. Anmerkung: Ein Problem tritt auf, wenn die Ableitung der Funktion verschwindet. Geometrisch: es gibt keinen Schnittpunkt zwischen Tangente und x-Achse. Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 96 / 98 8.12.3. Programmablaufplan Das Newtonverfahren geht aus von einem Startwert x. Dieser wird zunächst eingelesen. Die Iterationsschleife beginnt mit der Berechnung des Funktionswertes f (x). Darauf folgt die Nullabfrage. Falls der Absolutbetrag des Funktionswertes kleiner als die Genauigkeit ist, wird die Iterationsschleife abgebrochen und die Lösung ausgegeben. Es folgt die Prüfung der zulässigen Iterationsdurchläufe. Nach der Berechnung der Tangentensteigung f 0 (x) wird, falls diese nicht verschwindet, ein neuer x-Wert berechnet und ein neuer Schleifendurchlauf gestartet. Abbildung Programmablaufplan Newton-Verfahrens Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] 35: des Bauinformatik - I 97 / 98 8.12.4. Nassi-Schneidermann-Diagramm Im Nassi-Shneiderman-Diagramm ist der lineare Fluß des Programms von oben nach unten erkennbar. Es werden keine Sprünge (Goto) durch Verbinder provoziert. Im Fall des Erreichens der maximal vorgegebenen Iterationsanzahl und im Fall verschwindender Tangentensteigung wird das Programm direkt mit einer entsprechenden Meldung abgebrochen. Abbildung 36: NS-Diagramm des NewtonVerfahrens Universität Duisburg-Essen Bauwissenschaften / Fachgebiet Baustatik Dr. E. Baeck / eMail: [email protected] Bauinformatik - I 98 / 98