![]() |
![]() |
Startseite News   NDR-NKC ![]() ![]() ![]() NKC Emulator Z80 Section ![]() ![]() ![]() 68000 Section ![]() ![]() ![]() ![]() ![]() 8088 Section ![]() ![]() Bussysteme Stromversorgung Input / Output Grafikkarten Speicherkarten Massenspeicher Weitere Baugruppen Projekte Dokumentation Datenblätter Glossar Portraits Links Impressum |
Tipps zur Programmierung mit BASIC 1.3Genauigkeit des ZahlenbereichesRealzahlen im BASIC 1.3 haben eine Auflösung von exakt 5 Dezimalstellen. Dabei ist es unerheblich, ob Zahlen als Konstanten benutzt werden, in Variablen gespeichert sind oder Ergebnis einer Funktion sind. LET A = 1234567 PRINT A > 1.2345E+06 OK, gerundet PRINT A/10 > 123450 kann falsch interpretiert werden PRINT A/100 > 12345 keine Rundung, korrekt wäre 12346 PRINT A/1000 > 1234.5 keine Rundung PRINT A/10000 > 123.45 keine Rundung PRINT A/100000 > 12.345 keine Rundung PRINT A/1000 00 > 1.2345 keine Rundung PRINT SQR(2) > 1.4142 OK im Rahmen der Auflösung Grundsätzlich muss man mit diesen Einschränkungen im Zahlenbereich leben. Das ist auch OK und man muss bei der Programmierung "nur" darauf achten, dass man keine höhere Auflösung benötigt. Ohne die gesamten Arithmetik-Routinen neu zu codieren ist keine einfache Erweiterung denkbar. Wer unbedingt BASIC benutzen möchte und dennoch eine höhere Auflösung der Zahlen benötigt wird auf eine komplett eigene Lösung mit Unterprogrammen in Maschinensprache zurückgreifen müssen. Speicherverbrauch und Geschwindigkeit der ProgrammeDer Quellcode eines NKC BASIC Programms wird im Speicher exakt so abgelegt wie er eingegeben wurde. Viele andere BASIC Dialekte nehmen bereits bei der Eingabe eine Interpretation vor um unnötige Leerzeichen zu entfernen oder die BASIC Schlüsselworte als sogenannte Tokens mit nur einem Byte abzulegen. Die Verwendung von Tokens hätte Vorteile gehabt, da diese sich schnell über eine Sprungtabelle auswerten lassen und zudem weniger Platz im RAM Speicher verbrauchen. Verzicht auf unnötige ZeichenDurch das Weglassen von unnötigen Leerzeichen, unnötigen Klammern und unnötigen Schlüsselwörtern spart man wertvollen Speicherplatz ein und gewinnt etwas an Geschwindigkeit - Leider auf Kosten der Lesbarkeit 10 IF ( a = b ) THEN GOTO 100 10 IF a=b GOTO 100 Verwendung von KommentarenKommentare tragen nichts zur Programmausführung bei, sie dienen ausschließlich zur Verbesserung der Lesbarkeit des Codes. Wenn man nicht auf Kommentare verzichten will, sollte man nach Fertigstellung des Programms eine zweite Version ohne Kommentare abspeichern. Das Programm ist dann kürzer und läuft schneller ab. 10 GOSUB 1000 20 END 1000 REM Mein tolles Unterprogramm 1010 LET a = a + 1 1020 RETURN Kommentarzeilen sollten nicht direkt mit GOTO oder GOSUB angesprungen werden, da sonst immer Kommentar interpretiert werden muss. Statt dessen springt man besser auf die erste ausführbare Zeile hinter einem Kommentar. Zusammenfassung von KommandosAuch hierdurch wird wertvoller Speicherplatz eingespart und etwas an Ausführungsgeschwindigkeit gewonnen. Diesen Trick kann man immer dann anwenden, wenn kein Sprungbefehl auf eine der Zeilen erfolgen muss. 10 LET a = 10 20 LET b = 20 30 GOSUB 1000 10 a=10:b=20:GOSUB 1000 Positionierung von UnterprogrammenUnterprogramme sollten so weit als möglich an den Anfang des Quellendes gesetzt werden. Je weiter hinten ein Unterprogramm liegt, desto länger dauert jeder einzelne Aufruf. Umso häufiger ein Unterprogramm benutzt wird desto weiter vorne sollte dies im Quelltext liegen. Das Hauptprogramm hingegen kann durchaus auch ganz am Ende des Programmcodes liegen, da dieses nur wenige Verzweigungen enthält. 10 LET A = 0 20 GOTO 9000 1000 REM Häufig aufgerufenes Unterprogramm 1010 E = SRQ(A) 1020 RETURN 2000 REM selten aufgerufenes Unterprogramm 2010 A = A + 1 2020 RETURN 9000 REM Hauptprogramm 9010 FOR n = 1 TO 100 9020 GOSUB 2000 9030 FOR k = 1 TO 100 9040 GOSUB 1000 9050 NEXT k 9060 NEXT n 9070 END Falls DATA Statements verwendet werden sollten diese ebenfalls an den Anfang des Quelltextes gesetzt werden.
|