|
Rekursiver Baum: Angeregt von der Grafik auf der vorletzten Seite des Begleitmaterials zum BasiCode-Lehrgang im Rundfunk der DDR.
Im Begleitmaterial zum BasiCode-Lehrgang des DDR Rundfunks ist auf der vorletzten Seite eine Grafik abgedruckt,
zu der es aber keine Erklärung gibt. Mich hatte schon länger interessiert, wie sie erzeugt wurde, daher suchte
ich im Internet, fand sogar ein Programm - doch in LOGO.
Dann fragte ich im Robotrontechnik-Forum nach und wenig später postete jemand ein Programm.
|
Dieses habe ich für BasiCode angepasst:
Unsere Joyce brauchte wieder eine Sonderbehandlung: Das Listing
wird als normales Basic-Programm unter Mallard Basic gestartet; es enthält den (modifizierten)
Bascoder, so dass dieser nicht vor-gelanden werden muss.
Damit die Grafik nicht horizontal gestaucht erscheint, nahm ich eine kleine Änderung vor:
Im übertragbaren Teil des rekursiver-Baum-Programms wird vor GOSUB 620 (Setzen eines Punkts) und GOSUB 630
(Zeichnen einer Linie) bei der Zuweisung von HO statt X1/HG 2*X1/HG verwendet, um das gleiche
Breite-Höhe-Verhältnis wie auf anderen Computern zu erhalten:
1120 HO=2*X1/HG :VE=1-Y1/VG :GOSUB 620
1125 HO=2*X2/HG :VE=1-Y2/VG :GOSUB 630
Außerdem dient (in beiden Programmen) im Bascoderteil die zweimalige Ergänzung "+.001" dem leichten
Versatz der Höhe der Zeichnung nach oben, sonst entstehen durch Rundungsungenauigkeiten teilweise dicker erscheinende horizontale Linien:
655 OHO=MAX(0,HO):OHO=MIN(OHO,0.998):OVE=MAX(0,VE)+0.001:OVE=MIN(OVE,0.995)+0.001:RETURN
|
|
Drachenkurve: Programm aus dem Buch "In BASIC effektiv programmieren - Auch mit Kleinstrechnern" von Horst Völz.
Bei der Suche fand ich in einem DDR-Computerbuch ein weiteres interessantes Programm, es zeichnet
die "Drachenkurve". Sie ähnelt vom Prinzip der Peano- und der Hilbert-Kurve: Kleine Strukturen
wiederholen sich in den größeren. Es hat, finde ich, eine gewisse Faszination, beim Zeichnen zuzuschauen
- sofern der Computer langsam genug ist und die Grafik nicht "in einem Rutsch" auf dem
Bildschirm erscheint, wie zum Beispiel unter BBC Basic for Windows.
|
Auch wieder mit Rekursion:
|
Und auch wieder "normales" BasiCode und PCW-spezifisch
(das Programm beinhaltet den angepassten Bascoder und wird als normales Basic-Programm unter Mallard Basic gestartet;
der Bascoder muss nicht vor-gelanden werden).
Im übertragbaren Teil des Drachenkurve-Programms wird vor GOSUB 630 (Zeichnen einer Linie) bei der Zuweisung
von HO statt (X+A) (X+2*A) verwendet, um das gleiche Breite-Höhe-Verhältnis wie auf anderen Computern zu erhalten:
1425 HO=(X+2*A)/HG+0.2: VE=1-(Y+B)/VG: GOSUB 630: X=X+2*A: Y=Y+B: RETURN
1445 HO=(X+2*A)/HG+0.2: VE=1-(Y+B)/VG: GOSUB 630: X=X+2*A: Y=Y+B: RETURN
Außerdem dient (wie auch beim rekursiver-Baum-Programm) im Bascoderteil die zweimalige Ergänzung "+.001" dem leichten
Versatz der Höhe der Zeichnung nach oben, sonst entstehen durch Rundungsungenauigkeiten teilweise dicker erscheinende horizontale Linien:
655 OHO=MAX(0,HO):OHO=MIN(OHO,0.998):OVE=MAX(0,VE)+0.001:OVE=MIN(OVE,0.995)+0.001:RETURN
Nach dem Programmstart wird man aufgefordert eine natürliche Zahl > 0 einzugeben; diese Zahl gibt an, wie oft die Rekursion
ausgeführt werden soll, d.h. wie hoch die Verschachtelungstiefe ist. Die Gesamtkurve wird durch die selbstähnliche Wiederholung
immer größer, irgendwann reicht die Breite und Höhe der Zeichenfläche nicht mehr aus, wie man durch Probieren leicht erkennen kann.
|
|
Thomas Rademacher // April 2026

|
|