<p class="Head1"><help:link Id="66464">Konventionen von Variablennamen</help:link><help:key-word value="Konventionen von Variablennamen" tag="kw66464_1"/><help:key-word value="Variablen" tag="kw66464_3"/></p>
<p class="Paragraph">Hier wird beschrieben, was es mit den Variablen auf sich hat.</p>
</help:to-be-embedded>
<p class="Paragraph">Variablen sind "das A und O" bei der Programmierung von Basic. Variablen speichern zur Laufzeit bestimmte numerische Werte, Zeichenketten oder sogenannte Objekte. Man kann Variablen auslesen oder deren Inhalte verändern. In <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic müssen Variablen nicht gesondert deklariert werden. Sie sind gültig, sobald Sie das erste Mal verwendet werden. Mit Hilfe der Anweisung <span class="T1">Option Explicit</span> kann man jedoch die Deklaration von Variablen mit Hilfe des <span class="T1">Dim</span>-Statements zwingend machen.</p>
<p class="Head2">Konventionen bei der Vergabe von Variablennamen</p>
<p class="Paragraph">Variablennamen dürfen bis zu 255 Zeichen lang sein und alle Zeichen des Alphabetes sowie Ziffern enthalten, solange der Variablenname nicht mit einer Ziffer beginnt. Die Verwendung von deutschen Umlauten sowie von Satz- und Sonderzeichen außer dem Unterstrich ("_") ist nicht erlaubt. <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic unterscheidet nicht zwischen der Groß- und Kleinschreibung von Variablen. Variablen dürfen Leerzeichen enthalten, müssen dann aber in eckigen Klammern eingeschlossen sein.</p>
<p class="Paragraph">Im folgenden ein paar Beispiele f├╝r das korrekte und nichtkorrekte Vergeben von Variablennamen:</p>
<p class="Paragraph">Variablen brauchen in <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic nicht explizit deklariert zu werden, wie Sie es vielleicht von anderen Programmiersprachen her kennen. Lediglich Arrays m├╝ssen vor Verwendung deklariert werden. Eine Variablendeklaration erfolgt mit dem <span class="T1">Dim</span>-Befehl; mehrere Deklarationen k├╢nnen mit Komma getrennt erfolgen. Um den Typ einer Variablen bei einer Deklaration festzulegen, verwendet man entweder ein spezielles Typendeklarationszeichen, das hinter dem Namen angegeben wird, oder ein entsprechendes Schl├╝sselwort. Beispiele:</p>
<p class="TextInTable">Deklaration eines Strings und eines Integers durch Komma getrennt</p>
</span></td></tr></table>
<p class="Paragraph">Wichtig bei der Deklaration von Variablen ist, daß das Typendeklarationszeichen immer wieder verwendet werden muß, wenn es auch bei der Deklaration anstelle des Schlüsselwortes verwendet wurde. Die folgenden Zeilen sind also nicht statthaft:</p>
<p class="TextInTable">Variablen mit einem bestimmten Namen, die einmal als bestimmter Typ deklariert wurden, d├╝rfen unter dem gleichen Namen nicht nochmals als anderer Typ deklariert werden!</p>
</span></th></tr></table>
<p class="Paragraph"/>
<p class="Head3">Erzwingung von Variablendeklarationen</p>
<p class="Paragraph"><help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic bietet Ihnen die M├╢glichkeit, jede Variable zwingend zu deklarieren, und zwar mit der Anweisung</p>
<p class="PropText">OPTION EXPLICIT</p>
<p class="Paragraph">die als erste Zeile im Programmcode eines Moduls, also noch vor der ersten SUB, stehen muß. Normalerweise braucht der Programmierer in <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic lediglich Arrays, also Felder, zu deklarieren. Andere Variablen werden in Abhängigkeit des Typendeklarationszeichens oder, falls keines angegeben ist, als Single-Variablentyp deklariert, sobald Sie das erste Mal verwendet werden. Der gewollte Deklarationszwang einer jeden im Programm verwendeten Variable ist zwar ein wenig aufwendiger, hat aber folgenden Vorteil: Programmfehler, die durch Tippfehler in Variablennamen auftreten, werden damit ausgeschlossen. Ein Beispiel:</p>
<p class="Paragraph">Sie verwenden die Variable Datenspeicher$ in einer SUB. Irgendwo im Programmtext arbeiten Sie mit der Variablen weiter und weisen ihr ein bestimmtes Ergebnis zu. Angenommen, Sie haben sich vertippt und weisen dieses Ergebnis mit der folgenden Zeile zu:</p>
<p class="PropText">Datenspeicher$=Ausdruck$</p>
<p class="Paragraph"><help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic würde diesen Ausdruck anstandslos akzeptieren, da es davon ausgeht, daß Sie im folgenden eine neue Variable verwenden möchten. <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic muniert es jedoch, wenn <span class="T1">Option Explicit</span> definiert wurde, da der Variablenname nicht definiert wurde. Sie erkennen in diesem Fall den Programmfehler als Tippfehler beim Programmablauf, sobald die "falsche" Variable das erste Mal verwendet wird.</p>
<p class="Paragraph"><help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic kennt eine ganze Anzahl verschiedener Variablentypen. Grundsätzlich werden Variablentypen in vier Typenkategorien unterteilt:</p>
<p class="Paragraph"><span class="T1">Numerische Variablen:</span> Numerische Variablen nehmen Zahlen mit unterschiedlichen Wertebereichen auf. Es gibt Typen, die größere und andere, die kleinere Wertebereiche speichern. Man unterscheidet des weiteren zwischen Typen, die ganzzahlige Werte, also solche ohne Nachkommastellen, speichern, und Fließkommatypen, die auch gebrochene Zahlen speichern können. Alle Typen haben Vor- und Nachteile: Typen, die kleinere Wertebereiche und nur ganze Zahlen verarbeiten, benötigen vergleichsweise wenig Speicherplatz und beschleunigen die Bearbeitungsgeschwindigkeit. Fließkommatypen sind zwar rechenintensiver und benötigen mehr Speicherplatz, jedoch lassen sich mit ihnen sehr präzise Berechnungen durchführen.</p>
<p class="Paragraph"><span class="T1">Boolean-Variablen:</span> Boolean-Variablen speichern nur die Zustände TRUE und FALSE (wahr und falsch).</p>
<p class="Paragraph"><span class="T1">Objekt-Variablen:</span> Objekt-Variablen nehmen Objekte ganz unterschiedlicher Art auf. Objekte k├╢nnen beispielsweise Dokumente oder Tabellen innerhalb eines Dokuments sein. Mit Hilfe entsprechender Eigenschaften oder Methoden k├╢nnen diese Objekte dann vom Programm "bearbeitet" werden.</p>
<p class="Head3">Integervariablen</p>
<p class="Paragraph">Integervariablen speichern ganzzahlige Werte zwischen -32768 und 32767. Bei der Zuweisung von Fließkommawerten an eine Integervariable werden die Nachkommastellen abgeschnitten. "%" ist das Typendeklarationszeichen. Integervariablen lassen sich extrem schnell verarbeiten und werden vorwiegend als Zählvariablen in Schleifen eingesetzt. Integervariablen haben einen internen Speicherbedarf von 2 Bytes.</p>
<p class="Paragraph">Deklaration:</p>
<p class="PropText">DIM Variable%</p>
<p class="PropText">DIM Variable as INTEGER</p>
<p class="Head3">Long-Integervariablen</p>
<p class="Paragraph">Long-Integervariablen speichern ganzzahlige Werte zwischen -2.147.483.648 und 2.147.483.647. Bei der Zuweisung von Fließkommawerten an eine Integervariable werden die Nachkommastellen abgeschnitten. "&" ist das Typendeklarationszeichen. Long-Integervariablen lassen sich sehr schnell verarbeiten und werden vorwiegend als Zählvariablen in Schleifen eingesetzt, die einen erweiterten Wertebereich benötigen. Long-Integervariablen haben einen internen Speicherbedarf von 4 Bytes.</p>
<p class="Paragraph">Deklaration:</p>
<p class="PropText">DIM Variable&</p>
<p class="PropText">DIM Variable as LONG</p>
<p class="Head3">Single-Variablen</p>
<p class="Paragraph">Single-Variablen speichern Werte zwischen 3,402823 x 10E38 und 1,401298 x 10E-45, wobei der Wertebereich sowohl positiv als auch negativ sein kann. Single-Variablen fallen unter die Kategorie der Fließkomma-Variablen. Diese Typen haben die Eigenschaft, daß die Genauigkeit der Darstellung hinter dem Komma abnimmt, je größer der Teil vor dem Komma des darzustellenden Wertes wird. "!" ist das Typendeklarationszeichen. Single-Variablen werden bei mathematischen Berechnungen eingesetzt, bei denen eine durchschnittliche Berechnungsgenauigkeit ausreicht. Sie werden langsamer als alle Integervariablen und Currency-Variablen, aber schneller als Double-Variablen verarbeitet. Intern werden sie durch 4 Bytes gespeichert.</p>
<p class="PropText">DIM Variable!</p>
<p class="PropText">DIM Variable as SINGLE</p>
<p class="Head3">Double-Variablen</p>
<p class="Paragraph">Double-Variablen speichern Werte zwischen 1,79769313486232 x 10E308 und 4,94065645841247 x 10E-324, wobei der Wertebereich sowohl positiv als auch negativ sein kann. Double-Variablen fallen wie Single-Variablen unter die Kategorie der Fließkomma-Variablen, bei denen die Genauigkeit der Darstellung hinter dem Komma abnimmt, je größer der Teil vor dem Komma des darzustellenden Wertes wird. "#" ist das Typendeklarationszeichen. Double-Variablen werden bei mathematischen Berechnungen eingesetzt, bei denen eine extrem hohe Berechnungsgenauigkeit verlangt wird. Intern werden sie durch 8 Bytes gespeichert.</p>
<p class="PropText">DIM Variable#</p>
<p class="PropText">DIM Variable as DOUBLE</p>
<p class="Head3">Currency-Variablen</p>
<p class="Paragraph">Currency-Variablen werden intern als 64-bit-Zahlen (8 Bytes) in einem ganzzahligen Format dargestellt und durch 10.000 dividiert. Dadurch ergibt sich eine Festkommazahl mit 15 Vorkomma- und 4 Nachkommastellen. Diese Darstellung ergibt einen Wertebereich von -922.337.203.685.477,5808 bis +922.337.203.685.477,5807. Das Typendeklarationszeichen für Currency ist "@". Currency-Variablen eignen sich besonders für Berechnungen mit Geldbeträgen und Festkommaberechnungen, die eine hohe Genauigkeit erfordern.</p>
<p class="PropText">DIM Variable@</p>
<p class="PropText">DIM Variable as CURRENCY</p>
<p class="Head3">String-Variablen</p>
<p class="Paragraph">String-Variablen speichern Zeichenketten von bis zu 64.000 Zeichen Länge. Ein Zeichen wird dabei durch ein Byte als ASCII-Code gespeichert. String-Variablen eignen sich hervorragend zur Textverarbeitung innerhalb von Programmen, können aber auch zur Zwischenspeicherung von beliebigen, nicht druckbaren Zeichen bis zur Länge von 64 KByte verwendet werden. "$" ist das Typendeklarationszeichen. Der verwendete Speicherplatz hängt von der Anzahl der Buchstaben bzw. Bytes ab, die in einer Variablen gespeichert werden.</p>
<p class="PropText">DIM Variable$</p>
<p class="PropText">DIM Variable as STRING</p>
<p class="Paragraph"/>
<p class="Head3">Boolean-Variablen</p>
<p class="Paragraph">Boolean-Variablen speichern lediglich die Zustände Wahr und Falsch. Wird der Inhalt einer Boolean-Variable z. B. durch den <span class="T1">Print</span>-Befehl ausgegeben, werden diese Zustände in -1 (TRUE, Wahr) und 0 (FALSE, Falsch) ausgegeben. Boolean-Variablen eignen sich dazu, binäre Zustände zu speichern, z. B. das Ergebnis eines Vergleichs. Intern werden Boolean-Variablen durch einen 2-Byte-Integerwert dargestellt. Wird einer Boolean-Variable ein Wert zugewiesen, so wird dieser automatisch zu "falsch" (0) konvertiert, solange er nicht genau -1 war. Boolean-Variablen haben kein spezielles Typendeklarationszeichen und können nur durch das entsprechende Schlüsselwort deklariert werden.</p>
<p class="PropText">DIM Variable as BOOLEAN</p>
<p class="Head3">Date-Variablen</p>
<p class="Paragraph">Date-Variablen speichern ausschließlich Datumswerte und Zeitwerte in einem bestimmten, internen Format, das den Programmierer jedoch nicht weiter interessieren muß. Date-Variablen können Werte zugewiesen werden, die beispielsweise durch <span class="T1">Dateserial</span>, <span class="T1">Datevalue</span>, <span class="T1">Timeserial</span> oder <span class="T1">Timevalue</span> von der "normal lesbaren" Darstellung in das interne Format umgewandelt werden. Die Zurückwandlung erfolgt mit den Funktionen <span class="T1">Day</span>, <span class="T1">Month</span> und <span class="T1">Year</span> bzw <span class="T1">Hour</span>, <span class="T1">Minute</span>, <span class="T1">Second</span>. Date-Variablen haben den Sinn, Daten, die in Variablen gespeichert sind, vergleichen zu können; dies geschieht durch die Umwandlung in eine ganze Zahl und Berechnung von Differenzen. Es gibt kein spezielles Typendeklarationszeichen - Date-Variablen können nur durch das Schlüsselwort <span class="T1">Date</span> deklariert werden.</p>
<p class="PropText">DIM Variable as DATE</p>
<p class="Head2">Definition von Variablen</p>
<p class="Paragraph">Sobald eine Variable deklariert wird, ist Sie automatisch auf den "Null"-Wert zurückgesetzt, d. h., daß der Programmierer nicht darauf achten muß, daß eine Variable, die deklariert wurde, manuell auf einen Basis-Wert zurückgesetzt werden muß. Es gilt folgende Regel:</p>
<p class="Paragraph"><span class="T1">Numerischen Variablen</span> wird automatisch der Wert 0 zugewiesen, sobald die Variable deklariert wurde.</p>
<p class="Paragraph"><span class="T1">Date-Variablen</span> wird intern der Wert 0 zugewiesen, das Ergebnis entspricht also einer entsprechenden Umwandlung des Wertes "0" mit einer der Funktionen <span class="T1">Day</span>, <span class="T1">Month</span> oder <span class="T1">Year</span> bzw. <span class="T1">Hour</span>, <span class="T1">Minute</span>, <span class="T1">Second</span>.</p>
<p class="Paragraph"><span class="T1">String-Variablen</span> wird direkt bei der Deklaration ein Leerstring ("") zugewiesen.</p>
<p class="Paragraph"><help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic kennt eine Reihe vordefinierter Systemvariablen, die bei einer Abfrage immer ein bestimmtes Ergebnis liefern. Diese finden Sie im folgenden beschrieben:</p>
<p class="Head3">TRUE und FALSE</p>
<p class="Paragraph">Diese beiden Variablen sind vom Typ Boolean und liefern den Wert 0 (FALSE, Falsch) oder den Wert -1 (TRUE, Wahr) zur├╝ck. Man verwendet diese Variablen zum Beispiel in <span class="T1">If...Then...Else</span>-Abfragen, um den Wahrheitsgehalt eines Vergleichs zu testen. Wie in Basic ├╝blich, werden Vergleiche durch die Vergleichsoperatoren (=, <, >) abgefragt. Die Anweisung</p>
<p class="PropText">PRINT 5=3</p>
<p class="Paragraph">ergibt beispielsweise den Wert 0 (FALSE, Falsch), da der Ausdruck das Ergebnis "Aussage (Vergleich) unwahr" hat. Die Anweisung</p>
<p class="PropText">PRINT 5>3</p>
<p class="Paragraph">ergibt hingegen den Wert -1 (TRUE, Wahr), da der Ausdruck das Ergebnis "Aussage (Vergleich) wahr" hat. Die Verwendung der Systemvariablen bildet rein technisch keinen Unterschied zur Verwendung der direkten Zahlenwerte 0 und -1; Programmcode, der mit Hilfe dieser Variablen arbeitet, wird jedoch für Außenstehende leichter lesbar.</p>
<p class="Head3">PI</p>
<p class="Paragraph">PI ist eine mathematische Konstante und ergibt als numerisches Ergebnis stets die Kreiszahl Pi = 3,141592657...</p>
<p class="Head2">Arrays</p>
<p class="Paragraph"><help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic kennt ein- oder mehrdimensionale Arrays (Felder), denen ein bestimmter angebbarer Variablentyp zugrunde liegt. Arrays werden immer dann verwendet, wenn im Programm Listen oder Tabellen verarbeitet werden sollen. Der Vorteil von Arrays ist, daß man die einzelnen Elemente über Indizes ansprechen kann, die selbst ebenfalls in Form von numerischen Ausdrücken oder Variablen formuliert werden können.</p>
<p class="Paragraph">Arrays werden mit dem <span class="T1">Dim</span>-Befehl deklariert. Es gibt dabei zwei M├╢glichkeiten festzulegen, in welchem Bereich die Indizes angesprochen werden k├╢nnen:</p>
<p class="PropText">33 Elemente, Dimension 0, von 0 bis 10, <text:s text:c="" xmlns:text="http://openoffice.org/2000/text"/>Dimension 1 von 0 bis 10, Dimension 2, von 0 bis 10.</p>
<p class="PropText">21 Elemente (das 0. ebenfalls!), von -15 bis 5 durchnummeriert</p>
</span></td></tr></table>
<p class="Paragraph">Der Bereich der Indizes kann sowohl positive als auch negative Werte annehmen. Die maximal mögliche Anzahl der Elemente, die durch Indizes angesprochen werden können, beträgt 16368.</p>
<p class="Head2">Konstanten</p>
<p class="Paragraph">Konstanten sind eine "Abart" von Variablen und dienen nur der besseren Lesbarkeit eines Programms. Konstanten werden nicht als bestimmter Typ definiert, sondern werden als reiner Programmcode-Platzhalter verwendet. Eine Konstante kann nur ein einziges Mal im Programm definiert und dann nie wieder umdefiniert werden. Sie definieren eine Konstante mit folgender Befehlszeile:</p>
<p class="PropText">CONST ConstName=Ausdruck</p>
<p class="Paragraph">Dabei ist es v├╢llig egal, um was f├╝r einen Ausdruck es sich handelt. Wird ein Programm gestartet, so wird <help:productname xmlns:help="http://openoffice.org/2000/help">%PRODUCTNAME</help:productname> Basic-intern der Programm-Code umgearbeitet; dabei wird f├╝r jede Konstante der zuvor definierte Ausdruck eingesetzt. Im Prinzip wird intern ein "Suchen/Ersetzen" durchgef├╝hrt. Der Konstantenname, wann immer er im Basic-Programm-Code verwendet wurde, wird durch den festgelegten Ausdruck ersetzt. Aus diesem Grund spielt der Typ, der einer Konstanten zugewiesen wird, auch ├╝berhaupt keine Rolle, da intern sowieso nur der Ausdruck als solcher verwendet wird.</p>