BASIC-Tutorial (Vorwort, Installation, Kapitel 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)

Variablen und Zuweisung

2.1. Variablen in BASIC, Datentypen

Höchstwahrscheinlich sind Ihnen Variablen aus der Mathematik bekannt. Eine Variable drückt einen Wert aus oder ist undefiniert. Ist sie undefiniert, so kann man sie als Platzhalter ansehen. Platzhalter ist auch gleich eine geeignete Bezeichnung für die Art von Variablen, mit denen wir es hier zu tun haben. Diese reservieren nämlich einen Bereich im Arbeitsspeicher. Wie groß der Bereich ist, hängt vom Typ der Variable ab. Um Ihnen keine falsche Größenvorstellung zu geben: Hierbei handelt es sich um Größenordnungen von einem Byte (8 Bit) angefangen bis hin zu einigen Bytes. In den Kilobyte-Bereich gehen "normale" Variablen (Elementare Datentypen) nie. Eine Zuweisung dient dazu, um einer Variable einen Wert zu geben, d.h. um ihr diesen zuzuweisen.

Wenn Sie eine neue, weitere Variable benötigen, können Sie diese gleich verwenden. Sie müssen dies dem Compiler nicht explizit bekannt geben. Es ist also keine Deklaration nötig (im Gegensatz zu vielen anderen Programmiersprachen wie C, C++, Pascal oder Delphi - um nur einige Beispiele zu nennen). Im Beispielprogramm zu INPUT wurde die Variable mit dem Namen Zahl einfach ohne Deklaration zu Recht verwendet. INPUT hat ihr den Wert zugewiesen, den der Benutzer (Sie) eingegeben hat. Was aber, wenn man nicht eine Ganzzahl (z.B. 42), sondern eine Fließkommazahl (z.B. 23.23) oder gar einen String (z.B. Max Mustermann) eingegeben hat?

Wenn Sie es noch nicht ausprobiert haben, dann tun Sie es einfach mal. Ausprobieren ist in der Programmierung - fast - immer ein guter Weg, um etwas dazuzulernen! Wichtig ist jedoch, dass Ihr Programm den Wert der Variable später wieder ausgibt (Anm. für Leser mit Vorkenntnissen: Ein Debugger könnte auch den Wert überwachen). Wenn Sie im Moment noch nicht genau wissen, wie Sie die Sache angehen sollen, können Sie das Beispielprogramm zu INPUT als Vorlage nehmen. Geben Sie anstelle einer Ganzzahl beispielsweise eine Fließkommazahl ein, so ist der später ausgegebene Wert 0. Null (0) ist der Wert, mit dem die Variable vom Compiler initialisiert (Anm.: Wofür eine Initialisierung gut ist, werde ich später noch genauer erklären.) wurde.

Aber warum hat es beim letzten Beispiel geklappt? Der Benutzer wurde aufgefordert, einen String (Zeichenkette) einzugeben und dieser wurde danach wieder korrekt ausgegeben. Der Grund, weshalb dieses Beispiel korrekt lief, lag am Dollarzeichen $, das der Variable angehängt wurde.

Das Dollarzeichen zeichnet eine Variable als String-Variable aus. Im Klartext "sagen" wir dem Compiler: Diese Variable speichert Strings. Neben dem Dollarzeichen $ existieren noch die Zeichen % ! # und &. Also 5 Zeichen und jedes steht für einen Typ in BASIC. Es existieren auch nur 5 verschiedene elementare Datentypen. Das hat Vor- und Nachteile, worauf ich im Rahmen dieses Einsteiger-Tutorials aber nicht eingehen werde. Wir hätten der Variable Zahl im Beispiel zu INPUT auch das Zeichen % anhängen können. Dieses steht für Integer, den Ganzzahlen-Typ in BASIC.

Datentypen in BASIC:

Typ Zeichen Größe Wertebereich
Integer % (keine Pflichtangabe) 2 Bytes -32768 bis 32767
Long & 4 Bytes -214783648 bis 214748647
String $ bis 255 Bytes bis 255 Zeichen Länge
Single ! (keine Pflichtangabe) 2 Bytes -2,802597 * 10-45 bis 3,402823 * 1038
Double # 8 Bytes -4,446590812571219 * 10-323 bis 1,79769313486231 * 10308

Die ersten 2 Typen (Integer und Long) sind Ganzzahlentypen. Dem Typ Integer muss das Zeichen % nicht explizit angehängt werden. Der Compiler nimmt immer an, dass eine Ganzzahl vom Typ Integer ist, wenn kein Zeichen angehängt wird. Variablen vom Typ Integer verbrauchen lediglich 2 Bytes im Arbeitsspeicher. Der zulässige Wertebereich reicht von -32768 bis 32767. Eine Zahl, die korrekt abgespeichert werden soll, muss sich in diesem Bereich befinden.

Will man größere Ganzzahlen abspeichern (größer kann auch heißen: weiter in den negativen Bereich), benötigt man den Typ Long. Dieser Typ verbraucht bereits 4 Bytes im Arbeitsspeicher, kann jedoch Zahlen abspeichern, die im Bereich von -214783648 bis 214783647 liegen. Das Zeichen & muss explizit angegeben werden, will man eine solche Variable verwenden.

Übrigens müssen Bezeichner % ! & # $ immer mit angegeben werden, also bei jeder Verwendung der Variable!

Wertebereich berechnen:

Bei ganzzahligen Datentypen kann man den unteren und den oberen Bereich des Wertbereichs ganz einfach berechnen, wenn man weiß wieviel Speicherplatz (Anzahl an Bits) der entsprechende Typ belegt.

Unterer Bereich 2Speicherplatz-1 * (-1)
Oberer Bereich 2Speicherplatz-1 - 1

Sieht komplizierter aus, als es eigentlich ist. Um den unteren Bereich zu berechnen, nimmt man Basis des Binärsystems (2) hoch dem Speicherplatzverbrauch der Variable in Bit minus 1. Minus 1 deswegen, da das höchstwertigste Bit zur Darstellung des Vorzeichens benutzt wird (Vorzeichenbit).

Das Binärsystem wird in der Einführung in die Programmierung ausführlicher erklärt.

Da wir einen negativen Bereich benötigen, muss das Ergebnis mit -1 multipliziert werden. Um den oberen Bereich zu berechnen, muss man wieder die Basis 2 hoch dem Speicherplatz-1 nehmen und von diesem Ergebnis noch einmal -1 subtrahieren.

Kommen wir wieder von der Theorie zur Praxis zurück. Das nächste Beispiel demonstriert die Verwendung der unterschiedlichen Datentypen:

CLS
int1% = -24300
long1& = 344353452
str1$ = "Gespeicherter String"
single1! = 34.43424
double1# = 342834.3452524234924#
PRINT "Nun werden die Werte der einzelnen Variablen der Reihe nach ausgegeben:"
PRINT "Integer-Variable: ", int1%
PRINT "Long-Variable: ", long1&
PRINT "String-Variable: ", str1$
PRINT "Single-Variable: ", single1!
PRINT "Double-Variable: ", double1#

Eine Besonderheit gibt es im oberen Beispiel noch zu erwähnen: Weist man einer Double-Variable einen Wert zu, so hängt man üblicherweise auch dem Wert das Zeichen # an. Vergisst man das Anhängen des Zeichens, ist das auch nicht weiter tragisch, da (zumindest) QBasic dieses automatisch hinzufügt. Wenn Sie QBasic verwenden, wird Ihnen auch aufgefallen sein, dass QBasic den Quellcode optisch einigermaßen anpasst. Schreibt man Befehle klein (z.B. print), so wandelt QBasic diese automatisch in Großbuchstaben um (PRINT).

Gleich vorweg: Natürlich ist es - zum Testen - egal, welche Zahlen Sie verwenden und welche Namen (Bezeichner) Sie Ihren Variablen geben. Zum Verständnis ist es nicht unbedingt erforderlich, die Beispiele 1:1 abzutippen. Wichtig ist jedoch, dass Sie das Gelernte (Gelesene!) gleich ausprobieren. Programmieren lernt man nur durch Programmieren, nicht durch bloßes Lesen! Der Sinn der Beispiele entscheidet also, und nicht deren Inhalt.

2.2. Zuweisungen

(Fortsetzung des Beispiels aus 2.1.) Vielleicht erkennen Sie bereits, was in den Zeilen 2 bis 6 geschieht. Hier werden den Variablen die Werte zugewiesen. Der Operator = erledigt dies. Die Zuweisung erfolgt von rechts nach links. Das bedeutet, dass in Zeile 2 der Wert -24300 in die Variable int1 übertragen wird. Also immer von rechts nach links. Hier wird = als Zuweisungsoperator verwendet! D.h. im Sinne von Speichere den Wert -24300 in der Variable int1.

-24300 = int1

... wäre FALSCH, denn hier wird versucht, den Wert aus int1 an eine Zahl (!) zu übergeben, also einer Zahl den Wert einer Variable zuzuweisen. Ja, Blödsinn.

Wie Sie wahrscheinlich erahnt haben, kann man einer Variable nicht nur einen konstanten Wert (Konstante; damit sind Zahlen wie 1234 gemeint), sondern auch den einer anderen Variable zuweisen. Das heißt auch Anweisungen wie

a = b

... sind gültig. Eine Voraussetzung ist hier jedoch, dass die Variable b bereits einen Wert enthält. Daher musste der Variable b zuvor ein Wert mittels Zuweisung oder INPUT zugewiesen worden sein. Übrigens macht INPUT auch nichts anderes, als - effektiv - eine Zuweisung durchzuführen. Zugewiesen wird das, was mittels Tastatur eingegeben wird.

Gültige Variablennamen:

Bei der Wahl des Variablen-Namens (Bezeichners) müssen einige Kriterien beachtet werden. Ein Bezeichner darf max. 40 Zeichen lang sein und darf nur Buchstaben, die Zahlen 0 bis 9 sowie den Unterstrich _ enthalten. Sonderzeichen wie ! " § $ % & / ( ) = ? sind unzulässig. Ebenso die Umlaute ä ö ü sowie ß. Verwenden Sie am besten sprechende Bezeichner. Aus dem Bezeichner der Variable sollte hervorgehen, wozu diese verwendet wird. Es ist besser zaehler als Bezeichner zu verwenden, als variable5.

Zuweisungen mit LET:

Früher hat man jede Zuweisung mit dem Befehl LET eingeleitet:

LET a = b

Vorheriges Kapitel Nächstes Kapitel