- 29 -
630 man ziehe eine Linie nach Punkt HO, VE in Farbe CN
650 man drucke SRS als Text aus der Position HO; VE
950 man schließe das Programm ab und schalte die Maschine auf
normalen Betrieb
4.5 Variable und BASIC-Aufträge
Die Variablen, die im Programm verwendet werden, sind an einige
Einsachränkngen gebunden. Das ist nötig, um die
Austauschbarkeit des Programms zu gewährleisten.
a. Numerisache Variable sind "real" und haben einige Präzision.
Die Genauigkeit beträgt in Abhängigkeit vom Computer mitunter
nicht mehr als 6 Dezimale; man rechne auf keinen Fall mit einer
größeren Genauigkeit.
b. Die Namen der Variablen sind maximal zwei Zeichen lang, wobei
das erste Zeichen ein Großbuchstabe sein muß. Wenn noch ein
weiters Zeichen folgt, darf es ein Großbuchstabe oder eine
Zahl sein. In Namen von Variablen dürfen somit keine
Kleinbuchstaben gebraucht werden. Für "String" -Variable
folgt dem Namen ein S. Alle anderen Zusätze (wie %,# und !) sind in BASICODE-3
untersagt.
c. Logisch Variable sind Variable, die "wahr" oder "unwahr"
sind. Es darf kein Gebrauch gemacht werden, von dem evtl.
numerischen Wert logischer Variablen. In einigen Computern
wird "wahr" nämlich
- 30 -
ducrch +1 dargestellt, in anderen d3urch -1.
Das Ergebnis kann nur verwendet werden in einer
IF...THEN-Konstruktion (so etwas wie A=3*(B=1) ist also
absolut nicht erlaubt! Man gebrauche in einem solchen Falle
beispielsweise A=0: IF B=1 THEN (A=3).
d. Bevor eine Variable verwendet wird, muß sie stets einen
Wert bekommen. Sie dürfen mithin nicht annehmen, daß die
Variablen beim Start eines Programmes automatisach auf Null
gesetzt werden.
e. "String"-Variable dürfen maximal 255 Zeichen lang sein.
f. Namen von Variablen dürfen nich mit dem Buchstaben O
beginnen. So lche Namen sind dem Gebrauch innerhalb der
BASICODE-3-Standardroutinen vorbehalten.
g. Ausgeschlossen sind gleichzeitig folgende Variablen:
AS, AT, DI, EI, FN, GO, GR, IF, LN, PI, SQ, ST, TI, TIS, TO.
h. Beim Aufrufen von BASICODE-3-Subroutinen können die
fkolgenden Variablen verwendet werden: CN, CT, FR, HG, HO, IN,
INS, NF, NFS, RV, SD, SP, SR, SRS, SV, VE, VG.
4.6 Erlaubte BASIC- Aufträge
Dieser Paragraph gibt eine erschöpfende Darstellung der
Programme in BASIC. Von jedem Auftrag wird eine kurze,
sachliche Beschreibung gegeben, weil das BASICODE-3-Protokoll
der Verwendung mancher Aufträge einige Einschränkungen
auferlegt.
- 31 -
Ausschließlich die nachstehenden BASIC-Aufträge und -Operatoren
dürfen in den Programmen verwendet werden:
ABS AND ASC ATN CHRS COS DATA DIM
EXP FOR GOSUB GOTO IF INPUT INT LEFTS
LEN LET LOG MIDS NEXT NOT ON OR
PRINT READ REM RESTORE RETURN RIGHTS SGN SIN
SOR STEP TAB TAN THEN TO VAL
Graphisache Zeichen vgl. Or. S. 34 unten
Nachstehen finden Sie in alphabetischer Reihenlfolge die
Beschreibungen der Arbeitsweise der erlaubten BASIC-Aufträge.
ABS Gibt den absoluten Wert der mitgegebenen Variablen.Beispiele:
A = 10 : B = ABS (A) nach Ablauf ist B = 10
A = -20 : B = ABS (A) nach Ablauf ist B = 20
A = -1 : B = ABS (A-5) nach Ablauf ist B = 6
AND Logisches AND. Darf nur verwendet werden, für logische
Variable. Das Ergebnis ist ein logisacher Ausweg. Die
Verwendung von Klammern, um die Bearbeitiungsfolge klar
anzugeben, ist in BASICODE-3 obligatorisch.
Beispiele:
IF (A=5) AND (B=0) THEN ...
Q=(A=5) AND (B=0) : IF Q THEN ...
ASC Gibt den ASCII-Wert des ersten Zeichens des mitgegebenen
'string'.
- 32 -
Beispiele:
AS = "A" : B=ASC(AS) meistens gilt jetzt: B=65
AS = "BEER" : B=ASC(AS) meistens gilt jetzt: B=66
Nachbemerkung: Bei einigen Computer-Typen wird intern ein
anderer Code für die verschiedenen Zeichen verwendet. Es
kann dann beispielsweise geschehen, daß in den obigen
Beispielen in B die Zahlen 193 bzw. 194 stehen. Was die
Buchstaben oder Zahlen betrifft, gilt wohl immer, daß sich
die abweichenden Werte um ein Vielfaches von 32 vom
"normalen" Wert unterscheiden. Die Verwendung der
ASC-Funktion muß daher am besten so weit wie nur möglich
vermieden werden.
ANT Gibt den Arctangens in Radialen der beigegebenen Variablen.
Beispiele:
PRINT ANT(1) gibt das Ergebnis .785398
PRINT ANT(-1.5) gibt das Ergebnis -0.982794
CHRS Gibt ein Zeichen, das im Computer übereinstimmt mit dem
Wert der mitgegebenen Variablen. Die Variable darf einen
Wert von 32 bis einsachlileßl. 127 annehmen. Bei Werten,
die kleiner sind als 32, ist Vorsicht am Platze, da sich die
Kontrollzeichen bei verschiedenen Computern stark
unterscheiden; lediglich die RETURN-Taste hat immer ASCII-
Code 13.
Beispiel:
AS=CHRS(66) AS enthält jetzt (meistens) den Buchstaben B.
Wie bereits bei ASC erwähnt, gibt es Computer,
- 33 -
die intern abweichende Codes verwenden. Man gebrauche daher
auch die CHRS-Funktion mit der gößtmöglichen Vorsicht.
COS Gibt den 0co2sinus des mitgegebenen Winkels. Die Variable
muß den Winkel in Radialen enthalten.
Beispiel:
PRINT COS(1) gibt das Ergebnis .540302
DATA Nach diesem Kommando folgen bis zum Ende des Zeile Werte
für Variable, die mit READ gelesen werden können. Auf der
Zeile dürfen nach mit READ zu lesenden Variablen keine
anderen Kommandos (beispielsweise REM) auftreten.
Beispiel:
DATA 100, 200, "HALLO", "BASICODE", 4.6.89
DIM muß immer verwendet werden, um 'arrays' zu dimensionieren.
Ein 'array' darf nur einmal in einem Programm dimensioniert
werden, und zwar ehe es im Programm verwendet wird. Die
Zahl der Dimensionen beträgt im BASICODE-3 maximal zwei. die
zahl der Elemente wird begrenzt durch die Größe des
Gedächtnisses. Verschiedene 'arrays' dürfen mit dem gleichen
DIM-Auftrag dimensioniert werden. Man vergleiche das
Beispiel.
Nachbemerkung 1: Bei einigen Computern brauchen 'arrays' bis zu
zehn Elementen nicht dimensioniert zu werden. In
BASICODE-Programmen ist das an sich immer nötig!
- 34 -
Nachbemerkung 2: Auch das Element mit der Nummer 0 mach mit,
also A(0), und ADS (0,0) gibt es auch.
Beispiel:
DIM AS(12), HD(100,100), MP(1000).
EXP Erhebt die Zahl e (2.71828...)in eine bestimmte Potenz.
Beispiel:
PRINT EXP(2) erbringt als Ergebnis 7.38906
FOR FOR ... TO ... STEP ... NEXT ...
Schleifenkonstruktion; die Schleife wird midesten einmal
durchlaufen. STEP und der Wert dürfen weggelassen werden,
die Schrittgröße ist dann 1. Nach NEXT muß immer die
Variable mitgegeben werden! Mehr als eine Variable nach
NEXT ist nicht zulässig.
Beispiele:
FOR X=10 TO 100
PRINT X,X+34
NEXT X
FOR C=A TO B STEP -3
PRINT C,C-B
NEXT C
FOR I=1 TO 10; FOR J=1 TO 5
PRINT I; " "; J; "="; I; J
NEXT J : NEXT I
Nachbemerkukng: Man verhüte das Springen aus einer FOR-NEXT-
Schleife, ohne daß diese beendet ist! Man verlasse eine
FOR-NEXT-Schleife also nur über NEXT, nötigenfalls durch
die Schleifenvariable auf den Endwert zu setzen.
Verwenden Sie in Fällen, bei denen Sie aus der
- 35 -
Schleife springen wollen, kein FOR-NEXT für die
Schleifenstruktur.
GOSUB Man rufe eine Subroutine auf, beginnend bei der
Zeilenzahl, die hinter diesem Kommando erwähnt wird.
Beispiel:
GOSUB 100
Nachbemerkung: Verboten ist A = 100: GOSUB A
GOTO Man springe auf die Zeilenzahl, die hinter diesem
Kommando erwähnt wird.
Beispiel:
GOTO 1500
Nachbemerkung 1: Verboten ist A=1500. GOTO A
Nachbemerkung 2: Ein GOTO-Auftrag darf nie auf eine
nicht vorhandene Zeilennummer oder auf eine Zeilennummer in
einer BASICODE - Subroutine springen. Für das letztgenannte
gibt es zwei Ausnahmen:
-1- In Zeile 1000 muß GOTO20 stehen und
-2- GOTO950 muß mindestens einmal im Programm als
Absachluß Programmes vorkommen (an Stelle der in den
meisten BASIC- Versionen gebräuchlichen END- oder
STOP-Aufträge, die in BASICODE nicht erlaubt sind).
IF IF ... THEN Bedingte Spaltung. Zwischen IF und THEN steht
eine logische Variable oder ein logischer Vergleich. Wenn
dieser 'wahr' ist, geht die Ausführung nach THEN weiter,
wenn nicht, dann geht die Ausführung weiter auf die
nächste BASIC- Zeile. Auch kann nach THEN eine Zeilennummer folgen, wo
- 36 -
die Ausführung des Programmes weitergehen soll.
Nachbemerkkung: ELSE ist in BASICODE-3 nicht zulässig.
Beispiele: vgl. Or. S. 38 oben
INPUT Ersucht den Nutzer um Eingabe, die der Variablen nach
INPUT zuerkannt wird. Diese Variable darf eine numerisache
Variable oder eine 'string'-Variable sein. Ein
eingegebener 'string' darf keine Kommas oder
'Doppelpunkte' enthalten. Wenn man das doch wünscht,
sollte man lieber die Subroutine auf Zeile 210
verwenden. Ein 'prompt-string' ist nicht erlaubt,
ebensowenig wie mehr als eine Variable nach einem INPUT.
Die mesten BASICs drucken ein Fragezeichen, wenn
dieser Auftrag erteilt wird.
Nach dem Eintippen der Return-Taste wird bei einigen
Computern die übrige Zeie von der Curskorposition bis zum
Ende ausgelöscht.
Beispiele:
PRINT 'Wie ist Ihr Name';: INPUT NS
PRINT 'Tippen Sie die Werte ein';: INPUT A: INPUT B
Nachbemerkung: INPUT'Ihr Name'; AS
ist somit nicht zulässig!
INT Geben Sie die größte ganze Zahl, die höchstens der
mitgegebenen Variablen gleich ist.
Beispiele:
A=2.1 : B=INT(A) nach Ablauf ist B=2
B=INT(-2.5) nach Ablauf ist B=3
- 37 -
LEFTS Geben Sie einen 'string', der aus mehreren Zeichen des
mitgegebenen 'string' besteht, zu beginnen mit dem am
meisten links stehenden Zeichen. Die Zahl der Zeichen,
die verlangt wird, muß minimal 1 sein und darf maximal die
Länge des 'string' betragen.
Beispiele:
AS=LEFTS ("BASICODE",5) nach Ablauf ist AS=BASIC
Nachbemerkung: CS=LEFTS (BASICODE, 0) ist also nicht erlaubt!
LEN Gibt die Länge des mitgegebenen 'string'
Beispiele.
AS=BASICODE-3 : A=LEN(AS) nach Ablauf ist A=10
AS="" : A=LEN(AS) nach Ablauf ist A=0
LET darf verwendet werden, wenn einer Variablen ein Wert
zuerkannt wird, ist jedoch nicht erforderlich.
Beispiel:
LET A=5 ist dasselbe wie A=5
LET wird daher fast immer weggelassen.
LOG Berechnet den natürlichen Logarithmus der mitgegebenen
Variablen oder des mitgegebenen Ausdruckes.
Beispiele:
PRINT LOG(1) bringt das Ergebnis 0
PRINT LOG(10) bringt das Ergebnis 2.302585
Nachbemerkung: In einigen Computern wird der e-Logarithmus
nicht mit LOG, sondern mit LN angegeben; in diesem Falle
wird also LOG für den 10-Logarithmus gebraucht. Das
Übersetzungsprogramm sorgt in diesen Fällen für eine
richtige Übersetzung.
- 38 -
MIDS Holt eine Anzahl von Zeichen aus einem 'string'.
MIDS(AS, X, Y) gibt Y Zeichen von AS zu beginnen mit dem
X-ten Zeichen (das erste Zeichen hat die Nummer 1, X=0
oder Y=0 ist nicht erlaubt).
Beispiele:
AS = BASICODE IST HüBSCH: BS = MIDS (AS,10,2)
BS enthält nun IS
Nachbemerkung: Nicht erlaubt ist der Auftrag
AS=MIDS (CS,5)
NEXT Abschließende Aufbringung einer Wiederholungsschleife
(vgl. auch FOR). Nach NEXT muß immer die dazugehörige
Variable stehen.
Beispiele: vgl. FOR...
NOT Logische Verneinung, nur anwendbar auf logische Variable
(vgl. auch AND).
Beispiele:
A=5; B=NOT(A=6) nach Ablauf ist B= 'wahr'
A=(5=5): B = NOT A nach Ablauf ist B = 'unwahr'
ON ON ... GOSUB ... oder
ON ... GOTO ...
Machen Sie einen Sprung zu einer Subroutine oder zu einer
Programmzeile. Nach ON folgt ein Ausdruck oder eine
Variable, nach GOSUB oder GOTO eine Reihe von Zeilenzahlen,
untereinander durch Kommas getrennt. Der Wert der Variablen
oder des Ausdrucks muß eine ganze Zahl sein und bestimmt,
welche Zeilennummer gewählt wird. Dazu können Sie sich die
Zeilenzahlen nummeriert denken: Wenn die Variable 1 ist,
wird die erste Zeilenzahl gewählt, wenn die Variable
- 39 -
2 ist, die zweite Zeilenahl usw. Die Variable darf nicht
grösser werden können als die Zahl der angegebenen
Zeilennummern.
Beispiel:
ON K GOTO 100,3400,1500 K muss nun 1, 2, oder 3 sein!
ON K-5 GOSUB 6000, 7000, 3000 K muss nun 6, 7, oder 8 sein!
OR Logischer OR, darf nur verwendet werden, bei logischen
Variablen (vgl. auch AND).
Beispiele:
IF (A=5) OR (B=3) THEN ...
C = (A=5) OR (B 3): IF C THEN ...
Nachbemerkung: Ebenso wie bei AND ist die Verwendung von
Klammern obligatorisch.
PRINT Druckt eine Variable oder 'string' auf dem Schirm ab.
Verschiedene Variable in einem PRINT-Auftrag müssen
getrennt weden durch ein Semikolon. Wenn kein
automatischer Übergang zur nächsten Zeile gewünscht wird,
muß am Ende des Auftrages ein Semikolon stehen. Bei einigen
Computern werden beim Drucken einer Zahl ein Zwischenraum
oder mehrere Zwischenräume vor und/oder nach den Zahlen
gedruckt. Wenn Sie das nicht möchten, können Sie die
Subroutine auf Zeile 300 oder Zeile 310 verwenden.
Beispiele:
Vgl. Or. S. 40, Mitte
READ Liest die Angaben in den DATA-Aufträgen und erkennt
sie der/den Variablen nach READ zu. Mehrere Variable nach einem
READ müssen durch ein Komma getrennt werden. Nach dem
Starten eines Programms
- 40 -
beginnt das Lesen beim DATA-Auftrag mit der niedrigsten
Zeilenzahl, bis alle Angaben auf dieser Zeile gelesen
sind. Danach ist die nächste DATA-Zeile an der Reihe. Man
beachte: Eine numerische Variable muß Zahlen lesen, eine
'string'- Variable muß 'strings' lesen!
Beispiele:
DATA 1, "COMPUTER" , 3
READ A: READ AS: READ B oder
READ A, AS: READ B oder
READ A, AS, B
REM Mit diesem Auftrag können Sie einen Kommentar in ein
Programm bringen, um es für andere verständlicher zu
machen. Alles, was nach REM steht bis zum Ende der Zeile,
wird von BASIC übersprungen. Es darf in der Zeile kein
Doppelpunkt vorkommen. Das bringt mitunter Probleme mit sich.
RESORE Lassen Sie das READ-Kommando wieder von der ersten DATA
Zeile an im Programm lesen. Beachten Sie: Nach RESORE darf
keine Zeilenzahl sehen!
RETURN Gibt das Ende einer Subroutine an. Nach diesem Auftrag
geht die Ausführung des Programms weiter bem ersten Auftrag ,
der dem dazugehörigen GOSUB folgt. Eine Subroutine muß
immer mit RETURN abgeschlossen werden!
RHIGS Gibt eine Anzahl von Zeichen eines bestimmten 'string',
der beim letzten Zeichen endet. Die Mindestzahl der
geforderten Zeichen muß 1 sein, die Höchstzahl die Länge
des 'string'.
- 41-
Beispiele:
AS = BASICODE: BS=RIGHTS (AS, 4) nach Ablauf ist BS = "CODE"
Man beachte: AS = Protokoll: A = 0: BS=RIGHTS (AS,A) ist nicht
erlaubt, weil A = 0
SIN Bestimmt den Sinus eines in Radialen angegebenen Winkels.
Man vergleiche des weiteren bei COS.
SGN Gibt -1, wenn die Variable (oder der Ausdruck) negativ ist,
0, wenn die Variable gleich 0 ist und +1, wenn die Variable
positiv ist.
Beispiele:
A=5: B=SGN(A) nach Ablauf ist B = 1
A=- 001: B=SGN(A) nach Ablauf ist B = - 1
SQR Bestimmt die Wurzel einer Variablen oder eines Ausdrucks,
die nicht negativ sein dürfen.
Beispiel:
A=SQR(2*32) Nach Ablauf ist A = 8
STEP bestimmt die Schrittgröße in elner Wiederolungsschleife.
Vgl FOR ...
TAB Wird in den Print-Aufträgen verwendet, um den Cursor auf
eine bestimmte Stelle auf der Zeile zu setzen. Der Cursor
kann weiter in die Zeile gesetzt werden, und in
Abhängigkeit vom Computer werden Zwischenräume gedruckt,
oder es bleibt stehen, was schon auf der Zeile stand.
TAB (0) ist nicht gestattet. Die meisten Computer
beginnen bei 0 zu zählen. Es gibt jedoch auch Computer,
die bei 1 zu zählen beginnen. Daher ist es besser, die
Subroutine auf Zeile 110 zu verwenden!
Beispiel:
PRINT "A"; TAB (5); "B"; TAB (10); "C"
folgt Seite 42