•  Back 
  •  Inhalt 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Hilfe 
  •  Show info about hypertext 
  •  View a new file 
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.