10 im Bauwesen Markus Uhlmann 1
Zusammenfassung der 9. Vorlesung Datenfelder (Arrays) Statische Felder Dynamische Felder Bestimmung der Grenzen Felder als Parameter für Prozeduren/Funktionen Beispiele: Matrix-Vektor Multiplikation Sortieren Dynamik multipler Kreiskörper Formulare in VBA 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. Datentypen, Eingabe/Ausgabe * 9. Datenfelder * 10. Benutzerdefinierte Datentypen * 11. Objektorientierte Programmiertechniken I * 12. Objektorientierte Programmiertechniken II * 13. Matlab I Matlab 14. Matlab II * 3
Inhalt der heutigen Vorlesung Benutzerdefinierte Datentypen Wieso zusätzliche Datentypen? Definition neuer Datentypen Verwendung von Variablen mit benutzerdefiniertem Typ Beispiele: Kundenkartei Komplexe Zahlen Partikelsimulation 4
Benutzerdefinierte Datentypen (UDT) Wann sind benutzerdefinierte Datentypen sinnvoll? Gruppierung mehrerer fundamentaler Daten in einem logischen Element Beispiel 1: Kundenkartei jeder Kunde hat Name (string), Geburtsdatum (date), Kundenummer (integer) Gruppierung erhöht Lesbarkeit des Programmes Alternativ: Verwendung von Arrays beschränkt auf einheitliche Datentypen Selbst bei einheitlichen Datentypen: Gruppierung oft sinnvoll Beispiel 2: komplexe Zahlen (2 x single) benutzerdefinierte Datentypen 5
Eigenschaften von UDTs Wie werden benutzerdefinierte Datentypen konstruiert? UDTs sind pseudo-datentypen welche aus anderen Datentypen konstruiert werden Im Wesentlichen werden die fundamentalen (eingebauten) Datentypen von VBA als Bausteine verwendet UDTs können aber auch andere UDTs als Bausteine beinhalten Erzeugung komplexer Datenstrukturen möglich. 6
Arbeiten mit UDTs Zwei notwendige Schritte: 1. Deklaration eines neuen Datentyps (Modulebene) 2. Deklaration von Variablen dieses Typs (beliebige Stelle) 7
Deklaration von UDTs Syntax: [Private Public] Type UDTname elementname [([subscripts])] As datatype... End Type Deklaration muss auf Modulebene erfolgen (nicht in Prozedur) Standardeinstellung: Public (Gültigkeit im ganzen Projekt!) Bei Arrayelementen sind subscripts (Grenzen) optional: [lowerbound] To upperbound Ohne Angabe von Grenzen () : dynamisches Feldelement Erlaubte Datentypen (datatype): entweder Byte, Boolean, Currency, Date, Double, Integer, Long, Object, Single, String, Variant, anderer UDT, oder beliebiger Objekt-Typ. 8
Deklaration von Variablen mit UDT Syntax: [Private Public Dim Static] varname As UDTName Deklaration erfolgt wie bei Variablen mit Standarddatentyp Variablen können Skalare oder Felder mit UDT sein Beispiel: Private Type Tperson name As String * 20 max. Laenge 20 Zeichen alter as Integer End Type Dim person1 As Tperson, p_vec(1 To N) As Tperson 9
Zugriff auf Variablen mit UDT Zugriff auf Elemente erfolgt durch Verkettung des Variablennamens und des Elementnamens, getrennt durch. Beispiel: Private Type Tperson name As String * 20 max. Laenge 20 Zeichen alter as Integer End Type Dim person1 As Tperson, p_vec(1 To N) As Tperson person1.name= Mueller person1.alter=32 Vektor p_vec(1).name= Schmidt p_vec(1).alter=46 10
Bsp. 1: Kundenkartei Eingabe von Kundendaten Speicherung in dynamischem Array aus UDT (string-stringboolean) (Quelltext: VBA) 11
Bsp. 2: UDT für komplexe Zahlen Komplexe Zahlen: c = a + b * i i= -1 Definition eines UDT, mit zwei Elementen: jeweils eine Gleitkommazahl für Real- und Imaginärteil Funktionen für : Zuweisung von Werten an Variable von komplexem Typ Berechnung des Absolutbetrages einer komplexen Zahl Berechnung der konjugiert komplexen Zahl 12
Bsp. 2: UDT für komplexe Zahlen Komplexe Zahlen: c = a + b * i i= -1 (Quelltext: VBA) 13
Bsp. 3: Bewegung von Partikeln Erweiterung des bisherigen Beispiels: Definition eines Datentyps particle welcher die verschiedenen Eigenschaften der Partikel aufnehmen kann Ersetzen der verschiedenen Felder durch einen Vektor vom Typ particle Zusätzliche Eigenschaft: Kollision/keine Kollision (Quelltext: VBA) Vorteil von speziellem Datentyp particle: Übersichtlicheres Programm, insbes. Übergabe an Prozeduren 14
Ausblick Thema der nächsten Vorlesung: Objekttechniken in VBA 15