Visual Basic .NET: Variablen

Aus Wikibooks
Wechseln zu: Navigation, Suche

Eine wichtige Funktion von Computern ist die Speicherung von Daten. Langfristig geschieht dies mit Dateien, kurzfristig wäre die Speicherung auf der Festplatte viel zu aufwändig. Das Mittel der Wahl ist der Arbeitsspeicher, auf den sehr schnell zugegriffen werden kann. Das Problem: Der Arbeitsspeicher ist groß. Außerdem haben wir meist viele verschiedene Arten von Daten, die zu speichern sind. Variablen sind die Lösung für diese Probleme: Dazu wird ein Teil des Speichers reserviert und mit einem Namen versehen. (Dieser Prozess heißt Deklaration.) Dann können Werte auf einer Variable gespeichert werden. Dann können die Variablen wie deren Werte verwendet werden. (Das hört sich jetzt vielleicht etwas unverständlich an, aber das wird Ihnen gleich klar werden.)

Ein grundlegendes Prinzip der Variablen ist, dass auf bestimmten Variablen nur bestimmte Arten von Daten gespeichert werden dürfen, z.B. nur Kommazahlen. Dadurch weiß Visual Basic immer, was es in einer bestimmten Situation mit einer Variable tun soll. Um festzulegen, was in einer Variable enthalten sein darf, wird ihr bei der Deklaration ein sogenannter Datentyp zugewiesen. Es gibt z.B. Integer für Ganzzahlen oder String für Zeichenketten.

Deklaration[Bearbeiten]

Für die Deklaration von Variablen stellt Visual Basic eine Anweisung namens Dim zur Verfügung. Der Name kommt vom englischen dimension, zu deutsch Ausdehnung. Die Deklaration legt nämlich auch die Ausdehnung, also die Größe der Variable im Speicher, fest. Die Größe wird durch den Datentyp bestimmt, üblich sind Größen wie vier oder acht Byte pro Variable.

Nach dem Schlüsselwort Dim muss in der Dim-Anweisung der Name der Variable stehen. Den dürfen Sie frei wählen, bis auf ein paar Einschränkungen: Der Name darf nur aus Buchstaben, Unterstrichen und Ziffern bestehen, am Anfang muss ein Buchstabe stehen, und der Name darf kein Schlüsselwort sein. Fehler merken Sie meistens anhand der Syntaxhervorhebung oder der Fehlerkennzeichnung in Ihrer Entwicklungsumgebung.

Nach dem Variablenname muss das Schlüsselwort As stehen, gefolgt von dem Datentyp. (Auch hier bietet die Entwicklungsumgebung eine Liste gültiger Datentypen an.) So sieht also eine gültige Dim-Anweisung aus.

Crystal Clear app terminal.png Code:  

Dim MeineErsteVariable As Integer

Integer-Variablen können Ganzzahlen speichern, zum Beispiel 3 oder -5000, jedoch nicht etwa Kommazahlen oder Zeichenketten. Sie können auch mehrere Variablen auf einmal deklarieren, indem Sie diese durch Kommata trennen. Dabei darf das einleitende Dim aber nur einmal stehen. Die Variablen dürfen auch verschiedene Typen haben.

Crystal Clear app terminal.png Code:  

Dim Var1 As Integer, Var2 As Single, Var3 As String

Zuweisungen[Bearbeiten]

Nun haben wir mit der Variable die Möglichkeit, einen Wert zu speichern, wie das folgende Beispiel demonstriert.

Crystal Clear app terminal.png Code:  

Dim Test As Integer
Test = 3

Das Gleichheitszeichen ist ein sogenannter Operator. Allgemein dienen Operatoren dazu, bestimmte Aktionen mit einem oder zwei Werten durchzuführen. (Wir werden im nächsten Kapitel einen genaueren Blick auf Operatoren werfen.) Das Gleichheitszeichen als Operator weist der Variable auf der linken Seite (hier die Ganzzahlvariable "Test") einen Wert (hier 3) zu. Man kann Zuweisungen auch schon in der Dim-Anweisung vornehmen, wie die folgenden Beispiele zeigen. (Man nennt das erste Zuweisen eines Wertes an eine Variable den Startwert.)

Crystal Clear app terminal.png Code:  

Dim Test As Integer = 3
Dim Nachricht As String = "Hello World", Pi As Single = 3.1415927

Damit offenbart sich auch, dass der Datentyp String für Zeichenketten gedacht ist und Single-Variablen Kommazahlen aufnehmen. Natürlich kann man auch Variablen einen Wert zuweisen, die bereits einen enthalten. Der alte Wert wird dabei unwiderruflich gelöscht.

Verwendung[Bearbeiten]

Einmal deklariert und initialisiert können die Variablen wie die direkt im Code definierten Werte (die übrigens Literale heißen) verwendet werden. Die folgende Hello-World-Variante verwendet Variablen.

Crystal Clear app terminal.png Code:  

Dim Nachricht As String = "Hello world."
System.Console.WriteLine(Nachricht)
System.Console.ReadLine()

Wie man sieht, können geschickt gewählte Variablennamen die Lesbarkeit von Code erhöhen. Der Zeichenkettenwert wird, anstatt direkt verwendet zu werden, erst in einer Variable gespeichert, dann wird die Variable verwendet. Das zeigt die Vielgesichtigkeit von Variablen: Bei Zuweisungen stehen sie für den Speicher, auf dem der zuzuweisende Wert abgelegt wird, bei Verwendung stehen sie für ihre Werte.

Datentypen[Bearbeiten]

Um effektiv mit Variablen zu arbeiten, ist es von großer Bedeutung, die wichtigsten Datentypen zu kennen. Die folgende Tabelle enthält diese elementaren Datentypen sowie die Wertebereiche, d.h. die Werte, die der Variable zugewiesen werden dürfen. Im Alltag werden Ihnen vor allem die Datentypen begegnen, deren Namen in der Tabelle fett dargestellt sind.

Wird eine Variable deklariert, erhält sie einen vorläufigen Standardwert. So verhindert Visual Basic, dass man einen Wert sucht, wo keiner ist. Wenn man die Variable noch in der Dim-Anweisung mit einem Startwert initialisiert, wird auf der Variable kein Standardwert gespeichert.

Datentyp Wertebereich Beschreibung Standardwert
Vorzeichenbehaftete Ganzzahlen
SByte -128 bis 127 8-Bit-Ganzzahl 0
Short -32.768 bis 32.767 16-Bit-Ganzzahl 0
Integer -2.147.483.648 bis 2.147.483.647 32-Bit-Ganzzahl 0
Long -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 64-Bit-Ganzzahl 0
Vorzeichenlose Ganzzahlen
Byte 0 bis 255 vorzeichenlose 8-Bit-Ganzzahl 0
UShort 0 bis 65.535 vorzeichenlose 16-Bit-Ganzzahl 0
UInteger 0 bis 4.294.967.295 vorzeichenlose 32-Bit-Ganzzahl 0
ULong 0 bis 18.446.744.073.709.551.615 vorzeichenlose 64-Bit-Ganzzahl 0
Gleitkommazahlen
Single -3,402823E38 bis 3,402823E38 Gleitkommazahl einfacher Genauigkeit 0.0
Double -1,79769313486231E208 bis 1,79769313486231E208 Gleitkommazahl doppelter Genauigkeit 0.0
Zeichen und Zeichenketten
Char Unicode einzelnes Zeichen Wikipedia-logo-v2.svg Nullzeichen / Wikipedia-logo-v2.svg Nothing
String Unicode Zeichenkette (bis zu 2 Mrd. Zeichen) Wikipedia-logo-v2.svg Nullzeichen / Wikipedia-logo-v2.svg Nothing
Andere Datentypen
Boolean True (wahr) oder False (falsch) Wahrheitswerte False
Date 1. Januar 1 bis 31. Dezember 9999 Datum- und Uhrzeitangabe in einem 1. Januar 1, Mitternacht

Bei Ganzzahlen bedeuten die Begriffe vorzeichenlos und vorzeichenbehaftet, ob in der Variable auch ein Vorzeichen gespeichert wird. Wenn nicht, können in der Variable nur positive Werte gespeichert werden.

Ein Wort zu Gleitkommazahlen: Diese können nur bis zu einer bestimmten Anzahl von Nachkommastellen gespeichert werden, Überschüssiges wird abgeschnitten. Als Nachkommastelle zählt alles außer der ersten Ziffer, das Komma wird, wie in wissenschaftlicher Notation üblich, durch Zehnerpotenzen nach links oder rechts verschoben.

Zum Beispiel wird die Zahl 4500 nicht als 4500 gespeichert, wie es bei einer Ganzzahlvariable der Fall wäre. Stattdessen wird das Komma verschoben, dass nur eine Vorkommastelle übrig bleibt. Um den Wert zu erhalten, wird eine Zehnerpotenz angehängt.

4500 = 4{,}5 \cdot 10^3

Für Zahlen zwischen 0 und 1 sowie negative Zahlen ergibt sich analog:

0{,}025 = 2{,}5 \cdot 10^{-2}

-372{,}3005 = -3{,}723005 \cdot 10^2

Die Schreibweise in Visual-Basic-Code sieht für die letzte Ziffer so aus: -3.723005E2. Beachten Sie vor allem den Dezimalpunkt. Die Datentypen für Gleitkommazahlen, Single und Double, unterscheiden sich nicht nur in der Größe der Zehnerpotenzen (E-38 bis E38 bei Single und E-208 bis E208 bei Double), sondern auch in der Anzahl von Nachkommastellen (15 bei Single, 31 bei Double). Die Werte E-38 und E-208 sind die Grenzwerte bei der Annäherung an Null, kleinere Werte werden auf Null gerundet.

Welchen Datentyp soll ich nehmen?[Bearbeiten]

Diese Frage stellen sich Programmieranfänger und erfahrene Programmierer bei Zahlenwerten immer wieder. Die wichtigste Empfehlung hier ist, sich ein System zu entwickeln und das dann konsequent durchzusetzen.

Ich empfehle für Ganzzahlen den Integer- und für Gleitkommazahlen den Double-Datentyp. Beide Typen haben den Vorteil, dass sie fast immer groß genug sind und auch von den meisten Funktionen des .NET-Frameworks verwendet werden. Für Integer spricht zudem, dass eine Integer-Variable 32 Bit groß ist und normale Rechner mit 32-Bit-Zahlen am schnellsten rechnen.

Manchmal wird dazu geraten, möglichst kleine Variablen zu verwenden, damit die Anwendung wenig Speicher belegt. Ich rate davon aber aus zwei Gründen ab:

  • Für die Maßstäbe der Anwendungsprogrammierung lohnt sich eine solche Erbsenzählerei nicht, die zudem eine häufige Fehlerquelle darstellt.
  • Wie oben angedeutet rechnen normale Computer mit 32-Bit-Zahlen (Integer) am besten. Die Speicherplatzersparnis kleiner Zahlentypen wird durch die verminderte Rechengeschwindigkeit aufgewogen. Hier muss man also abwägen, ob man lieber schneller oder ressourcenschonender arbeiten möchte.