C 16
Grafik

Kurvenplotten mit Hardcopy

Mit Hilfe dieses Programmes ist es auf dem C 16 möglich, eine oder mehrere Funktionen in ein Koordinatensystem zu plotten und anschließend eine Hardcopy herzustellen.

Da der C 16 bei hochauflösender Grafik leider nur noch 2 KByte für Basic übrig hat, mußte auf REM-Zeilen verzichtet werden, wodurch die Übersichtlichkeit des Programms etwas leidet.

Das Programm gliedert sich in folgende Teile:

10-190Initialisierung, Eingabe der Funktion, Wahl von Koordinatensystem und Maßstab
200-320Funktion wird geplottet
330-390Festlegung des Nullpunktes
400-480Festlegung der Vergrößerung
510-610Koordinatensystem und Beschriftung zeichnen 620-710 Bildschirm lesen und Ausgabe an Drucker

Nach dem Starten des Programmes mit RUN muß zunächst die gewünschte Funktion eingegeben werden. Dies geschieht dadurch, daß in der aufgelisteten Zeile 200 die gewünschte Funktion anstelle von F(x) eingegeben wird (x muß als Variable benutzt werden).

Durch Drücken von RETURN wird die Zeile programmiert. Wenn Sie wünschen, daß der hochauflösende Bildschirm gelöscht werden soll, so drücken Sie nun F1; soll die neue Funktion dagegen zu bestehenden Kurven hinzugeplottet werden, so drücken Sie F3.

Nun müssen Sie den Maßstab eingeben (für eine Sinusfunktion ist beispielsweise 40 ein guter Wert) und eines von den drei möglichen Koordinatensystemen auswählen.

Bei der Eingabe der Funktion braucht man nicht auf Definitionslücken zu achten, da die TRAP-Anweisung in Zeile 240 »DIVISION BY ZERO« Fehler und andere abfängt.

Hardcopy von drei Funktionen

Nach Beendigung des Plottens erscheint in der rechten oberen Ecke ein »E«. Drückt man jetzt auf »C«, wird der Bildschirm gelesen und als Hardcopy über den Drucker ausgegeben. Dies dauert leider fast 30 Minuten, da jeder der 64000 Bildpunkte einzeln ausgelesen und in ein dem Drucker genehmes Bitmuster umgewandelt werden muß. Dieser Programmteil (ab Zeile 620) wurde für den Seikosha GP100VC geschrieben und muß für andere Drucker eventuell geändert werden. Jeder andere Tastendruck führt zu einem kurzen Menü.

Man kann durch Druck auf F1 Maßstab und Koordinatensystem neu wählen.

Durch Druck auf F2 kommt man wieder zur Anfangsroutine und kann eine neue Funktion eingeben.

(Christian Schoske/ev)
10 rem christian schoske
20 1,"o=1:goto90"+chr$(13)
30  2,"run"+chr$(13)
40  3,"o=0:goto90"+chr$(13)
50 0
60 print"{clr}geben sie fuer f(x) die funktion ein.   anschliessend {rvon}return{rvof} druecken"
70 print"{rvon}f1{rvof} bildschirm loeschen":print"{rvon}f3{rvof} bildschiem nicht loeschen":print
80 print"200 def fna(q)=f(x)" :end
90 rem
100 0:print:print:input"masstab ";sc
110 print:print"koordinatensystem "
120 print:printspc(3)"{CBM-N}"spc(8)"{CBM-N}"spc(9)"{CBM-N}"spc(17)"1  {CBM-N}"spc(8)"{CBM-N}  2"spc(6)"{CBM-N}  3"
130 print"{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}{CBM-P}{CBM-P}{CBM-P}{CBM-P}"spc(4)"{CBM-N}"spc(9)"{CBM-N}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}"spc(13)"{CBM-N}"spc(8)"{CBM-N}"spc(9)"{CBM-N} "
140 printspc(3)"{CBM-N}"spc(8)"{CBM-N}"spc(9)"{CBM-N}"spc(20)"{CBM-N}"spc(8)"{CBM-N}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P} {CBM-N}"
150 geta$:a%=val(a$):ifa%<1ora%>3then150
160 1,1,1
170 1,o:1,38,0," "
180 ona%goto 330,350,370
190 rem
200 def fna(q)=sqr(x)
210 z=0
220 
230 x=(-ax+z)/sc
240 270
250 y=sc*(fna(x))
260 1,z,ay-y
270 z=z+1
280 z<320
290 1,38,0,"e"
300 geta$:ifa$="c"then620:0
310 print"{clr}f1 neuer masstab":print"f2 neue funtion{up}"
320 end
330 ay=100:ax=160:1,0,ayto320,ay:1,ax,0toax,200
340 goto380
350 ay=199:ax=0:1,ax,0toax,ay:1,ax,ayto320,ay
360 goto380
370 ay=100:ax=0:1,ax,0toax,200:1,ax,ayto320,ay
380 gosub400:ifo<>0thengosub510
390 goto190
400 we =320/sc
410 ifwe >=230thenm=50
420 ifwe >=200andwe <230thenm=25
430 ifwe >=120andwe <200thenm=20
440 ifwe >= 65andwe <120thenm=10
450 ifwe >= 26andwe < 65thenm=5
460 ifwe >= 13andwe < 26thenm=2
470 ifwe<13thenm=1:f=1
480 return
510 ya=ay:   xa=ax:mc=0:ifm>1thenf=1
520 
530 ford=1tom
540 xa=xa+sc:ya=ya-sc:if(xa/f)>312then
550 nextd:mc=mc+1
560 if(xa/f/8)-1>39then580
570 1,(xa/f),ayto(xa/f),(ay-5):1,(xa/f/8-1),(ay/8)-1,str$(mc*m)
580 if(ya/f/8)<1then600
590 1,ax,(ya/f)to(ax+5),(ya/f):1,(ax/8+1),(ya/f/8),str$(mc*m)
600 
610 return
620 open4,4:z=0:cmd4
630 fora=0to27
640 forb=0to31
650 forc=0to10
660 ford=0to6:(b*10+c),(a*7+d):if(2)=1thenz=z+2^d
670 nextd
680 z=z+128:a$=a$+chr$(z):z=0:nextc
690 printchr$(8)a$;:a$="":nextb
700 print" ":nexta
710 print#4,chr$(15):close4:goto300
Listing »Funktionenplotter C 16«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →