FreeBasic: Variablen
Was ist eine Variable?
[Bearbeiten]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.
Integer
[Bearbeiten]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
Single
[Bearbeiten]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.
Double
[Bearbeiten]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
String
[Bearbeiten]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]Ausgabe
[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.