|
|
|
|
|
Basic-Befehle
Syntaxerklärung
Zu den Beispielen
Weitere ErklärungenMathematische Operatoren
Priorität der Operatoren
Vergleichsoperatoren
Pointer und Adressoperatoren
BASIC-Befehle
Der Omikron Basic 6 Editor akzeptiert eine ganze Reihe von BASIC-Befehlen, die Überbleibsel
älterer Versionen sind und dort unter anderem zur Steuerung des alten Editors
und des alten Interpreters dienten. Diese Funktionen werden in Omikron Basic 6 entweder
vom Editor selbst ausgeführt (z.B. LIBRARY, DEFINT, RENUM usw.) oder sie haben
wegen der neuen Benutzeroberfläche überhaupt keine sinnvolle Bedeutung.
Bei einigen handelt es sich auch um typische Interpreterbefehle, die darum vom Compiler
schon immer ignoriert wurden. Andere wiederum benutzten spezielle Eigenschaften der
ATARI-Hardware oder des ATARI-Betriebssystems und spielen deswegen auf dem MAC keine
Rolle.
Um die Kompatibilitätsprobleme mit alten Programm gering zu halten (meist reicht
es schon, wenn die besagten Befehle einfach ignoriet werden), wurde Omikron Basic
6 so programmiert, daß der Editor auch die ungültigen Befehle versteht,
diese vom Compiler aber übersprungen werden.
In dem Kapitel 'Der Befehlssatz' sind die bedeutungslosen Befehle in grauer Schrift
dargestellt. Diese Schlüsselwörter dürfen Sie für eigene Zwecke
nicht verwenden.
Syntaxerklärung
Angaben in spitzen Klammern <...> sind durch entsprechende Ausdrücke zu
ersetzen.
Angaben in eckigen Klammern [...] sind, je nach gewünschter Anwendung, wegzulassende
Ergänzungen.
Sind um einen Ausdruck zwei eckige Klammern [[...]] gesetzt, so kann, je nach Anwendung,
dieser Ausdruck weggelassen werden, einmal oder mehrmals erscheinen.
Angaben in geschweiften Klammern {...|...} stellen eine Auswahl dar, aus der eine
der durch "|" getrennten Alternativen auszuwählen ist.
Zu den Beispielen
Zu vielen Befehlen sind kurze Beispielprogramme in einem hellgelb hinterlegtem Feld
angegeben. Die meisten dieser Programme können direkt abgetippt oder einfacher
aus dem Online-Handbuch ausgeschnitten und in ein Programm-Fenster wieder eingesetzt
werden. Um ein compilierbares Programm zu erhalten, müssen allerdings in vielen
Fällen noch einige Compiler Steuerwörter gesetzt werden. (Siehe das Programm
Mandelbrot.BAS im Ordner DEMO). Bei einigen Programmen werden auch Funktionen aus
der ExtensionLibrary verwendet. In diesen Fällen muß die Library vom Editor
aus mit 'LIBRARY zuladen ...' vorher in das Programm integriert werden.
Bildschirmergebnisse stehen darunter in einem etwas dunklerem Gelb, sofern es sich
nicht um Grafiken etc. handelt. In diesen Fällen wird das Verhalten des Programms
verbal beschrieben.
<num.Ausdruck>
Ein numerischer Ausdruck ist ein beliebiger Term, der ein numerisches Ergebnis liefert.
Dabei spielt der Typ (ganzzahlig, einfach- oder doppeltgenau) keine Rolle. Der Compiler
führt bei der Übersetzung eine automatische Typconvertierung durch. Wenn
jedoch z.B. von einem Befehl immer nur ein Integertyp erwartet wird, sollten Sie
darauf achten, daß auch immer nur Integer übergeben werden. Dadurch wird
das compilierte Programm kürzer und schneller.
<String-Ausdruck>
Ein Ausdruck vom Typ String.
<Dateiname>
Ein Dateiname ist ein String, der einen FileSpezificationRecord
enthält und folgenden Aufbau hat:
| 2 Byte VolumeReferenceNumber oder
0, wenn diese nicht bekannt ist. 4 Byte DirectoryIdentificationNumber oder 0, wenn diese nicht bekannt ist. 1 Byte Länge des nachfolgenden Dateinamens,Dateipfades oder Teilpfades. 1-63 Byte Dateiname, Dateipfad oder Teilpfad. |
<num.Variable>
Numerische Variable gleich welchen Typs. In Einzelfällen sind möglicherweise
nur einfache Variablen zugelassen und keine Felder.
<Rückgabe-Variable>
Liefert den Ergebniswert eines Befehls oder einer Funktion zurück. Z.B. bei
INPUT USING Art der Abbruchbedingung.
<Parameter>
Die an eine Funktion oder Prozedur übergebenen Werte. Bei Aufrufen mit CALL
kann durch ein vorangestelltes "L" eine Übergabe als Long-Integer
bewirkt werden.
<Bitnummer>
Vorzeichenlose Zahl zwischen 0 und 31. Die Wertigkeit des entsprechenden Bits ist
2^<Bitnummer>
<Integer-Variable>
Ganzzahlige Variable (Word=16Bit oder Long=32Bit), auch Feldvariablen sind zulässig.
<Speicheradresse>
32 Bit breite Long-Integer-Zahl, die eine bestimmte Speicherzelle benennt.
<Marke>
Eine Marke bezeichnet eine bestimmte Stelle eines Programms und kann alle für
Variablennamen zugelassenen Zeichen enthalten. Eine Marke kann sein:
1. Eine bestimmte Zeile:
Wenn mit Zeilennummern gearbeitet wird, kann man durch Nennung der Nummer eine bestimmte
Zeile erreichen. Die Zeilennummer kann auch berechnet werden, d.h. als Marke ist
auch ein beliebiger numerischer Ausdruck zugelassen. Wenn der Ausdruck jedoch aus
einer einzigen numerischen Variablen besteht, so ist diese in Klammern zu setzen,
um nicht mit einem Label verwechselt zu werden.
2. Ein bestimmtes Programm-Label:
An jeder Stelle des Programms kann mit "-<Bezeichner>" ein Label
vereinbart werden. Der Bezeichner darf alle für Variablennamen zugelassenen
Zeichen enthalten (alle Buchstaben, Ziffern, "_" und die Zeichen von 128
bis 255). Will man sich auf ein solches Label beziehen, wird einfach der Bezeichner
genannt, das vorangestellte Minuszeichen unterbleibt. Man kann stattdessen das Label
auch über einen String-Ausdruck benennen. Er muß den Bezeichner des Labels
enthalten und sollte nicht länger als acht Zeichen sein, da der Compiler nur
die ersten 8 Zeichen zur Identifikation auswertet. (Gilt nur, wenn über einen
String-Ausdruck auf das Label zugegriffen wird).
Insgesamt empfiehlt es sich, auf numerische oder String-Ausdrücke für Zeilennummern bzw. Label zu verzichten, da diese zur Laufzeit erst ausgewertet werden müssen und der Programmablauf dadurch verlangsamt wird.
<Laufwerk>
Laufwerk steht für ein Volume (z.B. Festplatte, CD-ROM oder Diskette) und kann
beliebige Namen haben gefolgt von einem Doppelpunkt.
<Winkel>
Winkelangaben bei Grafik-Befehlen sind stets in 1/10 Grad vorzunehmen,
d.h. z.B. 900 entspricht 90 Grad.
<Dateinummer>
Eine vorzeichenlose Zahl zwischen 1 und 16. Die Zahl steht in fester Verbindung mit
der zugehörigen Datei (siehe OPEN). Alle Befehle und Funktionen wirken auf die
Datei, die der Dateinummer durch OPEN zugeordnet wurde.
![]()
Omikron Basic stellt eine ganze Reihe verschiedener Variablentypen zur Verfügung, die für die unterschiedlichen 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. Ein Variablen-Name kann auch mehrmals im gleichen Programm mit verschiedenen Postfixen (also verschiedenen Wertebereichen) vorkommen. Sie werden vollständig unabhängig voneinander verwaltet. Dafür sorgt das Postfix. Für Variablen-Namen sind die ASCII-Zeichen von 48-57, 65-90, 95, 97-122 und 128-255 erlaubt. Die Namen dürfen allerdings nicht mit einer Zahl beginnen, damit das BASIC sie von Konstanten unterscheiden kann.
Die Zeichen ab 128 können auf verschiedene Weise erreicht werden:
1. Mit einer Vortaste. Sie drücken zunächst F1 und geben dann ein normales Zeichen ein. Durch F1 wird zu dem ASCII-Code dieses Zeichens 64 addiert. Das gleiche bewirkt F2, nur daß 128 addiert wird.
2. Bei gedrückter 'Alt' Taste kann der ASCII-Code des Zeichens direkt über die Tasten des Zehnerblocks eingegeben werden. Sobald man die 'Alt' Taste losläßt oder 3 Ziffern eingegeben wurden, erscheint das Zeichen auf dem Bildschirm.
3. Durch eine Kombination der Modifier-Keys mit normalen Tasten können die länderspezifischen Sonderzeichen erreicht werden.
Damit läßt sich jetzt z.B. schreiben:
Länge = Höhe * SIN(ß)
Ein geeigneter Zeichensatz vorausgesetzt.
siehe auch ASCII-Codes
Die Variable A soll nur ein Beispiel sein. Omikron
Basic unterscheidet jede einzelne Variable voneinander, obwohl
sie alle A heißen. Durch die Postfixe für die einzelnen Variablentypen
unterscheiden sie sich bereits. Wenn Sie die Variable A%L bereits verwendet
haben, können Sie sogar noch ein davon unabhängiges Feld A%L(1)
und eines A%L(1,2) verwenden. Hier besteht nämlich der Unterschied in
der Dimension der Felder. Es ist jedoch besser, solche Namensgleichheiten zu vermeiden,
sonst kann ein Progarmm schnell unübersichtlich werden.
Sie können übrigens für jedes als erstes Zeichen erlaubte Variablenzeichen
einen Standard-Variablentyp vergeben. Jede Variable, die mit eben diesem Buchstaben
beginnt, hat dann automatisch den Standard-Variablentyp, es sei denn, Sie geben
das Postfix eines anderen Variablentyps explizit an. (s.a. Dialogbox
Editoreinstellungen)
Im Einzelnen sind folgende Variablentypen möglich:
Integer (ganze Zahl)
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: | -2147483648 bis +2147483647 |
| Speicherplatzbedarf: | 4 Bytes (= 4 Zeichen) | |
| Postfix: | %L z.B. A%L, A%L(1) | |
| Short-Integer: | Rechenbereich: | -32768 bis +32767 |
| Speicherplatzbedarf: | 2 Bytes (= 2 Zeichen) | |
| Postfix: | % z.B. A%, A%(1) | |
| Byte-Integer: | 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) |
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 |
| Single-Float: | Rechenbereich: | +/-1.4x10^-45 bis 3.4x10^+38 |
| Genauigkeit: | 7-8 Stellen | |
| Speicherplatzbedarf: | 4 Byte (= 4 Zeichen) | |
| Postfix: | ! z.B. A!, A!(1) | |
| Double-Float: | Rechenbereich: | +/-4.9x10^-324 bis 1.8x10^+308 |
| Genauigkeit: | 15-16 Stellen | |
| Speicherplatzbedarf: | 8 Byte (= 8 Zeichen) | |
| Postfix: | # z.B. A#, A#(1) |
String (Zeichenkette)
Ein String ist eine Zeichenkette, d.h. ein Text von bis zu 2147483648 Zeichen Länge.
Der Text kann alle beliebigen Zeichen von 0 bis 255 enthalten. Strings werden vom
Omikron Basic sehr effektiv verwalt, woraus eine gegenüber anderen BASIC-Varianten
sehr hohe Verarbeitungsgeschwindigkeit resultiert.Die Länge eines Strings kann
sich während des Programmablaufs beliebig ändern (Dynamische Stringverwaltung).
Strings brauchen deshalb in Omikron Basic nicht, wie in vielen anderen BASIC-Dialekten
und Programmiersprachen, dimensioniert zu werden.
Da trotz der hochoptimierten Verwaltung die Verwendung von Strings niemals so schnell
sein kann, wie die Arbeit mit Integern, sollten Sie Strings nur benutzen, wenn das
Problem nicht genau so gut mit Integern zu bewältigen wäre.
Wenn Sie z.B. nur einen einzelnen Buchstaben benötigen, ist es - besonders in
Schleifen, die häufig durchlaufen werden - sinnvoll, statt des Buchstabens den
entsprechenden ASCII-Wert einer Integervariablen zuzuweisen (siehe ASC) und dann
damit zu arbeiten.
| String: | Speicherplatzbedarf: | 16 Bytes (= 16 Zeichen) plus die Länge des Strings. |
| Postfix: | $ z.B. A$, A$(1) |
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. | Double-Float |
| 1.3 | Double-Float |
| 1E20 | Single-Float |
| 123! | Single-Float |
| 123# | Double-Float |
| 1D20 | Double-Float |
| 1.23456789 | Double-Float |
| "hallo" | String. |
Operatoren
Omikron Basic stellt
eine große Anzahl von Operatoren zur Verfügung, die nach Funktionsgruppen
gegliedert nachfolgend besprochen werden.
| Zeichen: | Bedeutung: |
|
+ |
Addition |
|
- |
Subtraktion |
|
* |
Multiplikation |
|
/ |
Division |
|
^ |
Potenzieren |
|
+= |
Addition mit Zuweisung |
|
-= |
Subtraktion mit Zuweisung |
|
*= |
Multiplikation mit Zuweisung |
|
/= |
Division mit Zuweisung |
| \ | Integer-Division: Liefert das auf eine ganze Zahl abgerundete Ergebnis einer Division zurück |
|
MOD |
Modulo-Operator: Liefert den Rest einer ganzzahligen Division |
Omikron Basic stellt die folgenden Vergleichs-Operatoren
zur Verfügung:
| Zeichen: | Bedeutung: |
| > | größer als |
| < | kleiner als |
| = | gleich |
| >= | größer oder gleich |
| <= | kleiner oder gleich |
| <> | ungleich |
"*" greift auf ein Objekt zu (dereferenziert es). Direkt hinter dem Operator muß die Zeigervariable folgen. Welcher Typ gemeint ist, muß auch hier, wie bei einer normalen Variablen, noch mit einem Postfix angegeben werden. Speziell wenn es sich um einen Zeiger auf Funktionen handelt, ruft "*" die Funktion auf, auf die die Zeigervariable zeigt.
Alle hier aufgeführten Operatoren sind in Kapitel 5 im Einzelnen erklärt und nach Ihrer Priorität (Rangfolge) aufgelistet. Die weiter oben stehenden Operatoren haben eine höhere Priorität, als die darunter stehenden. Alle Operatoren in einer Zeile haben die gleiche Priorität.
( , ) (Klammern)
(höchste Priorität)
& (Adressoperator), *(Pointeroperator), FN (Funktion)
NOT, +, - (als Vorzeichen)
^ (Potenzieren)
SHL, SHR
*, /
\, MOD
+, -
<, <=, >, >=, <>
AND
OR
EQV, IMP, NAND, NOR, XOR (niedrigste
Priorität)
| Beispiel: | PRINT -3^2, (-3)^2, 3*1 SHL 2, (3*1) SHL 2 |
| Ergebnis: | -9 9 12 12 |
| Beispiel: | PRINT -1>=2 OR 1<2, -1>=((2 OR 1)<2) |
| Ergebnis: | -1 0 |
|
|
|
Support | Bestellen | Start | Home: http://www.berkhan.de |
|
© 1997-2001 |