Topic : Online-Hilfe zu Omikron.Basic 5 Author : Karsten Lüdersen @ HH Version : OM-Basic-Hilfe 0.60 Subject : Programmieren/Basic Nodes : 1054 Index Size : 29270 HCP-Version : 4 Compiled on : Atari @charset : atarist @lang : @default : @help : Hilfe @options : +g -i +y +z -t4 -d24 @width : 75 View Ref-FileVariablentypen Omikron.Basic Omikron.Basic stellt eine ganze Reihe verschiedener Variablentypen zur Verfügung, die für verschiedene Zwecke nützlich sind. Im Interesse der Schnelligkeit des Programms sollte nach Möglichkeit immer mit Integer-Variablen gearbeitet werden, wenn als Variablenwert nur ganze Zahlen in Betracht kommen. Da Strings ganz besonders kompliziert sind, sollten sie vermieden werden, wenn es irgendwie geht. Die Variablen-Namen können fast beliebig gebildet werden. Siehe dazu auch Erlaubte Zeichen in Variablennamen. Ein Variablen-Name kann auch mehrmals im gleichen Programm mit verschiedenen Postfixen (also verschiedenen Wertebereichen) vorkommen. Sie werden vollständig unabhängig von einander verwaltet. Dafür sorgt das Postfix. Im Einzelnen sind folgende Variablentypen möglich: Integer Integerzahlen sind ganze Zahlen, also zahlen ohne Nachkommastellen. Ihr Zahlenbereich ist auf die unten angegebenen Werte beschränkt. Der Vorteil von Integer-Zahlen ist die schnelle Abarbeitung und daß es keine Rundungsfehler gibt. Long-Integer: Rechenbereich: -2147483658 bis +2147483657 Speicherplatzbedarf: 4 Bytes (= 4 Zeichen) Postfix: %L z.B. A%L, A%L(1) Integer-Word: Rechenbereich: -32768 bis +32767 Speicherplatzbedarf: 2 Bytes (= 2 Zeichen) Postfix: % z.B. A%, A%(1) Integer-Byte: Rechenbereich: 0 bis 255 Speicherplatzbedarf: 1 Byte (= 1 Zeichen) Postfix: %B z.B. A%B(1) Flag/Boolean: Rechenbereich: "falsch" (0) und "wahr" (-1) Speicherplatzbedarf: 1 Bit (= ein achtel Zeichen) Postfix: %F z.B. A%F(1) Die Variablentypen Integer-Byte und Flag/Boolean können nur in Feldern und nicht als eigenständige Variablen benutzt werden. Float/Fließkomma Fließkommazahlen sind Zahlen mit Nachkommastellen. Ihr Zahlenbereich ist (fast) gar nicht begrenzt, da sie einen Zehnerexponenten besitzen. Reicht der Zahlenbereich der Mantisse nicht aus, so wird der Exponent jeweils um eins erhöht und die Mantisse wird um eine Stelle nach rechts geschoben. Je größer die Zahl ist, desto ungenauer ist sie deshalb auch. Die Stellenanzahl bleibt aber immer gleich. Eine Fließkommazahl sieht z.B. so aus: 123,45678 mal 10 hoch 2 Mantisse Exponent Vorteile dieser Zahlen sind die Nachkommastellen und daß sich die Genauigkeit der Zahl der Größenordnung anpaßt. Nachteil ist die im Vergleich zu Integerzahlen geringe Verarbeitungsgeschwindigkeit (vier- bis achtfache Rechenzeit). Außerdem sind bei Float-Zahlen Rundungsfehler möglich. 1/3 ist eben doch etwas anderes als 0.33333333. Denn Float-Zahlen sind zwar genauer als Integer, aber nicht endlos. Single-Float: Rechenbereich: +/-5,11 mal 10 hoch 4931 Genauigkeit: 9,5 Stellen Speicherplatzbedarf: 6 Byte (= 6 Zeichen) Postfix: ! z.B. A!, A!(1) Double-Float: Rechenbereich: +/-5,11 mal 10 hoch 4931 Genauigkeit: 19 Stellen Speicherplatzbedarf: 10 Byte (= 10 Zeichen) Postfix: # z.B. A#, A#(1) String Ein String ist eine Zeichenkette, d.h. ein Text von bis zu 32766 Zeichen Länge. Der Text kann alle beliebigen Zeichen von 0 bis 255 enthalten. Strings werden vom Basic ähnlich wie in Pascal verwaltet (die Länge des Strings steht davor). Da ein String variabel lang sein kann verwaltet das Basic eine Tabelle mit Zeigern auf den eigentlichen String-Inhalt. Wenn der String-Inhalt verändert wird verändert sich auch die Position, an der der String steht. Da dieses Verfahren sehr aufwendig ist ist die Verwendung von Strings so langsam im Vergleich zu anderen Variablentypen. Darüberhinaus entsteht bei der Bearbeitung von String-Variablen ständig "Variablenmüll" (Garbage), der gelegentlich aufgeräumt werden muß. Sie können das mit einer kleinen Schleife, die einen String manipuliert und anschließend den freien Speicher (FRE("")) ausgibt, sehr einfach selber nachvollziehen: der freie Speicher wird kontinuierlich kleiner. Wenn der Speicher fast völlig belegt ist, ist plötzlich wieder ganz viel freier Speicher vorhanden: das Basic hat eine "Garbage Collection" ausgeführt und seinen Speicher von Variablenmüll befreit (was natürlich auch wieder Zeit kostet). Strings sollten deshalb auf keinen Fall benutzt werden, wenn stattdessen auch Integer-Variable verwendet werden können. OK$="Ja" bzw. OK$="Nein" ist wesentlich aufwendiger als OK%=-1 bzw. OK%=0. Wenn Sie nur einen einzelnen Buchstaben benötigen ist es - besonders in Schleifen, die häufig durchlaufen werden - sinnvoll, statt des Buchstabens den entsprechenden ASCII-Wert in eine Integer-Variable zuweisen (siehe ASC) und dann damit arbeiten. String: Speicherplatzbedarf: 16 Bytes (= 16 Zeichen) plus die Länge des Strings. Konstanten Konstanten sind Zahlen, die sich nicht verändern (also keine Variablen :-)). Aber auch sie haben einen Typ, der den Variablentypen entspricht und von der Schreibweise und dem Wert der Konstanten abhängt: 123 Short-Integer 35000 Long-Integer 123. Single-Float (!) 1.3 Single-Float 1E20 Single-Float 123! Single-Float 123# Double-Float 1D20 Double-Float 1.23456789 Double-Float "hallo" String. Eine Zahl, die eines der folgenden Zeichen enthält, ist automatisch eine Fließkommazahl: . ! # E D Die Postfixe ! und # können also auch hinter Zahlen stehen. Der Buchstabe E steht für "Zehnerexponent" und D für "Zehnerexponent einer Double-Float-Zahl.