4 Informationsverarbeitung im Bauwesen Markus Uhlmann basierend auf Folien von A. Brugger 1
Zusammenfassung der 3. Vorlesung Einführung in Excel/VBA Einführung in die Tabellenkalkulation Erste Schritte mit VBA Integrierte Entwicklungsumgebung Makros Programm Hello World! 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 (Schleifen) * 6. Logische Elemente II (Entscheidungen) * 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 Struktur von (VBA) Programmen Objekte in VBA Module Variablen / 4
Einführung in die VBA unterstützt prozedurales/strukturiertes VBA hat zwei wesentliche einer modernen Programmiersprache ereignisorientiert objektorientiert Ermöglicht Realisierung von komplexen Programmen, interaktive Projekte 5
Ereignisorientierte Beispiel: Programm wartet auf Mausklick Keine vorgeschriebene Reihenfolge Programm ist eine ungeordnete Sammlung von und 6
Was ist ein Objekt? Objekte sind logische, programmier- und steuerbare Einheiten Im Alltag: Objekt ~ Gegenstand Beispiel: Objekt Auto : Tankfüllstand, Schnelligkeit Methoden: Beschleunigen,Tanken 7
Objekte in VBA Es gibt etwa 150 Objekttypen (Klassen) in Excel, plus weitere Bibliotheken Alle Objekte sind hierarchisch gegliedert Objekte müssen gezielt angesprochen werden Sog. Container-Objekte beinhalten weitere Objekte 8
Objekt-Hierarchie Hierarchie der wichtigsten Objekte in Excel Containerobjekte Excel Application Arbeitsmappen Workbooks Tabellenblätter Zellen Bereiche Worksheets Cells Range Diagramme Excelfunktionen Chart Objects Worksheet- Functions Beispiel Objektzugriff Excel.Workbooks(1).Worksheets(1).Range("A1") 9
Methoden: Manipulieren von Objekten Mit Hilfe von Methoden lassen sich von Objekten bestimmen oder verändern: Bsp.: Methode ClearContents() löscht Formeln oder Daten aus Zellbereichen, jedoch nicht die Formatierung Methode Clear() entfernt alle Objekte (Rahmen, Füllfarbe, Werte, ) aus Zellbereichen 10
Beispiel: Containerobjekte, Methoden 11
Modul = Sammlung von sinnvoll: Gruppierung ähnlicher Erzeugen von Modulen mit Menü Einfügen Modul Ändern von Modul-Namen im fenster Menü Ansicht fenster 12
Aufbau eines strukturierten Moduls Übersichtlicher Aufbau Kommentare zum Modul steil Kommentare zur Prozedur steil Anweisungen, Kontrollstrukturen, Kommentare zur Funktion steil Anweisungen, Kontrollstrukturen, 13
Module im VBA Projekt Beispiel: Kommentar steil Prozedur steil Anweisungen 14
Dokumentation Dokumentation macht Programm nachvollziehbar Kommentare können überall im Programm stehen Kommentarzeichen: Hochkomma Beispiel: 'dieser Text dient der Dokumentation Text bis Zeilenende wird vom Interpreter ignoriert 15
(Explizite) Explizite Vereinbarung von Variablen, Arrays, Typen, Konstanten Beispiele: Dim Ergebnis1 As Double Gleitkommazahl mit hoher Genauigkeit Dim Ausgabetext2 As String Zeichenkette Die Namen der Variablen sollen eindeutig und aussagekräftig sein! 16
Implizite... Ist eine Variable nicht vereinbart, so nimmt diese den Typ des ersten Übergabewerts an! Beispiel: Übergibt man der nicht deklarierten Variablen als erstes eine Zeichenkette, so wird die Variable implizit als String vereinbart. 17
Implizite vermeiden Implizite Vereinbarung ist fehleranfällig, deswegen: Anweisung Option Explicit als erste Anweisung im Modul Variablendeklaration erzwingen: (in VBE) Extras->Optionen->Editor-> Variablendeklaration erforderlich 18
Variablendeklaration: Syntax Möglichkeiten: Dim Name [As Type] Public Name [As Type] Private Name [As Type] Static Name [As Type] Beispiel: Public i as Long deklariert i als Ganzzahl 19
Konstantendeklaration Syntax: [Private Public] Const Name [As Type] = Value Beispiel: Private Const Pi as Double=3.1415927 20
Gültigkeitsbereiche von Variablen Dim Public Standarddeklaration (Modulebene oder Prozedurebene) Modulebene Variable im gesamten Projekt bekannt Private Static Modulebene Variable nur im Modul bekannt (Standardeinstellung) Nur in Prozedur Variable behält Wert während der gesamten Laufzeit 21
Wichtige Datentypen Boolean (Boolescher Wert) True oder False Integer (Ganzzahl) -32.768 bis 32.767 Long (lange Ganzzahl) -2.147.483.648 bis 2.147.483.647.Single (Gleitkommazahl mit einfacher Genauigkeit) -3,402823E38 bis -1,401298E-45 für negative Werte 1,401298E-45 bis 3,402823E38 für positive Werte Double (Gleitkommazahl mit doppelter Genauigkeit) Date String Variant Wertebereich (2 Bytes) (2 Bytes) (4 Bytes) (4 Bytes) (8 Bytes) 1,79769313486231E308 bis -4,94065645841247E-324 für negative Werte 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte 1. Januar 100 bis 31. Dezember 9999 Zeichenfolgenlänge 1 bis ca. 65.400 Standardtyp für nicht-deklarierte Variablen Speicherbedarf (8 Bytes) (Länge der Zeichenkette*Byte) (16 Bytes) 22
und Mittel zur Strukturierung Einsatz z.b. bei wiederholt auftretenden Aufgaben Unterschied in der Art der Werteübergabe: Prozedur Übergabe/Rückgabe NUR durch Parameter Funktion Rückgabe durch Funktionsnamen 23
Syntax: Sub Name(Parameterliste) End Sub Parameterliste: [variable1,variable2,...] Variablen in Parameterliste können Eingangs- und/ oder Rückgabewerte der Prozedur sein 24
Beispiel Werteübergabe 25
Beispiel Werteübergabe Erläuterungen zum Beispiel Werteübergabe Aufruf der Subroutine mittels Call ist optional, dient aber der Übersichtlichkeit. In der aufgerufenen Subroutine können andere Namen in der Parameterliste stehen, entscheidend ist die Reihenfolge. wert1 wird a, wert2 wird b und damit Typ Single. Mehrfachdeklaration nicht möglich, d.h. a und b können in Sub rout2(a,b) nicht nochmals deklariert werden. 26
Modus der Werteübergabe VBA unterstützt zwei Modi der Werteübergabe: call by reference : (wie in FORTRAN) Speicheradresse der Parameter wird übergeben Änderung in Unterprogramm ändert Wert im übergeordneten Programm call by value : (wie in C) Wert der Parameter wird übergeben Unterprogramm legt getrennte Kopie der Variable an Änderung im Unterprogramm hat keinen Einfluß auf Wert im übergeordneten Programm VBA Standardmodus ist call by reference 27
Beispiel zu Modus Werteübergabe 28
/ Functions Rechenvorgänge, die immer wieder benötigt werden, können als programmiert werden. Das Ergebnis wird dem Funktionsnamen zugewiesen. Übersichtlichkeit, Modularisierung 29
Beispiel Lineare Interpolation y x2,y2 x1,y1 x m= y2 y1 y y1 = x2 x1 x x1 y = y1+ y2 x2 y1 ( x x1) x1 30
Beispiel Lineare Interpolation 31
Beispiel Lineare Interpolation Bemerkungen: Die programmierte Funktion kann direkt unter Excel benutzt werden Zeilenumbruch möglich mit _ Das Ergebnis wird dem Funktionsnamen zugewiesen Es findet keine Übergabe in der Parameterliste statt!! 32
Können Parameter von geändert werden? In VBA Programmen kommunizieren per Rückgabewert und möglicherweise durch Modifikation der Parameter Aber: bei Nutzung als benutzerdefinierte Funktion in Excel ist nur Rückgabe über Funktionswert zulässig! Beispiel: 33
Beispiel Winkelfunktionen Die Excel- benötigen das Argument, also den Winkel im Bogenmaß: Definition der Funktion SinGrad(α ) α= α 180 π 34
Aufgabe 2 Tabellenfunktionen 35