Grundlagen der Programmierung: Variabeln

Wozu Variabeln?

Damit man beim Programmieren Daten verarbeiten kann, benötigt man eine Möglichkeit um Informationen temporär abzulegen. Diese Möglichkeit nennt man Variabeln. In Variabeln kann man Daten speichern. Diese sind allerdings erst im RAM, stehen also höchstens zur Laufzeit des Programms zur Verfügung.

Eine Datenbankanwendung benötigt zum Beispiel die Möglichkeit neue Daten zu erfassen. Die neuen Daten werden möglicherweise erst in Variabeln gespeichert und auf ihre Plausibilität geprüft. Erst wenn die Richtigkeit der Daten durch das System geprüft wurden, werden die Daten in der Datenbank abgespeichert.

Einfache Variabeln

Die Namen von Variabeln kann der Programmierer selbst erfinden. Unter Windows-Systemen ist die Variabel vVorname identisch mit der Variabel vvorname oder VVORNAME. Unter UNIX-basierenden Systemen sind dies jedoch drei unterschiedliche Variabeln.

Dank dem Einsatz von Variabeln kann man die darin gespeicherten Informationen auf einfache Weise wieder verwenden.

Sub Informationsausgabe()
   vText = "Wir geben einen Datum aus"
   vTitel = "Information"
   vArt = vbInformation
   MsgBox vText, vArt, vTitel
   MsgBox Now(), vArt, vTitel
End Sub

Die Variabel vText wird mit einem beliebigen Text gefüllt. Text ist in allen Programmiersprachen in Anführungszeichen zu setzen. Worte welche nicht in Anführungszeichen stehen, werden vom Computer als Befehlsworte erkannt. Existiert ein Befehlswort nicht, so wird eine Fehlermeldung ausgegeben und je nach Programmiersprache das Programm angehalten.

Die meisten Programmiersprachen benötigen eine Deklarationsanweisung für Variabeln. Bei den Basic-Dialekten ist dies das Codewort DIM, bei JavaScript das Codewort VAR. Nicht in jeder Sprache kann man Variabeln deklarieren. So kennt zum Beispiel PERL keine Typendeklaration. Auch spricht man in PERL von Skalaren anstelle von Variabeln.

Ist in einer Programmiersprache das deklarieren von Variabeln nicht zwingend notwendig wie zum Beispiel in Visual Basic, so werden die verwendeten Variabeln automatisch deklariert. Dabei wird jedoch der Typ Variant verwendet welcher mehr Platz im Speicher belegt als andere Variabeln und dessen Ausführungsgeschwindigkeit langsamer ist.

Im Bereich Schlaufen ist ein Geschwindigkeitstest zu finden welcher die Auswirkungen unterschiedlicher Variabeldeklarationen aufzeigt.

Mit Variabeln kann man dann auch "jonglieren".

dim A as String     'Deklatation von A für Alphanumerische Zeichen
dim B as String     'Deklatation von B für Alphanumerische Zeichen
A = "Hallo"         'Weist der Variabel A den Wert "Hallo" zu
B = "Welt"          'Weist der Variabel B den Wert "Welt" zu
Print A & " " & B   'Ausgabe von A und B mit Leerzeichen getrennt

Das Ergebnis dieses VisualBasic Codes wäre: "Hallo Welt".

Einige Berechnungen:

dim e as byte
dim f as byte
e=5
f=3
Print e+f*2

Das Ergebnis lautet 11 und nicht etwa 16! Der Computer rechnet Punkt (multiplizieren, dividieren) vor Strich (addieren, subtrahieren). Um auf das Ergebnis 16 zu gelangen müsste der Code folgendermassen aussehen

dim e as byte
dim f as byte
e=5
f=3
Print (e+f)*2

Durch Klammern werden Prioritäten gesetzt. Die Klammer wird von innen nach aussen aufgelöst.

Matrixvariabeln, Array

Wenn grössere Mengen an Daten anfallen sind einfache Variabeln unhandlich. Zum Beispiel bei gleichartigen Daten wie einer Adressdatenbank. In einigen Programmiersprachen nennt man eine Matrixvariabel auch ein Array (z.B. JavaScript)

dim vName(3)         'dimensioniert eine Matrix mit 4 Stellen
vName(0)="Eveline"   'belegt den ersten Platz mit einem Wert
vName(1)="Thomas"
vName(2)="Kevin"
vName(3)="Sabrina"
print vName(1) & " ist mit " & vName(3) & " liiert"

Würde die Ausgabe: "Thomas ist mit Sabrina liiert" erzeugen.

Zur Bearbeitung von Matrixvariabeln sind meist Schlaufen ein gutes Hilfsmittel.

Matrixvariabeln können sogar in einer dritten Dimension arbeiten

dim daten(5,3,7)

Stellen Sie sich einen Würfel vor. 5 Felder breit, 3 Felder tief und 7 Felder hoch. Jedes einzelne Feld entspricht einer Variabel welche individuell angesprochen werden kann.

Gültigkeit von Variabeln

Eine Variabel welche nicht deklariert wurde, gilt in der Regel nur in der jeweiligen Prozedur in welcher sie verwendet wird. Wird eine Variabel in mehr als einer Prozedur verwendet, so muss sie global deklariert werden. Der folgende Code-Abschnitt zeigt mehrere Varianten welche Daten von einer Prozedur zur anderen übertragen.

Dim vName As String

Sub Eins()
  Dim vInfo As String
  vInfo = "Hallo Welt"
  vName = "Dagobert Duck"
  Debug.Print vInfo
  Call Zwei
End Sub

Sub Zwei()
  Debug.Print "->Wiederholung:" & vInfo & "<-"
  Debug.Print vName
  vInfo = vInfo & " es geht mir gut."
  Call Drei(vInfo)
End Sub

Sub Drei(vText)
  Debug.Print vText
End Sub

Die Variabel vName wurde ausserhalb jeder Prozedur deklariert, daher ist sie global deklariert und hat in allen Prozeduren Gültigkeit.

Die Variabel vInfo ist innerhalb der Prozedur Eins deklariert und gilt als lokal deklarierte Variabel nur innerhalb dieser Prozedur. In der Prozedur Zwei hat die Variabel vInfo daher einen anderen Wert.

Die Prozedur Zwei ruft mit dem Befehl Call die Prozedur Drei auf, wobei der Inhalt der Variabel vText an die Prozedur übergeben wird.
Die Prozedur Drei empfängt den gesendeten Wert und legt diesen in der Variabel vText ab. Wir sprechen von Variabelübergabe.

Lebensdauer von Variabeln

Sub Eins()
  debug.print "Zweimaliger Aufruf"
  Call Zwei
  debug.print "---"
  Call zwei
End Sub

Sub Zwei()
  Static i as Byte
  Debug.Print "->Wiederholung:" & i
  i = i + 1
End Sub

Die variabel i aus der Prozedur zwei wurde global deklariert. Dadurch überlebt die Variabel i auch das Ende der eigenen Prozedur. Wird die Prozedur erneut aufgerufen, behält die Variabel i seinen Wert. Sie lebt solange der Code läuft.