Was ist eine Variable?

Bearbeiten
Wikipedia hat einen Artikel zum Thema:

Eine Variable ist, wie wir das so schön aus dem Mathematikunterricht kennen, ein Platzhalter für einen Wert. Sie kann universell eingesetzt werden, und ist somit im gesamten Programmablauf verfügbar.

Ein Beispiel:

breite = 25

breite ist hierbei der sogenannte Variablenname und breite wurde nun der Wert 25 zugeordnet.

Wenn wir den Wert von breite verdoppeln wollen, erfolgt dies durch:

breite = breite*2

Rein mathematisch ist der letzte Befehl völliger Schwachsinn, in der Informatik hingegen sehr wichtig. Du rechnest in Free Basic immer zuerst rechts vom Gleichheitszeichen, was bedeutet, dass du zuerst den Wert von breite verdoppelst, und dann der Variable breite diesen neu errechneten Wert zuweist. Das Resultat steht in Freebasic also immer links des Gleichheitszeichens; breite hat jetzt den Wert 50.

Nun braucht der Wert einer Variable immer einen bestimmten Speicherplatz im Arbeitsspeicher und der Compiler muss jederzeit wissen, ob du mit Kommazahlen, Ganzzahlen oder Buchstaben rechnest. Deshalb musst du am Anfang deines Programmes festlegen, was für ein Wert in deine Variable gespeichert werden soll. Deshalb wird im Folgenden der Unterschied zwischen den einzelnen Variablentypen erklärt.

Eine Variable vom Typ Integer (englisch „Ganze Zahl“) kann nur Ganzzahlen speichern, zum Beispiel 1, 2, -3, 222, -242, …. In FreeBASIC muss man die Variablen immer dimensionieren, also am Anfang des Programmes angeben, welchen Typ sie haben.

dim var1 as integer
dim var2 as integer

var1 = 3              'beide Variablen sind vom Typ INTEGER, da wir sie oben deklariert ("dimensioniert") haben.
var2 = -3

Es gibt noch eine zweite Möglichkeit, eine Variable zu deklarieren:

dim vari as integer, varb as byte  'Deklariert vari als Integer und varb als Byte
dim AS INTEGER vari2, vari3        'Deklariert vari2 und vari3 als INTEGER

Mit der 2. Variante (dim as ...) spart man sich Schreibarbeit, wenn man mehrere Variablen des gleichen Typs deklarieren möchte. Man kann damit jedoch nicht in einer DIM AS Anweisung mehrere Variablen mit unterschiedlichen Typen deklarieren, hierfür kann man die andere Variante anwenden.

Folgendes ist zu beachten: Der Wert einer als Integer deklarierten Variable muss zwischen dem min. und max. vordefinierten Wert liegen, da der Speicherplatz für größere Zahlen nicht „ausreicht“.

Minimaler Wert: -2147483648
Maximaler Wert: +2147483647

Eine Variable vom Typ Single nimmt eine Fließkommazahl (also mit Nachkommastellen) einfacher Genauigkeit auf, zum Beispiel 2.3, 7.2, -24.4, 2, …. Es wird die englische Schreibweise verwendet, die Nachkommastellen werden also mit einem Punkt anstelle eines Kommas abgetrennt.

dim vari as single
vari = 25.4196

Auch bei Single-Variablen gibt es einen Wertebereich, der dargestellt werden kann.

Minimaler Wert: -10 ^ 38
Minimaler Wert: +10 ^ 38

Achtung: Single-Variablen werden anders gespeichert als Integer-Variablen . Dabei kann es oft zu "Rechenfehlern" führen, die zu ungewollten Fehlern führen können. [1]

dim as single var1, var2, var3

var1 = 0.7
var2 = 0.1

print var1 + var2 + 2.7 - 3.1

Man erwartet als Ausgabe 0.4, man erhält jedoch 0.3999999895691873. An diesem Beispiel erkennt man, dass es unter Umständen zu starken Rundungsfehler kommen kann.

Wenn die Genauigkeit von Single nicht ausreichen sollte, so kann man auf Double zurückgreifen. Double-Variablen speichern die doppelte Genauigkeit und können somit bis zu 15 Nachkommastellen darstellen.

Double-Variablen müssen wir, wie immer, deklarieren:

dim vari as double
vari = 25.4196

Double-Variablen haben einen sehr großen Wertebereich

Minimaler Wert: -10 ^ 308 
Maximaler Wert: +10 ^ 308

Eine Variable vom Typ String nimmt eine Zeichenkette auf.

Beispiel:

dim as string a
a = "Hallo Welt!"

Die Variable a enthält jetzt also die Zeichenkette Hallo Welt!.

Arbeiten mit Variablen

Bearbeiten
dim as string a, b
dim as integer c

a = "Hallo"
b = "Welt"
c = 125
? a + " " + b; c
sleep

Dieser Quellcode wurde von Stueber am 22.03.2009 mit der Freebasic Version 0.20b getestet.


Statt dem "+" zum Verbinden von Strings kann man auch "&" verwenden.

dim as string a, b
dim as integer c

a = "Hallo"
b = "Welt"
c = 125
? a & " " & b; c
sleep

Dieser Quellcode wurde von Stueber am 22.03.2009 mit der Freebasic Version 0.20b getestet.


Übersicht der Variablentypen

Bearbeiten
Name Beschreibung Grösse in Byte Minimalwert Maximalwert
Byte vorzeichbehaftete Ganzahl 1 -128 +127
UByte vorzeichenlose Ganzahl 1 0 255
Short vorzeichbehaftete Ganzahl 2 -32 768 32 767
UShort vorzeichenlose Ganzahl 2 0 65 365
Integer vorzeichbehaftete Ganzahl 4 -2 147 483 648 2 147 483 647
UInteger vorzeichenlose Ganzzahl 4 0 4 294 967 295
LONGINT vorzeichbehaftete Ganzahl 8 -9 223 372 036 854 775 808 9 223 372 036 854 775 807
ULONGINT vorzeichenlose Ganzzahl 8 0 18 446 744 073 709 551 615
Single vorzeichenbehaftete Fließkommazahl (6 Nachkommastellen) 4 1.1 E-38 3.43 E+38
Double vorzeichenbehaftete Fließkommazahl (15 Nachkommastellen) 8 -2.2 E-308 +1.7 E+308
String Zeichenkette/Text variabel 0 Zeichen 2 Milliarden Zeichen

1 Byte = 8 Bit


Zur Übersichtlichkeit

Bearbeiten

Viele Leute (ich inbegriffen) schwören auf ein kleines Mittel, das Fehler vermeiden soll. Das Mittel heisst Ungarische Notation und ist in vielen Programmiersprachen üblich. Wenn du ein großes Projekt planst solltest du sie benutzten, auch wenn sie in FreeBasic nicht so oft verwendet wird.

Du stellst einfach vor die Namen von Variablen einen Präfix, der den Typ der Variablen angibt:

Typ Präfix
Integer i
String sz
Single f
Double db

Also wird

dim Zahl as integer

zu

dim iZahl as integer

Es mag zwar nicht so gut aussehen, aber dadurch können viele Fehler vermieden werden.

Ergänzungen

Bearbeiten
  1. http://dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Gleitkommazahlen.html