Optimierung von BASIC Programmen
Index
Tipps um Speicher zu sparen (und mehr Tempo zu erzielen)
- Jede Zeile darf bis zu 80 Bytes haben. Wenn das Maximum beim ersten Eingeben erreicht ist, kann man noch ein paar Zeichen nach einmal ENTER drücken hinzufügen
- Bei Stringausdrücken am Schluss einer Zeile kann das schließende " weggelassen werden: I$="Liebe
- Speicherfressende 2-stellige Variablen können mit CLEAR <Name> gelöscht werden: CLEAR AB
- In IF-Anweisungen muss nie ein THEN stehen, nur bei Variablendefinitionen muss ein LET stehen: IF X=10 PRINT "10!", aber IF X=10 LET Y=Y+1: PRINT "10!"
- Klammern um Ausdrücke müssen nur bei Befehlen sein, die mehrere Ausdrücke brauchen: GCURSOR (120,15), aber CHR$ 13.
- INPUT und PRINT können durch Aneinanderreihung der Ausdrücke mit , zusammengefasst werden, dadurch teilt sich PRINT den Bildschirm in zwei Spalten (Nicht mit ; mischbar!): PRINT X;":";Y oder PRINT X,Y oder INPUT "Eingabe X: ";X,"Eingabe Y: ";Y
- CURSOR mit Einzelzähler verwenden: 0 = 0,0; 95 = 23,3: CURSOR 48 = CURSOR (0,2)
- Einstellige Variablen A-Z($) benutzen: Statt FE$ F$, etc!
- Felder überwachen und unbenutzte mit ERASE löschen
- Die Felder bei DIM und ERASE mit , reihen: DIM I$(0)*80,F$(15)*7 bzw. ERASE I$,F$
- IF-Bedingungen können ohne äußere Klammern verwendet werden: IF Y>10 AND X<9 GOTO 10
- IF kann auch Zahlen und Variablen als Bedingung haben: <=0 falsch, >0 wahr: IF X GOTO 10
- INKEY$ kann wie eine normale Stringvariable eingesetzt werden, z.B. in IF-Anweisungen, sie ist leer, wenn keine Taste gedrückt wurde: IF INKEY$="1" PRINT "1"
- GOTO und GOSUB können mit Stringmarken und Variablen verwendet werden: GOTO "A" aber auch GOTO "Berechnung" und GOTO X (wobei X eine existierende Zeile enthält!)
- ON ... GOTO/GOSUB als Fallunterscheidung verwenden: ON VAL INKEY$ GOTO 100,110,120,130
- Um Daten zu senden kann nach OPEN auch LPRINT benutzt werden: OPEN : LPRINT "Daten X: ";X
- Aneinanderhängende Linien können durch Weglassen der Startpositionsklammer weitergeführt werden: LINE (0,0)-(149,0): LINE -(149,31)
- Operatorreihenfolge: INT, MDF, STR$, CHR$, ABS, SGN etc. vor Rechenzeichen und vor logischen Operatoren
- Operatoren + - * / werden vor AND OR NOT ausgerechnet
- LINE-Reihenfolge: LINE (X1,Y1)-(X2,Y2)(,X)(,Muster als Hexadezimalzahl)(,B/BF)
- PRINT und GPRINT mit ; am Schluss schiebt den Cursor auf die nachfolgende Position (bricht bei PRINT auch Zeilen um): PRINT "Text";: PRINT "Weiterer Text" und GPRINT "1A2B";: GPRINT "3C4D"
- Den RESERVE Modus benutzen, um Zeit zu sparen (@ entspricht der Entertaste!): F: IF oder N: NEXT X@
- GOTO und GOSUB können auch zu Strings springen, wenn man die am Zeilenanfang definiert: GOTO "Berechnung"... 190 "Berechnung" X=X*Y:...
- Mit "," können Einstellungen übersprungen werden: OPEN ",,,,,&1A"
- Die DEF-Taste startet Programme schnell, der Doppelpunkt nach dem Startbuchstaben kann ausgelassen werden: 10 "A" CLS : WAIT 0 ...
- AREAD Var$ übergibt dem Programm bei DEF-Start den zuletzt angezeigten Bildschirminhalt: 10 "A" AREAD I$: X=VAL I$
- Mit PRINT = LPRINT kann man die Ergebnisse gleichzeitig auch ausdrucken lassen. PRINT = PRINT hebt das wieder auf
- Variablenzuweisungen sind schneller, wenn man sie mit , trennt: A=1,B=2,C=4
Die schnellsten Befehle von PC-1350:
- * (mal) ist schneller als ^ (Potenz)
- FOR .. NEXT (STEP ..)
- ASC, CHR$
- AND, OR, NOT
- INT, MDF, SGN, ABS
- GPRINT
- ON .. GOTO/GOSUB
- GOTO
- USING
- VAL, STR$
Copyright © Simon Lehmayr (Teile dieser Seite sind mit Hilfe von Laurent Duveau entstanden)
Wenn diese Seite ohne Navigation angezeigt wird, hier klicken.
Impressum