Basic Quellcode
[Bearbeiten] QBasic Quellcode
Dieses ist ein schönes Beispiel für den Zufallsgenerator (RND), meint Random. Als Bemerkung, Qbasic kommt schon ohne Zeilennummern aus, aber es geht auch mit. Beim Basic ist das Früher so gewesen, das das Eingeben des AUTO Befehls ausreichte um nach jedem Enter(Return), automatisch eine neue Zeilennummer zu erhalten. Eines muss ich noch erwähnen, mein Erster Rechner hatte nur 1k Ram, aus diesem Grund hab ich die Kommentar Zeilen weck gelassen. Ab C , C++..... u.s.w. sind sie schon erforderlich um den Überblick zu behalten. Ein weiterer Grund ist, das andere Programmierer sich schneller einlesen können um den Quellcode zu nutzen.
Das Programm QBasic findet man auf der InstallCD Win98. Wenn man die CD öffnet, befindet sich dort ein Ordner der den Namen "tools" hat und in diesem, ein Ordner mit dem Namen "oldmsdos". Das Programm besteht aus 2 Dateien, QBasic.exe und die dazugehörende Hilfe Datei. Man kopiert die beiden Dateien einfach auf die Festplatte und kann die QBasic.exe einfach Starten. Das Programm lauft auch unter WinXP.
10 CLS : CONST pi = 3.141592654#: n = 315: m = 235: y = 630: x = 480
20 SCREEN 12: RANDOMIZE TIMER
30 a = n: b = m
40 r = INT(RND(1) * 4) + 1: s = INT(RND(1) * 16) + 1: d = INT(RND(1) * 40)
50 IF r = 1 AND b - 2 * d < 0 THEN r = 3
60 IF r = 2 AND a + 2 * d > y THEN r = 4
70 IF r = 3 AND b + 2 * d > x THEN r = 1
80 IF r = 4 AND a - 2 * d < 0 THEN r = 2
90 IF r = 1 THEN b = b - d
100 IF r = 2 THEN a = a + d
110 IF r = 3 THEN b = b + d
120 IF r = 4 THEN a = a - d
130 CIRCLE (a, b), d, s
140 PAINT (a, b), s
150 IF INKEY$ = CHR$(27) THEN GOTO 170
160 GOTO 40
170 END
und noch ein Programm für Fortgeschrittene
10 SCREEN 12: CONST pi = 3.141592654#: a = 200: b = 120: c = 440: d = 360
20 CLS : RANDOMIZE TIMER: m = ((c - a) / 2) + a: n = ((d - b) / 2) + b
40 r = 100: s = r / 4: g = 0: k = 0: l = 0: i = 0: lr = 1
50 q = INT(SQR((s * s) + (s * s))): t = q * 2 / 12: e = m - q: f = n - q
60 h = q * 2
70 PRINT "Stop mit ESC"
80 REM 3D Kugel
90 IF k = 0 THEN k = 1 ELSE k = 0
100 IF k = 1 THEN l = 3
110 IF k = 0 THEN l = 0
120 o = e: u = f: g = 0: rou = r * SIN(g * pi / 180)
130 rr = r * SIN(g * pi / 180)
140 LINE (e + rr * COS(i * pi / 180), f + rr * SIN(i * pi / 180))-(o + rou * COS(i * pi / 180), u + rou * SIN(i * pi / 180)), l
150 i = i + 15
160 IF i = 360 THEN GOTO 170 ELSE GOTO 140
170 CIRCLE (e, f), rr + 1, l
180 j = rr
190 i = 0: rou = rr: o = e: u = f: e = e + (j / 24): f = f + (j / 24): g = g + 7.5
200 IF g = 90 AND k = 1 THEN l = 15
210 IF g = 187.5 THEN GOTO 220 ELSE GOTO 130
220 h = q * 2: e = m - q: f = n - q: g = 0: o = e: u = f: j = 0
230 IF k = 1 THEN GOTO 80
240 IF r <= 10 THEN lr = 2
250 IF r >= 200 THEN lr = 1
260 IF lr = 1 THEN r = r - 10
270 IF lr = 2 THEN r = r + 10
280 IF INKEY$ = CHR$(27) THEN GOTO 290 ELSE GOTO 80
290 END
[Bearbeiten] Neuerer QBasic Quellcode
Dieses ist nun ein wenig neuartiger QuellCode von QBasic, wo die altertümlichen Zeilennummern nicht mehr verwendet sind. Dieses Programm soll folgendes veranschaulichen, das es sich Lohnt, sparsame aber sinnige Kommentare zu verwenden. Auch die Variablen sind sinnvoll überlegt. Dieses bischen Schreibarbeit zahlt sich wirklich aus, wenn man sich vorstellt, das das Schreiben des Programm's lange her ist und man es für andere zwecke umschreiben möchte, geht es wesentlich schneller, sich in das Programm ein zu lesen. Auch andere Programmierer können das Programm einfacher nutzen, und es gibt einfach mehr Überblick. Im Basic ist es so, das alles was hinter dem Befehl REM steht, vom Computer überlesen wird und keinerlei Wirkung hat, also eine so genante Kommentarzeile.
SCREEN 12
PRINT "Stop mit ESC oder Alt+ESC"
REM Varieablen
radius = 200: farbe = 0: elips = 1 / 2: CONST pi = 3.14159265#
x = 640: y = 480: xmitte = x / 2: ymitte = y / 2
richtung = 0
resetmal:
zaehler = 0
REM Farb Flip Flop
IF farbe = 0 THEN farbe = 16 ELSE farbe = 0
REM Elipsen Zeichnen
anfang:
zaehler = zaehler + 1
cosinus = COS(zaehler * pi / 180)
sinus = SIN(zaehler * pi / 180)
PSET (xmitte + (radius * elips * cosinus), ymitte + (radius * sinus)), farbe
PSET (xmitte + (radius * cosinus), ymitte + (radius * (1 - elips) * sinus)), farbe
IF zaehler <> 359 THEN GOTO anfang
REM Pause
IF farbe = 0 THEN GOTO ohnePause
FOR pause = 1 TO 50000: NEXT pause
ohnePause:
REM Farbe umschalten
IF farbe = 16 THEN GOTO resetmal
REM Richtungs Lenkung
richtung:
IF elips < 0 THEN richtung = 0
IF elips > 1 THEN richtung = 1
IF richtung = 0 THEN elips = elips + .1
IF richtung = 1 THEN elips = elips - .1
REM Tasten Abfrage
IF INKEY$ = CHR$(27) THEN GOTO ende ELSE GOTO resetmal
REM Programm Ende
ende:
END
[Bearbeiten] Nun das Programm Tempo
Dieses ist nun ein Programm, wo es sich lohnen würde es in eines der C Sprachen um zu wandeln. Dieses Programm "Tampo"(schnell), bringe ich an dieser Stelle ein, weil ich glaube das das die Grenze der Geschwindigkeit verdeutlicht. Nun der Grund ist, das der Quellcode in Maschinencode übersetzt wird, und der Weg vom QBasic zur Maschine sehr weit ist. Dieses ist bei den C Sprachen anders. Gibt man also dem Rechner,im QBasic, richtig was zu Rechnen, wird er durch den langen Übersetzungsweg gebremst.
REM Tempo meint Geschwindigkeit
SCREEN 12
CONST pi = 3.141592653589793#
PRINT "Mit ESC=Stop und Space=noch einmal"
FOR Pause = 1 TO 50000: NEXT Pause
WINDOW (-320, -240)-(320, 240)
Anfang:
FOR Na = 1 TO 20
CLS
FOR Radius = 1 TO 200 STEP Na
REM auch ein ' ist wie REM, also Kommentar
'CIRCLE (0, 0), Radius, 4
FOR winkel = 0 TO 359
PSET (0 + Radius * SIN(winkel * pi / 180), 0 + Radius * COS(winkel * pi / 180)), 4
NEXT winkel
REM Die drei da rueber stehenden Zeilen
REM raus und circle rein
NEXT Radius
NEXT Na
Ende:
IF INKEY$ = CHR$(32) THEN GOTO Anfang
IF INKEY$ = CHR$(27) THEN END ELSE GOTO Ende

