8 im Bauwesen Markus Uhlmann 1
Zusammenfassung der 7. Vorlesung Programmierbeispiel: Lineare Bewegung eines Körpers Kollisionen Grafische Ausgabe 2
Inhalt / Planung der Vorlesung 1. Informationsdarstellung & -verarbeitung Grundlagen 2. Betriebssysteme, Programmiersprachen * 3. Einführung in Excel/VBA VBA 4. Struktur von (VBA) Programmen * 5. Logische Elemente I * 6. Logische Elemente II * 7. Beispielprogramm (Dynamik starrer Körper) * 8., Eingabe/Ausgabe * 9. Datenfelder * 10. Benutzerdefinierte * 11. Objektorientierte Programmiertechniken I * 12. Objektorientierte Programmiertechniken II * 13. Matlab I Matlab 14. Matlab II * 3
Inhalt der heutigen Vorlesung Variablendeklarationen: Gültigkeitsbereiche Variablentypen: Typenbestimmung Typenumwandlung Eingabe/Ausgabe : Textdateien, Binärdateien Dialogfenster 4
Variablen Definition und Eigenschaften: Variablen sind Platzhalter, die Werte temporär speichern. Der gespeicherte Wert kann unbegrenzt oft verändert werden. erfolgt mit bestimmten Schlüsselwörtern. Zuweisung eines Datentyps ist optional (Voreinstellung: Typ Variant). Globale und lokale Variablen. Syntaxregeln: - Erstes Zeichen muss ein Buchstabe sein. - Länge von max. 255 Zeichen. - Leerzeichen und Sonderzeichen.+-*/\() @?! nicht erlaubt. - Name darf keinem VBA-Schlüsselwort entsprechen. Syntax: Dim Static Public Private Name [As Typ] 5
Definition und Eigenschaften: sind nicht änderbare Daten. erfolgt durch das Schlüsselwort Const. Zuweisung eines Datentyps ist optional (wird kein Datentyp vereinbart, wird jener des Ausdrucks übernommen). Globale und lokale. Syntaxregeln wie bei Variablen. Syntax: [Public Private] Const Name [As Typ] = Ausdruck 6
Variablen/ en: en sind nicht ausführbare Code-Anweisungen, die Variablen oder benennen sowie deren Attribute (wie z.b. den Datentyp) definieren. en erfolgen im sabschnitt eines Moduls auf Modulebene und / oder innerhalb einer Prozedur auf Prozedurebene. Für en auf jeder Code-Ebene gibt es bestimmte Gültigkeitsbereiche. Bsp.: Dim x As Integer Const x As Integer = 2 7
Gültigkeit und Lebensdauer Schlüsselwort Ort der Eigenschaften Dim / Const Auf Prozedurebene Lokale Variable/Konstante Static Bei Variablen auf Prozedurebene Gültig nur innerhalb einer Prozedur, solange diese ausgeführt wird Inhalte sind bei jedem neuen Aufruf gelöscht (Variable) Statische und lokale Variable Gültig nur innerhalb einer Prozedur Variable behält Wert während gesamter Laufzeit 8
Gültigkeit und Lebensdauer Schlüsselwort Ort der Eigenschaften Dim /Const Auf Modulebene im sabschnitt des Moduls Gültig für das Modul, in dem erfolgt Wert bleibt während gesamter Laufzeit erhalten Public Auf Modulebene im sabschnitt des Moduls Globale Variable/ Konstante Gültig für das ganze Projekt Wert bleibt während gesamter Laufzeit erhalten Private Auf Modulebene im sabschnitt des Moduls Globale Variable/ Konstante Gültig für das Modul, in dem erfolgt (wie Dim) Wert bleibt während gesamter Laufzeit erhalten 9
Mehrfachdeklarationen Es können mehrere Variablen pro Zeile deklariert werden: Dim X as Integer, Y as Integer X,Y sind vom Typ Integer Achtung: Typangabe gilt für jede einzelne Variable Dim X, Y as Integer X ist vom Typ Variant! 10
Ganzzahltypen Byte 1 Byte Zahlen von 0 bis 255 Integer 2 Bytes Zahlen von - 32.768 bis + 32.767 Long 4 Bytes Zahlen von: - 2.147.483.648 bis + 2.147.483.647 Gleitkommatypen Single 4 Bytes Zahlen (7 Ziffern) von: -3,40 E+38 bis - 1,40 E-45 und + 1,40 E-45 bis + 3,40 E+38 Double 8 Bytes Zahlen (15 Ziffern) von: -1,798 E+308 bis - 4.941 E-324 und + 4.941 E-324 bis + 1,798 E+308 11
Währungstyp Currency (skalierte Ganzzahl) 8 Bytes 15 Vor- und 4 fixe Nachkommastellen Wahrheitstyp Boolean 2 Bytes Datentyp kann nur 2 Werte, True bzw. False, annehmen. Objekttyp Object 4 Bytes Verweis auf ein Objekt Zeichenkettentyp String Variabel: 10 Byte + 1 Byte pro Zeichen beliebige Zeichenkette (in Anführungszeichen ) 12
Datumstyp Date 8 Bytes speichert Datum und Uhrzeit Varianttyp Variant Num: 16 Bytes String: 22 + 1 Byte pro Zeichen Intern: Gleitkommazahl (wie Double) Datum: Wertebereich vom 1.1.100 bis 31.12.9999. Der Zahl 0 entspricht: 1.1.100. Uhrzeit: 0:00:00 bis 23:59:59. Die Uhrzeit wird in Bruchteilen eines Tages gespeichert. Bsp.: 12 00 Uhr 0,5 Standarddatentyp. Wird automatisch zugewiesen, wenn kein anderer Datentyp definiert ist. Typ Variant können alle anderen zugewiesen werden. Nachteil: Erhöhter Speicherbedarf, längere Rechenzeiten. 13
Datentyp bestimmen VBA Funktion VarType ermittelt Datentyp Syntax: VarType(variable) Rückgabewert VBA Variable Bedeutung 0 vbempty nicht initialisiert 1 vbnull keine gültigen Daten 2 vbinteger Ganzzahl 3 vblong lange Ganzzahl 4 vbsingle Gleitkommazahl 5 vbdouble lange Gleitkommazahl 6 vbcurrency Währung 7 vbdate Datum 8 komplette Liste der voreingestellten Typen: siehe VBA Hilfe 14
Datentyp bestimmen: Beispiel 15
Typumwandlungen Zwei Arten von Typumwandlung: implizit Umwandlung wird VBA überlassen explizit Umwandlung mit Hilfe von speziellen Funktionen 16
Typumwandlungen Implizite Typumwandlung: Umwandlung durch VBA -> Beispiele Bei der Verknüpfung von nicht kompatiblen, bricht Excel mit einem Fehler ab Bsp: a = 34 * hallo -> Laufzeitfehler! Bei kompatiblen wird stets der größere Datentyp auf die Ergebnisvariable übertragen Bsp: Variable x nicht explizit deklariert x = 333 + 123,45 x wird Datentyp Double zugewiesen Bei Verkettung durch & erhält die Variable den Typ String x = 333 & 123,45 x wird Datentyp String zugewiesen 17
Typumwandlungen Explizite Typumwandlung: Gezielte Änderung eines Datentyps Funktionen: Cbool,CByte,CDec,CDate,CCur,CDbl, CInt,CLng,CSng,CStr,CVar unterschiedliche Zieltypen Bsp: Dim i as Integer, a As Double a=cdbl(i) Argumente müssen vom Typ her kompatibel sein Vorsicht: Unterschiede zwischen CInt() und Int() CInt() erzeugt Ganzzahl durch Rundung Int() gibt ganzzahligen Anteil des Argumentes zurück 18
Bsp. Umwandlung Sub test() Dim f As Double, g As Double Dim s As String Dim i As Integer, j As Integer Dim e As Single f = 3.54444444444445 s = "6 e = f g = CDbl(s) i = CInt(f) j = Int(f) End Sub e=3.544444, g=6, i=4, j=3 19
Ein- / Ausgabe Möglichkeiten der Ein-/Ausgabe in VBA 1. Zellbereiche von Tabellen 2. Bildschirm a) spezielle Info-Fenster (MsgBox, InputBox) b) Ausgabe im Direktfenster 3. Dateien 20
Ein- / Ausgabe Einlesen : Aus Tabellenblatt einlesen: x = Cells(2, 4) Eingabe über die InputBox Funktion: Der eingegebene Wert wird zurückgegeben und einer Variablen zugewiesen. Syntax: Alter = InputBox( Wie alt sind Sie? ) 21
Ein- / Ausgabe Ausgabe : Schreiben in Tabellenblatt Cells(2, 1).Value = Ergebnis Ausgabe kann auch über die MsgBox Funktion erfolgen.. Syntax: MsgBox Sie sind & Alter & Jahre alt 22
Ein/Ausgabe in Dateien Ein-/Ausgabe in Dateien: 1. Öffnen einer Datei mit Open Anweisung 2. Schreiben/Lesen der Daten: Schreiben mit: Print, Write, Put Lesen mit: Input, Line Input, Get 3. Schließen der Datei mit Close Anweisung 23
Ein/Ausgabe in Dateien Öffnen von Dateien mit Open Syntax: Open filename For mode As [#]filenumber filename ist der Dateiname evtl. mit Pfad (String) mode ist der Zugriffsmodus: append, input, output, binary, random filenumber ist die VBA Identifikationsnummer der Datei Integer Wert zwischen 1 und 511 Weitere optionale Argumente: access, lock, reclength Bsp: Open test.txt For Output As #1 24
Ein/Ausgabe in Dateien Schreiben in Textdateien mit Write Syntax: Write #filenumber, [outputlist] filenumber ist die VBA Identifikationsnummer der Datei outputlist ist eine Liste von zu schreibenden Ausdrücken Falls outputlist leer: schreibt Leerzeile einzelne Ausdrücke in der Datei durch Kommas getrennt Bsp: Write #1, integer1, double2, string3 25
Ein/Ausgabe in Dateien Lesen von Textdateien mit Input # Syntax: Input #filenumber, [inputlist] filenumber ist die VBA Identifikationsnummer der Datei inputlist ist eine Liste von zu lesenden Ausdrücken erwartet durch Komma getrennte Ausdrücke in der Datei geeignet für Dateien, die mit Write # geschrieben wurden Bsp: Input #1, integer1, double2, string3 26
Ein/Ausgabe in Dateien Schließen von Dateien mit Close Syntax: Close #filenumber filenumber ist die VBA Identifikationsnummer der Datei 27
Ein/Ausgabe & Dateien: Beispiel Dateien Lesen und Schreiben (Quelltext: VBA) 28
Ein/Ausgabe & Dateien: Beispiel Ergebnis des Schreibens: Textdatei 3 5.66634543555455 21 Zeichen Wagenrücklauf (carriage-return) Zeilenvorschub (line-feed) 21 Byte Das Zeilenende ist unter Windows durch zwei Zeichen codiert. 29
Ein/Ausgabe in Dateien Funktion FreeFile: ermittelt nächste freie Dateinummer (Integer) Bsp: fileid = FreeFile 30
Ein/Ausgabe in Dateien Dialogfenster zur Dateiauswahl: filename = Application.GetOpenFileName(Optionen) oder filename = Application.GetSaveAsFileName(Optionen) Unterschied: Auswahl von nicht existierender Datei nur möglich mit GetSaveAsFileName Optionen: Dateifilter, etc. 31
Ein/Ausgabe in Dateien Binäre Ein-/Ausgabe: binäres Schreiben = kompaktere Dateien bei großen Datensätzen Öffnen der Datei mit: Open filename For Binary As [#]filenumber Schreiben: Put #filenumber,, outputlist Lesen: Get #filenumber,, inputlist 32
Ein/Ausgabe & Dateien: Beispiel Ergebnis des Schreibens: Binärdatei 10 Byte Integer: 2Byte Double: 8Byte Binärdatei ist deutlich effizienter durch vordefiniertes Datenformat. (Quelltext: VBA) 33