2. Darstellungsweisen von Daten

2.1 Variable

Variable sind Namen für Speicherplätze, in denen sich der Computer Zwischenergebnisse merken kann. Es gibt zwei Unterscheidungskriterien bei Variablen.

Einerseits gibt es Variablen für Gleitkomma- und Integerzahlen, sowie für Strings.

Andererseits gibt es einfache Variable, die nur 1 Zahlenwert oder 1 String enthalten können und im Gegensatz dazu indizierte Variable oder Variablenfelder, die mehrere Werte unter dem gleichen Namen enthalten. Die Werte sind dann einfach 'durchnummeriert'.

2.1.1 Variablennamen

Die Regeln für die Variablennamen sind unabhängig vom Variablentyp folgende:

Ein Name besteht aus maximal zwei Zeichen. Das erste Zeichen ist immer ein Buchstabe, das zweite kann entfallen oder ist ein Buchstabe oder eine Ziffer.

Beispiel: AB
X1
C

Um Mißverständnissen vorzubeugen, sei auch hier erwähnt, dass Variablennamen immer ohne SHIFT eingegeben werden mÜssen, auch wenn sie dann im Textmodus als kleine Buchstaben auf dem Bildschirm erscheinen!

Grundsätzlich können Namen auch länger als zwei Zeichen sein, aber erstens werden nur die ersten zwei zur Unterscheidung herangezogen, so dass VAR1 und VAR2 denselben Speicherplatz bezeichnen. Zweitens gibt es Konflikte mit BASIC-Befehlen, wenn Befehlsworte im Namen enthalten sind, z.B. erzeugt 'UNSINN = 7' einen 'SYNTAX ERROR', weil SIN (Sinus) enthalten ist.

Da man bei längeren Namen oft nicht merkt, dass ein Befehl enthalten ist, und es nur Platz und Zeit kostet, aber keinen Gewinn bringt, wird empfohlen, nur Namen mit maximal zwei Zeichen zu verwenden.

Folgende Variablen sind für die angegebenen Zwecke reserviert und dürfen mit der Ausnahme TI$ nicht neue Werte zugewiesen bekommen:

DS Disk Status (Nummer)
DS$ Disk Status (Text)
ST Peripherie-Status
TI TIME (Zeit in 1/60 Sekunden)
TI$ TIME (Zeit in Stunden, Minuten, Sekunden)

Die folgenden Namen sind für Variable nicht zugelassen (ergibt SYNTAX ERROR)!

FN Funktion
IF IF THEN
ON ON GOTO / GOSUB
OR ODER
TO FOR ... TO

2.1.2 Variablentypen

Wie erwähnt, gibt es die drei Variablentypen Gleitkomma, Integer und String. Wenn nach dem Namen ein % (Prozentzeichen) steht, handelt es sich um eine Integervariable, wenn ein $ (Dollarzeichen) steht, um eine Stringvariable. Wenn keines dieser beiden Zeichen folgt, ist immer eine Gleitkommavariable gemeint.

Beispiel: AC Gleitkomma
AC% Integer
AC$ String

Diese drei Variablen verweisen auf drei verschiedene Speicherplätze, obwohl sie denselben Namen haben!

Eine Gleitkommavariable kann als Inhalt jede Zahl haben, die der Definition der Gleitkommazahl genügt.

Entsprechend kann eine Integervariable nur eine Integerzahl aufnehmen.

Eine Stringvariable kann Strings bis zu einer maximalen Länge von 255 Zeichen (Bytes) aufnehmen. Dabei paßt sich die Variable der jeweils aktuellen Stringlänge automatisch an. Man muß nicht wie in anderen BASIC-Dialekten den benötigten Platz vorher belegen.

Wird die Länge von 255 überschritten, so wird STRING TOO LONG ERROR gemeldet und der entsprechende Befehl nicht ausgeführt.

Eine Stringvariable kann auch gar kein Zeichen enthalten, wir bezeichnen ihren Inhalt dann als den leeren String.

2.1.3 Indizierte Variable

Jede der drei Variablenarten kann nicht nur als einfache Variable auftreten, sondern auch als indizierte Variable. Andere Bezeichnungen dafür sind: Matrix, Vektor, Feld.

Gekennzeichnet sind indizierte Variable durch die Indizes, die in Klammern hinter dem Namen folgen.

Beispiel: AB (3) eindimensionales Gleitkommafeld
AB% (3,7) zweidimensionales Integerfeld
Aß$ (1) eindimensionales Stringfeld

Einzelheiten darüber sind bei DIM zu finden. Die Anzahl der Dimensionen ist nur durch den Platz in der BASIC Zeile begrenzt, die Anzahl der Elemente pro Dimension und insgesamt nur durch den Platz im Arbeitsspeicher.

2.1.4 Platzbedarf von Variablen

Jede einfache Variable belegt unabhängig vom Typ 7 Bytes im Arbeitsspeicher. Bei den Zahlenvariablen (Gleitkomma und Integer) ist darin schon der Zahlenwert enthalten. Bei Strings hingegen kommen noch die Anzahl der Zeichen hinzu, die die Variable gerade enthält, sowie 2 Bytes zusätzlicher Verwaltungsbedarf für jeden nicht leeren String.

Bei Feldern hängt der Platzbedarf vom Typ ab:

Typ Bytes pro Element
Integer 2
Gleitkomma 5
String 3 + 2 + Stringinhalt

Für die Verwaltung der Felder sind zwar auch einige Bytes nötig, aber nur einmal pro Feld, so dass man diesen Bedarf gegenüber dem Bedarf für jedes Element vernachlässigen kann.

Variable können jederzeit eingeführt, aber nicht mehr einzeln gelöscht werden. Vor allem bei Feldern muß diese Eigenschaft schon während der Planung der Datenstruktur berücksichtigt werden.

2.1.5 Zugriffszeiten auf Variable

Einfache Variable werden in einer Variablentabelle abgelegt. Jede angesprochene Variable, die noch nicht in der Tabelle steht, wird am Tabellenende angehängt. Da Variablen bei jedem Aufruf vom Tabellenanfang her gesucht werden, erfolgt der Zugriff umso schneller, je früher (zeitlich) die Variable im Programm angesprochen wurde.

Die Tabelle der Feldvariablen kommt unmittelbar anschließend an die einfachen Variablen. Sind bereits Felder definiert wenn noch zusätzliche einfache Variable im Programm auftauchen, so müssen alle Felder mit ihrem Inhalt nach hinten verschoben werden. Der Zeitbedarf dafür kann bei großen Feldern beträchtlich sein. Bei Zeitproblemen sollten also große Felder erst dimensioniert werden, nachdem alle einfachen Variablen im Programm angesprochen wurden.

2.2 Konstante

Sowohl Zahlen als auch Strings können als Konstante direkt im Programmtext auftauchen.

Beispiel: A=3
B% = 15
A$ = "TEXT"
D$ = ""

Stringkonstante sind in der Regel durch Anführungszeichen einzurahmen. Eine spezielle Stringkonstante sind zwei unmittelbar aufeinanderfolgende Anführungszeichen. Sie definieren den leeren String.

Bitte beachten Sie folgenden Unterschied zwischen Zahlen- und Stringkonstanten: Während jeder mögliche Zahlenwert als Konstante ausgedrückt werden kann, sind bei Stringkonstanten einige Einschränkungen zu beachten:

Länge

In einer String-Variablen können maximal 255 Zeichen stehen, aufgrund der Beschränkungen der Bildschirmverwaltung können aber in einer String-Konstanten nur maximal ca. 70 Zeichen stehen.

Codes

Nur die 128 ASC-Codes, die die nicht-reversen druckbaren Zeichen darstellen (32-95 und 160-223) und einige Steuerzeichen (0-31 und 128159) können in Stringkonstanten dargestellt werden.