[Vorwort]
In diesem Tutorial verleihe ich euch den Einstieg und die Grundlagen von Visual Basic 2008. Ich versuche alles möglichst anfängerfreundlich und bildlich darzustellen. Wir werden mit Windows Forms-Anwendungen arbeiten. Gelingt euch etwas nicht sofort, gibt nicht auf und probiert einfach weiter. Jeder hat mal auf diese Art angefangen.
Es stammt hauptsächlich aus dem "Galileo Computing / <openbook>". Da ich mithilfe dessen Visual Basic lernte und es sehr gut beschrieben fand, vereinfachte ich das ganze, suchte nur die wichtigsten Dinge für Einsteiger aus und schrieb das Tutorial.
[Einführung]
Der wichtigste Vorteil von Visual Basic ist die einfache Erlernbarkeit der Sprache. VB ist bewusst an die englische Sprache angelehnt und benutzt Wörter anstelle von Symbolen. Beispiele sind And statt &&, Or statt ||,, Mod statt %. Da Visual Basic von Anfang an zum Einsatz mit einer integrierten Entwicklungsumgebung konzipiert wurde, können Visual-Basic-Programme in der Regel mit geringem Zeitaufwand erstellt werden.
Visual Basic ist eine objektorientierte Programmiersprache, deren neuere Versionen auf dem Microsoft .NET-Framework basieren.
Wir benutzen die Visual Basic 2008 Express Edition.

[Inhaltsverzeichnis]
Standard - Grundlagen
1. Neues Projekt erstellen
2. Das Eigenschaftsfenster
3. Die Toolbox / Steuerelemente
4. Das Codefenster
5. Strukturhilfe durch Kommentare
6. Starten, Ausführen und Beenden des Programms (Debugging)
7. Projekt speichern & Ausführbares Programm
8. Projekt schließen, Projekt öffnen
GRUNDLAGEN
1. Variablen und Datentypen
2. Operatoren
3. Verzweigungen
4. Schleifen
[Standard - Grundlagen]
Neues Projekt erstellen
Der Name ist eigentlich egal, passt ihn an euer Projekt an. Ich nenne es jetzt einfach Formular001.
Eigenschaftsfenster
Das Eigenschaftsfenster gibt den Startzustand von beispielsweise Steuerelementen an. Diese können sich während der Laufzeit des programmes durch codes ändern.
Es befindet sich auf der rechten Seite, wenn ihr ein neues Projekt erstellt.
Das sind die ganzen Eigenschaften:
Wichtige Eigenschaften für den Anfang, mit einigen werden wir uns beschäftigen:
| Eigenschaft | Beschreibung |
|---|---|
| (Name) | innerer Name, zur besseren Struktur |
| Backcolor | Hintergrundfarbe |
| BackgroundImage | Hintergrundbild |
| BackgroundImageLayout | Hintergrund anpassen |
| ControlBox | Icon & Option: Schließen, minimieren, maximieren entfernen |
| Cursor | Den Cursor anpassen, nur auf der Fläche des programmes |
| Enabled | erlauben/nicht erlauben, "On/Off" |
| Font | Schrift, Größe, anpassen |
| ForeColor | Schriftfarbe |
| FormBorderStyle | Formfläche verändern |
| ShowIcon | Icon innerhalb des programmes einfügen |
| ShowInTaskbar | Sichtbar in der Taskleiste Ja/Nein |
| StartPosition | Platzierung beim Start |
| Text | äußerer Name |
| TopMost | über allen anderen Flächen liegen Ja/Nein |
Wie das DesktopIcon eingefügt wird erzähle ich euch später.
Wenn man auf ein Label, Button o.ä klickt und die Eigenschaften betrachtet, verändern sich diese mit einem geringem Unterschied, da man diese Steuerelemente anders anpassen kann.
Damit wir eine gewisse Struktur beibehalten, benennen wir unsere Form, Button, Label ... dazu benutzen wir die Eigenschaft (Name), diese ist für die Benutzer nicht sichtbar.
Für uns zum Gebrauch:
| Objekt | Vorsilben |
|---|---|
| Button | cmd |
| Bezeichnungsfeld/Label | lbl |
| Textfeld/Text Box | txt |
| Optionsschaltfläche/Option Button | opt |
| Formular/Form | frm |
| Kontrollkästchen/Checkbox | chk |
Beispiel:
1. Ein Button (eigentlich: Command Button), der die Anzeige der Zeit auslösen soll, wird beispielsweise mit cmdZeit bezeichnet.
2. Ein Button, der das Programm schließen soll, wird mit cmdEnde bezeichnet.
Die Toolbox / Steuerelemente
Die Werkzeugsammlung (Toolbox) enthält die Steuerelemente für den Benutzer, mit denen er den Ablauf des Programms steuern kann. Sie werden vom Programm-Entwickler in das Formular eingefügt.
Für den Anfang sind folgende Steuerelemente wichtig:
| Steuerelement |
|---|
| Button |
| CheckBox |
| ComboBox |
| GroupBox |
| Label |
| LinkLabel |
| MenüStrip |
| RadioButton |
| Textbox |
| Timer |
Weiteres kommt in einem anderen Tutorial von mir, da es jetzt noch nicht passend ist.
Das Codefenster
Mit einem Doppelklick auf eine Schaltfläche, gelangt ihr zum Codefenster. Hier wird das Geschehen durch Programmcodes festgelegt.
Wenn wir einen Blick zum Cursor werfen, dann sehen wir oben in der Zeile stehen (Form1-Ereignisse)
Das bedeutet, darin steht was passieren soll. Ein Beispiel werdet ihr bei
Strukturhilfe durch Kommentare sehen.
Code über mehrere Zeilen
Das Zeichen _ (= Unterstrich) am Ende einer Zeile zeigt in Visual Basic an, dass die aktuelle Zeile in der nächsten fortgesetzt wird.
Strukturhilfe durch Kommentare
Bei längeren Programmen mit vielen Anweisungen gehört es zum guten Programmierstil, Kommentarzeilen zu schreiben. In diesen Zeilen werden einzelne Anweisungen oder auch längere Blöcke von Anweisungen erläutert, damit man selber oder auch ein anderer Programmierer sie später leichter versteht. Eine Kommentarzeile beginnt mit einem einfachen Hochkomma. Alle Zeichen bis zum Ende der Zeile werden als Kommentar angesehen und folglich nicht übersetzt oder ausgeführt. Kommentare gehören nicht zum eigentlichen Code d.h. bei der Ausführung wird dies nicht in Beachtung genommen.
Beispiel:
Code:
Public Class frm001
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub cmdEnde_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdEnde.Click
[COLOR="Lime"]'Ich bin ein Kommentar und befinde mich im Button (cmdEnde) Ereignis
'Anwendung schließen[/COLOR]
[COLOR="Red"]Me.Close()[/COLOR]
[COLOR="lime"] 'Me bezieht sich auf das aktuelle Fenster in dem ich mich befinde, in dem Fall Form1 [/COLOR]End Sub
End Class
Rot = Ereignis
Starten, Ausführen und Beenden des Programms (Debugging)
Programm starten
Nach dem Einfügen der Steuerelemente und dem Erstellen der Ereignisprozeduren ist das Programm fertig und kann gestartet werden. Dazu wird der Start-Button in der Symbolleiste (dreieckiger Pfeil nach rechts) betätigt. Alternativ startet man das Programm über die Funktionstaste
oder den Menüpunkt Debuggen • Starten. Das Formular erscheint, das Betätigen der Buttons führt zum programmierten Ergebnis.Programm beenden
Zur regulären Beendigung eines Programms ist der Button mit der Aufschrift Ende vorgesehen. Möchte man ein Programm während des Verlaufs abbrechen, kann man auch den End-Button in der Symbolleiste (Quadrat) betätigen. Außerdem kann man, sofern vorhanden, den aus vielen Windows-Anwendungen bekannten Button X oben rechts betätigen; dieser erscheint nur, wenn die Eigenschaft ControlBox des Formulars auf True steht.
Siehe Eigenschaften.
Fehler
Mit dem Testen/Debugging findet man Fehler heraus, bevor das Programm vollständig ist.
Tritt während der Ausführung eines Programms ein Fehler auf, so wird dies angezeigt und das Codefenster zeigt die entsprechende Ereignisprozedur sowie die fehlerhafte Zeile an. Man beendet das Programm, korrigiert den Code und startet das Programm wieder.
Wann ihr das debugging einsetzt, bleibt euch überlassen.
Projekt speichern & Ausführbares Programm
.exe-Datei
Um euer Projekt zu speichern, geht ihr in der MenüLeiste rechts neben der Speicherdiskette auf "Alle speichern". Jetzt legt ihr den Pfad fest.
Ausführbares Programm/ .exe-Datei: Menüpunkt • "Erstellen" und gleich das erste "... erstellen". Diese findet ihr nun im Speicherverzeichnis, bin, Release und dort die "Anwendung.
Beispiel (bei mir):
C:\Users\Johann\Desktop\Formular001\Formular001\bi n\Release
Projekt schließen, Projekt öffnen
Projekt schließen
Man kann ein Projekt schließen über den Menüpunkt Datei • Projekt schließen. Falls man Veränderungen vorgenommen hat, wird man gefragt, ob man diese Änderungen speichern möchte.
Möchte man die Projektdaten sicherheitshalber zwischendurch speichern, so ist dies über den Menüpunkt Datei • Alle speichern möglich.
Projekt öffnen
Zum Öffnen eines vorhandenen Projekts wählt man den Menüpunkt Datei • Projekt öffnen. Im darauf folgenden Dialogfeld Projekt öffnen wählt man zunächst das gewünschte Projektverzeichnis aus und anschließend die gleichnamige Datei mit der Endung .sln.
[GRUNDLAGEN]
Variablen und Datentypen
Variablen dienen zur vorübergehenden Speicherung von Daten, die sich während der Laufzeit eines Programms ändern können. Eine Variable besitzt einen eindeutigen Namen, unter dem sie angesprochen wird.
Namen, Werte
Namensregeln
Für die Namen von Variablen gelten in Visual Basic die folgenden Regeln:
• Sie beginnen mit einem Buchstaben.
• Sie können nur aus Buchstaben, Zahlen und einigen wenigen Sonderzeichen (z. B. dem Unterstrich _ ) bestehen.
• Innerhalb eines Gültigkeitsbereichs darf es keine zwei Variablen mit dem gleichen Namen geben
Variablen erhalten ihre Werte durch Zuweisung per Gleichheitszeichen. Einer Variablen sollte vor ihrer ersten Benutzung ein Wert zugewiesen werden. Dadurch werden Programme eindeutiger, lesbarer und fehlerfreier
Deklarationen
Neben dem Namen besitzt jede Variable einen Datentyp, der die Art der Information bestimmt, die gespeichert werden kann. Der Entwickler wählt den Datentyp danach aus, ob er Text, Zahlen ohne Nachkommastellen, Zahlen mit Nachkommastellen oder z. B. Datumsangaben speichern möchte.
Auswahl des Datentyps
Außerdem muss er sich noch Gedanken über die Größe des Bereichs machen, den die Zahl oder der Text annehmen könnte. Er sollte versuchen, den Datentyp mit dem geringsten Speicherbedarf zu verwenden; dieser gewährleistet gleichzeitig auch eine schnellere Verarbeitung. Gleich zeige ich die Datentypen.
Variablen sollten in Visual Basic immer mit einem Datentyp deklariert werden. Dies beugt Fehlern und unnötig hohem Speicherbedarf vor.
Datentypen
Die folgende Liste enthält die wichtigsten von Visual Basic unterstützten Datentypen sowie deren Speicherbedarf und Wertebereich.
• Datentyp Boolean, Speicherbedarf plattformabhängig, Wertebereich True oder False (»Wahr« oder »Falsch«)
• Datentyp Byte, Speicherbedarf 1 Byte, Wertebereich von 0 bis 255
• Datentyp Char, Speicherbedarf 2 Bytes, Wertebereich von 0 bis 65536
• Datentyp Date, Speicherbedarf 8 Bytes, Wertebereich vom 1. Januar 1 bis zum 31. Dezember 9999
Double
• Datentyp Double, Speicherbedarf 8 Bytes, Gleitkommazahl mit doppelter Genauigkeit, Wertebereich von –1,79769313486231570E+308 bis 4,94065645841246544E-324 für negative Werte und von 4,94065645841246544E-324 bis 1,79769313486231570E+308 für positive Werte
Integer
• Datentyp Integer, Speicherbedarf 4 Bytes, Wertebereich von –2.147.483.648 bis 2.147.483.647
• Datentyp Long, Speicherbedarf 4 Bytes, lange Ganzzahl, Wertebereich von –9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807
• Datentyp Object, Speicherbedarf 4–8 Bytes, Wertebereich beliebig
• Datentyp Short, Speicherbedarf 2 Bytes, Wertebereich von –32,768 bis 32,767
• Datentyp Single, Speicherbedarf 4 Bytes, Gleitkommazahl mit einfacher Genauigkeit; Wertebereich: 3,4028235E+38 bis –1,401298E-45 für negative Werte und 1,401298E-45 bis 3,4028235E+38 für positive Werte
String
• Datentyp String, Speicherbedarf plattformabhängig, Zeichenkette mit variabler Länge
• benutzerdefinierte Struktur, Speicherbedarf abhängig von den Elementen, jedes Element hat seinen eigenen Datentyp und damit seinen eigenen Wertebereich
Beispiel:
Im folgenden Beispiel werden Variablen der wichtigsten Typen deklariert, mit Werten versehen und in einem Label angezeigt.
Code:
Public Class frm001
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub cmdAnzeige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnzeige.Click
Dim Bo As Boolean
Dim By As Byte
Dim Ch As Char
Dim Dt As Date
Dim Db As Double
Dim It As Integer
Dim Lg As Long
Dim Sh As Short
Dim Sg As Single
Dim St As String
Bo = True
By = 200
Ch = "a"
Dt = "15.12.2007"
Db = 1 / 7
It = 2000000000
Lg = 3000000000
Sh = 30000
Sg = 1 / 7
St = "Zeichenkette"
lblAnzeige.Text = _
"Boolean: " & Bo & vbCrLf & _
"Byte: " & By & vbCrLf & _
"Char: " & Ch & vbCrLf & _
"Double: " & Db & vbCrLf & _
"Date: " & Dt & vbCrLf & _
"Integer: " & It & vbCrLf & _
"Long: " & Lg & vbCrLf & _
"Short: " & Sh & vbCrLf & _
"Single: " & Sg & vbCrLf & _
"String: " & St
End Sub
End Class
Merke:
Mehrere Variablen des gleichen Typs können, durch Kommata getrennt, in einer Zeile deklariert werden (z. B. Dim x, y As Integer).Quote:
• Variablen werden mit Dim ... As ... deklariert.
Wertebereich
• Bei den Zahlen-Datentypen führt eine Über- oder Unterschreitung des Wertebereichs zu einer Fehlermeldung.
Genauigkeit
• Die Datentypen Single und Double für Zahlen mit Nachkommastellen unterscheiden sich in ihrer Genauigkeit.
• Werte für Zeichen, Zeichenketten und Datumsvariablen müssen in doppelten Anführungszeichen angegeben werden.
Operatoren
Zum Zusammensetzen von Ausdrücken werden in Visual Basic, wie in jeder anderen Programmiersprache auch, Operatoren verwendet.
Priorität
Es gibt verschiedene Kategorien von Operatoren. Vorrangregeln (Prioritäten) sind für die Reihenfolge der Abarbeitung zuständig, falls mehrere Operatoren innerhalb eines Ausdrucks verwendet werden. Diese Vorrangregeln sind weiter unten in diesem Abschnitt angegeben. Falls man sich bei der Verwendung dieser Regeln nicht sicher ist, so empfiehlt es sich, durch eigene Klammersetzung die Reihenfolge explizit festzulegen.
Arithmetische Operatoren
Rechen-Operatoren
Arithmetische Operatoren dienen zur Durchführung von Berechnungen. Die folgende Tabelle listet die arithmetischen Operatoren auf:
| Operator | Beschreibung |
|---|---|
| + | Addition |
| - | Subtraktion oder Negation |
| * | Multiplikation |
| / | Division |
| \ | Ganzzahl-Division |
| ^ | Potenzierung |
| Mod | Modulo |
Die Ganzzahl-Division wird in zwei Schritten durchgeführt. Im ersten Schritt werden Dividend und Divisor einzeln gerundet. Im zweiten Schritt werden die beiden verbliebenen Zahlen geteilt, anschließend werden die Ziffern nach dem Komma abgeschnitten.
Beispiele:
| Ausdruck | Ergebnis |
|---|---|
| 19 / 4 | 4.75 |
| 19 \ 4 | 4 |
| 19 \ 4.6 | 3 |
| 19.5 \ 4.2 | 5 |
Modulo
Der Modulo-Operator Mod berechnet den Rest einer Division.
Beispiele:
| Ausdruck | Ergebnis |
|---|---|
| 19 Mod 4 | 3 |
| 19.5 Mod 4.2 | 2.7 |
^ (hoch)
Zur Potenzierung einer Zahl dient der Operator ^ (hoch).
Beispiele:
| Ausdruck | Ergebnis |
|---|---|
| 2 ^ 5 | 32 |
| 3 ^ 2 ^ 3 | 729 |
| 2 ^ 5.4 | -42.2242531447326 |
| (-2) ^ 5 | -32 |
Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig und werden von links nach rechts in der Reihenfolge ihres Auftretens ausgewertet. Dasselbe gilt für Additionen und Subtraktionen, die zusammen in einem Ausdruck auftreten:
Klammern
Mit Klammern kann diese Rangfolge außer Kraft gesetzt werden, damit bestimmte Teilausdrücke vor anderen Teilausdrücken ausgewertet werden. In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch wieder die normale Rangfolge der Operatoren.
Vergleichsoperatoren
Vergleich
Vergleichsoperatoren dienen dazu festzustellen, ob bestimmte Bedingungen zutreffen oder nicht. Das Ergebnis nutzt man unter anderem zur Ablaufsteuerung von Programmen.
Die folgende Tabelle führt die Vergleichsoperatoren auf:
| Operator | Beschreibung |
|---|---|
| < | kleiner als |
| <= | kleiner als oder gleich |
| > | größer als |
| => | größer als oder gleich |
| = | gleich |
| <> | ungleich |
Beispiele:
| Ausdruck | Ergebnis |
|---|---|
| 5 > 3 | True |
| 3 = 3.2 | False |
| 5 + 3 * 2 >= 12 | False |
Like
Darüber hinaus gibt es noch den Operator Like, der zum Mustervergleich dient. Dabei kann man unter anderem die Platzhalter * (eines oder mehrere Zeichen) und ? (genau ein Zeichen) einsetzen.
Beispiele:
| Ausdruck | Ergebnis |
|---|---|
| "abxba" Like "a*a" | True |
| "abxba" Like "a?a" | False |
| "aba" Like "a?a" | True |
| "asdlfigc" Like "a?d?f*c" | True |
Logische Operatoren
Logik
Logische Operatoren dienen dazu, mehrere Bedingungen zusammenzufassen. Das Ergebnis nutzt man ebenfalls unter anderem zur Ablaufsteuerung von Programmen.
Liste:
| Operator | Beschreibung | Das Ergebnis ist True, wenn... |
|---|---|---|
| Not | Nicht | ... der Ausdruck False ist |
| And | Und | ...beide Ausdrücke True sind |
| Or | Inklusives Oder | ...mindestens ein Ausdruck True ist |
| Xor | Exklusives Oder | ...genau ein Ausdruck True ist |
Beispiele:
Es seien die Variablen A = 1, B = 3 und C = 5 gesetzt. Die folgenden Ausdrücke ergeben dann jeweils:
| Ausdruck | Ergebnis |
|---|---|
| Not (A < B) | False |
| (B > A) And (C > B) | True |
| (B < A) Or (C < B) | False |
| (B < A) Xor (C > B) | True |
Eine Zusammenstellung der Funktionsweise der logischen Operatoren liefert auch die folgende Wahrheitstabelle:
| Ausdruck1 | Ausdruck2 | Not | And | Or | Xor |
|---|---|---|---|---|---|
| True | True | False | True | True | False |
| True | False | False | False | True | True |
| False | True | True | False | True | True |
| False | False | True | False | False | False |
Verkettungsoperator
Umwandlung in String
Der Operator & dient zur Verkettung von Zeichenfolgen. Ist einer der Ausdrücke keine Zeichenfolge, sondern eine Zahl oder Datumsangabe, so wird er in einen String verwandelt. Das Gesamtergebnis ist dann wiederum eine Zeichenfolge.
Beispiel:
Code:
Public Class frm001
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub cmdAnzeige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnzeige.Click
Dim a As String
Dim s As Single
Dim d As Date
d = "5.11.2007"
s = 4.6
a = "t " & s & " " & d
lblAnzeige.Text = a
End Sub
End Class
Zuweisungsoperatoren
Zeichen =
Der einfachste Zuweisungsoperator, das Gleichheitszeichen, wurde bereits genutzt. Es gibt zur Verkürzung von Anweisungen noch einige weitere Zuweisungsoperatoren:
| Operator | Beispiel | Ergebnis |
|---|---|---|
| = | x = 7 | x erhält den Wert 7 |
| += | x += 5 | der Wert von x wird um 5 erhöht |
| -= | x -= 5 | der Wert von x wird um 5 verringert |
| *= | x *= 3 | der Wert von x wird auf das Dreifache erhöht |
| /= | x /= 3 | der Wert von x wird auf ein Drittel verringert |
| \= | x \= 3 | der Wert von x wird auf ein Drittel verringert, Nachkommastellen werden abgeschnitten |
| ^= | x ^= 3 | der Wert von x wird auf x hoch 3 erhöht |
| &= | z &= "abc" | die Zeichenkette z wird um den Text »abc« verlängert |
Rangfolge der Operatoren
Priorität
Enthält ein Ausdruck mehrere Operationen, so werden die einzelnen Teilausdrücke in einer bestimmten Rangfolge ausgewertet und aufgelöst, die als Rangfolge bzw. Priorität der Operatoren bezeichnet wird. Es gilt die folgende Rangfolge:
| Operator | Beschreibung |
|---|---|
| ^ | Exponentialoperator |
| - | negatives Vorzeichen |
| *, / | Multiplikation, Division |
| \ | Ganzzahl-Division |
| Mod | Modulo |
| +, - | Addition, Subtraktion |
| & | Verkettung |
| =, <>, <, >, <=, >=, Like | Vergleichsoperatoren (das Zeichen = steht für den Vergleich, nicht für die Zuweisung |
| Not | logisches NICHT |
| And | logisches UND |
| Or | logisches ODER |
Die Operatoren, die in der Tabelle weiter oben stehen, haben die höchste Priorität.
Klammern
Wie schon bei den arithmetischen Operatoren erwähnt: Mit Klammern kann diese Rangfolge außer Kraft gesetzt werden, damit bestimmte Teilausdrücke vor anderen Teilausdrücken ausgewertet werden. In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch wieder die normale Rangfolge der Operatoren.
Verzweigungen
Der Programmcode wurde bisher rein sequentiell abgearbeitet, d. h. eine Anweisung nach der anderen. Kontrollstrukturen ermöglichen eine Steuerung dieser Reihenfolge. Die Kontrollstrukturen unterteilen sich in Verzweigungen und Schleifen. Verzweigungen gestatten dem Programm, in verschiedene alternative Anweisungsblöcke zu verzweigen.
Es gibt die beiden Verzweigungsstrukturen If...Then...Else und Select Case.... Diese Auswahlmöglichkeiten übergeben aufgrund von Bedingungen die Programmausführung an einen bestimmten Anweisungsblock. Bedingungen werden mithilfe der bereits vorgestellten Vergleichsoperatoren erstellt.
Seltener genutzt werden außerdem noch die Auswahlfunktionen IIf() und Choose().
Einzeiliges If…Then…Else
Das einzeilige If...Then...Else hat folgenden Aufbau:
Code:
If Bedingung Then Anweisungen1 [ Else Anweisungen2 ]
Die Bedingung wird ausgewertet, sie ist entweder wahr oder falsch (True oder False). Ist das Ergebnis der Auswertung True, so wird der Then-Teil mit den Anweisungen1 ausgeführt. Ist das Ergebnis der Auswertung False und gibt es einen Else-Teil, so wird der Else-Teil mit den Anweisungen2 ausgeführt.
Dabei kann es sich sowohl um eine einzelne Anweisung als auch um mehrere Anweisungen handeln, die dann durch einen Doppelpunkt (: ) voneinander getrennt sind. In jedem Fall muss der gesamte Block in einer Zeile untergebracht werden. If-Strukturen können auch ineinander verschachtelt werden.
If…Then…Else-Block
Mehrzeilig, Block
Bei einfachen Entscheidungen und einzelnen Anweisungen ist das einzeilige If geeignet. Sobald mehrere Anweisungen auszuführen sind, wird der Programmcode schnell unübersichtlich. Für diese Zwecke ist ein If...Then...Else -Block wesentlich besser geeignet. Der Block hat folgenden Aufbau:
Code:
If Bedingung1 Then Anweisungen1 [ ElseIf Bedingung2 Anweisungen2 ] ... [ Else AnweisungenX ] End If
Select Case
Mehrfachauswahl
Die Anweisung Select Case ... kann als Alternative zum If...Then ...Else -Block gelten. Sie vereinfacht eine Mehrfachauswahl, wenn nur ein Wert untersucht werden muss, und ist wie folgt aufgebaut:
Code:
Select Case Testausdruck
[ Case Ausdrucksliste1
Anweisungen1 ]
[ Case Ausdrucksliste2
Anweisungen2 ] ...
[ Case Else
AnweisungenX ]
End Select
To, Is
Die Anweisung Select Case ... verwendet nur einen Testausdruck, der am Beginn der Struktur ausgewertet wird. Sein Wert wird anschließend der Reihe nach mit den Werten der Ausdruckslisten verglichen. Eine Ausdrucksliste kann aus mehreren Ausdrücken oder einer Bereichsangabe mit dem Schlüsselwort To bestehen. Ein Ausdruck kann aus einem Wert oder einer Bedingung mit dem Schlüsselwort Is bestehen.
End Select
Bei der ersten Übereinstimmung wird der zugehörige Anweisungsblock ausgeführt und dann mit der nächsten Anweisung hinter dem End Select fortgefahren.
Case Else
Der optionale Anweisungsblock hinter dem Case Else wird ausgeführt, falls vorher keine Übereinstimmung gefunden wurde.
Im nachfolgenden Programm werden ebenfalls vier verschiedene Fälle geprüft. Trifft keiner dieser Fälle zu, wird der Case Else-Zweig ausgeführt:
Code:
Public Class frm001
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub cmdAnzeige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnzeige.Click
Dim x As Integer
x = 16
Select x
Case 1, 3, 5, 7, 9
lblAnzeige.Text = "Ungerade, Einstellig"
Case 2, 4, 6, 8
lblAnzeige.Text = "Gerade, Einstellig"
Case Is < 1, Is > 20
lblAnzeige.Text = _
"Kleiner Eins oder größer 20"
Case 11 To 15
lblAnzeige.Text = "Größer gleich 11 " _
& "und kleiner gleich 15"
Case Else
lblAnzeige.Text = _
"Größer 15 und kleiner 21"
End Select
End Sub
End Class
Funktion IIf
Liefert Wert
Die Funktion IIf() ähnelt dem einzeiligen If...Then...Else, liefert allerdings im Unterschied zu diesem direkt einen Wert zurück. Ihre Syntax lautet:
Code:
IIf(Bedingung, True-Ausdruck, False-Ausdruck)
Code:
Public Class frm001
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub cmdAnzeige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnzeige.Click
Dim x As Integer
Dim y As Integer
x = 5
y = 3
lblAnzeige.Text = IIf(x > y, x, y)
End Sub
End Class
Funktion Choose
Wert aus Liste
Die Funktion Choose() gibt den Wert aus einer Liste zurück, dessen Position dem Indexwert entspricht. Die Positionen in der Liste beginnen allerdings bei 1, nicht bei 0. Die Syntax lautet:
Code:
Choose(Index, Ausdruck1, [Ausdruck2] ...)
Code:
Public Class frm001
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub cmdAnzeige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnzeige.Click
Dim x As Integer
x = 2
lblAnzeige.Text = Choose(x, "US Dollar", _
"Pfund", "Euro")
End Sub
End Class
Der Wert x = 2 führt zur Ausgabe von »Pfund«.
Schleifen
Schleifen werden in Programmen häufig benötigt. Sie ermöglichen den mehrfachen Durchlauf von Anweisungen. Darin liegt eine besondere Stärke der Programmierung allgemein: die schnelle wiederholte Bearbeitung ähnlicher Vorgänge.
Es gibt die Schleifenstrukturen: Do...Loop, For...Next, For Each... In... und With.
Mithilfe der ersten beiden Strukturen steuert man die Wiederholungen eines Anweisungsblocks (die Anzahl der Schleifendurchläufe). Dabei wird der Wahrheitswert (True/False) eines Ausdrucks (der Schleifenbedingung) oder der Wert eines numerischen Ausdrucks (Wert des Schleifenzählers) benötigt.
Die Schleife For Each...In... wird meist bei Feldern oder Collections (Auflistungen) eingesetzt. Die Anweisung With dient zur Steuerung einer besonderen Schleife mit nur einem Durchlauf.
For ... Next
Falls die Anzahl der Schleifendurchläufe bekannt oder vor Beginn der Schleife berechenbar ist, sollte man die For... Next-Schleife verwenden. Ihr Aufbau sieht wie folgt aus:
Code:
For Zähler = Anfang To Ende [ Step = Schritt ] [ Anweisungen ] [ Exit For ] [ Anweisungen ] Next [ Zähler ]
Step
Die Zahlen-Variable Zähler wird zunächst auf den Wert von Anfang gesetzt. Nach jedem Durchlauf wird sie um den Wert von Schritt verändert, also vergrößert oder verkleinert. Falls Step = Schritt nicht angegeben wurde, wird die Variable um 1 vergrößert. Der neue Wert von Zähler wird mit dem Wert von Ende verglichen.
• Falls die Schrittweite positiv ist und der Wert von Zähler nicht größer als der Wert von Ende ist, wird die Schleife wiederum durchlaufen.
• Falls die Schrittweite negativ ist und der Wert von Zähler nicht kleiner als der Wert von Ende ist, wird die Schleife ebenfalls wiederum durchlaufen.
• Falls die Schrittweite positiv ist und der Wert von Zähler größer als der Wert von Ende ist oder falls die Schrittweite negativ ist und der Wert von Zähler kleiner als der Wert von Ende ist, wird die Schleife beendet.
Exit For
Die Anweisung Exit For kann eingesetzt werden, um die Schleife aufgrund einer speziellen Bedingung sofort zu verlassen.
In dem folgenden Programm werden durch Aufruf von vier Buttons vier unterschiedliche Schleifen durchlaufen:
Schleife1
Code:
Public Class frm001
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub cmdSchleife1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSchleife1.Click
Dim i As Integer
lblAnzeige.Text = ""
For i = 3 To 7
lblAnzeige.Text &= i & vbCrLf
Next
End Sub
End Class
• Als Zählervariable dient i.
• Die Schleife wird erstmalig mit i = 3 und letztmalig mit i = 7 durchlaufen.
• Es ist keine Schrittweite angegeben, also wird als Schrittweite 1 genommen.
• Statt Next hätte man zur größeren Deutlichkeit auch Next i schreiben können.
Schleife2
Code:
Dim i As Integer
lblAnzeige.Text = ""
For i = 3 To 11 Step 2
lblAnzeige.Text &= i & vbCrLf
Next
Schleife3
Code:
Dim i As Integer
lblAnzeige.Text = ""
For i = 7 To 3 Step -1
lblAnzeige.Text &= i & vbCrLf
Next
Schleife4
Code:
Dim d As Double
lblAnzeige.Text = ""
For d = 3.5 To 7.5 Step 1.5
lblAnzeige.Text &= d & vbCrLf
Next
Ergebnis bei der Ausführung (Buttonklick):
Schleife1 (Button1, cmdSchleife1)
Schleife2 (Button2, cmdSchleife2)
Schleife3 (Button3, cmdSchleife3)
Schleife4 (Button4, cmdSchleife4)
Do ... Loop
Steuerung über Bedingung
Ist die Anzahl der Schleifendurchläufe nicht bekannt bzw. vor Beginn der Schleife nicht berechenbar, so sollte man die Do ... Loop-Schleife verwenden. Es gibt sie in fünf verschiedenen Varianten:
While
• Do While...Loop: Prüft die Bedingung zum Weiterlaufen der Schleife am Anfang der Schleife.
• Do...Loop While: Prüft die Bedingung zum Weiterlaufen der Schleife am Ende der Schleife.
Until
• Do Until...Loop: Prüft die Bedingung zum Abbruch der Schleife am Anfang der Schleife.
• Do...Loop Until: Prüft die Bedingung zum Abbruch der Schleife am Ende der Schleife.
• Do...Loop: Die Bedingung zum Weiterlaufen oder Abbruch der Schleife wird nicht geprüft, daher ist eine Verzweigung in der Schleife und ein Exit Do zur Beendigung der Schleife notwendig.
Der allgemeine Aufbau sieht wie folgt aus:
Code:
Do { While | Until } Bedingung
[ Anweisungen ]
[ Exit Do ]
[ Anweisungen ]
Loop
Code:
Do
[ Anweisungen ]
[ Exit Do ]
[ Anweisungen ]
Loop { While | Until } Bedingung
Das wars dann meinerseits.
In meinem nächsten Tutorial werde ich Übungen für die einzelnen Teile schreiben und danach, im 3. TuT, gehe ich weiter auf die Grundlagen ein
[Erweiterte Grundlagen].
Viel Spaß & Erfolg beim Lernen!
Credits:
Cash²
"Galileo Computing"
Bildbearbeitung teilweise:
~~King~~






