Bauinformatik 4. Semester Fachstudium - Pflichtmodul

Transcription

Bauinformatik 4. Semester Fachstudium - Pflichtmodul
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