Grafische Darstellung statt Zahlenfriedhof
Übersichtliche Grafik statt endloser Zahlenkolonnen dieses Programm für den Commodore 64 mit Simons Basic kann Tabellen wahlweise als Balken-, Kurven- oder konventionelle Strichdiagramme darstellen. Die laufende Umschattung zwischen den verschiedenen Darstellungsformen ist möglich. Auf Tastendruck kann man sich jederzeit eine Hardcopy des Bildschirminhalts auf einem Epson RX-80-Drucker erstellen lassen.

Nach dem Start meldet sich das Programm mit dem Titel »Chart 1 — Programm zur grafischen Zahlendarstellung«. Dieser Titel erscheint etwa drei Sekunden. Durch Drücken der Return- Taste wird vorzeitig zum Hauptmenü gesprungen. Bei der Hauptmenüabfrage akzeptiert das Programm nur Zahlen von 1 bis 4 und den Buchstaben E.
Vom Hauptmenü aus sind alle Funktionen abrufbar
Zunächst zur Funktion 4. Durch diese Funktion wird die letzte im Speicher befindliche Grafik dargestellt. Falls sich auch noch die Werte im Hauptspeicher befinden, kann von dieser Grafik ausgehend das Programm durch Antippen des entsprechenden Buchstabens fortgesetzt werden. Falls die Absolutsumme (MC) Null ist, geht das Programm davon aus, daß keine Werte mehr vorhanden sind und springt in das Hauptmenü zurück.
Die Werteeingabe ist unkompliziert
Bei der Auswahl von Zahlen zwischen 1 und 3 wird zur Werteeingabe übergegangen. Als erstes wird der Titel abgefragt, wobei ein Leerstring nicht akzeptiert wird, da der Titel gegebenenfalls gleichzeitig als Filename verwendet wird. Bei der darauffolgenden Abfrage nach der Mittelwert- und Summenberechnung werden nur Eingaben akzeptiert, deren jeweils am meisten links stehendes Zeichen ein j oder n ist.
Anschließend wird die Anzahl der Werte abgefragt, die zwischen 2 und 20 liegen muß. Bei der jetzt folgenden Werteeeingabe sind alle Zahlen zulässig, die im Wertebereich des Commodore 64 liegen. Nach der Darstellung der Werte in zwei Reihen muß die Sicherheitsabfrage in der gegebenen Weise mit j oder n beantwortet werden. Das Programm bietet jetzt die Möglichkeit, die Wertetabelle auszudrucken und/oder abzuspeichern.
Achtung: Bei der Abspeicherung wird ein eventuell unter diesem Namen existierendes File überschrieben. Die so abgespeicherte Tabelle kann später wieder mit dem SCRLD-Befehl des Simons Basic aufgerufen werden. Nach der Abspeicherung der Tabelle wird der Floppyfehlerkanal abgefragt und gegebenenfalls eine Fehlermeldung ausgegeben.
Anschließend wird in den Grafikmodus umgeschaltet.
Die Werte werden — ausgehend von der »12-Uhr-Stellung« — als »Kuchenstücke« dargestellt. Der Maximalwert (oder die Maximalwerte, falls sie nicht direkt nebeneinanderliegen) werden ausgefüllt. Die Werte werden konzentrisch um den Kuchen ausgegeben, wobei negative Werte rot dargestellt werden und Null-Werte, ebenso wie Werte, die kleiner als 1/75 der Betragssumme MC sind, nicht berücksichtigt werden.

Balkendiagramme
Bis zu zehn Werte werden einreihig dargestellt. Bei negativen Werten werden die Balken sowohl über als auch unter der X-Achse angezeigt (negative Werte wieder rot), ansonsten nur oberhalb der X-Achse. Nullwerte werden ohne Bezeichnung als leeres zweidimensionales Rechteck gezeichnet.
Bis zu 20 Werte werden zweireihig hintereinander dargestellt und zwar nur oberhalb der X-Achse. Das Vorzeichen der Werte (positiv oder negativ) wird nur durch die eingeschriebenen Werte kenntlich gemacht, wobei negative Werte wiederum rot erscheinen. Die Reihenfolge der Werte läuft von links vorne nach rechts hinten.

Strichdiagramm
Nach dem Zeichnen des Koordinatensystems — auch hier wird bei negativen Werte die X-Achse nach oben verschoben — wird der Diagramzug eingezogen. Die Werte werden unterhalb der X-Achse in der üblichen Weise zweireihig eingeschrieben.
Kommandozeile
Durch Betätigen der jeweiligen Taste können die Werte entweder als Kuchen, Balken oder Strichdiagramm dargestellt werden. Ferner kann mit der Taste M zum Hauptmenü zurückgesprungen werden. Außerdem bietet sich noch die Möglichkeit, den Grafikbildschirm ausdrucken zu lassen. Diese Hardcopy-Routine ist auf den Epson RX-80-Drucker abgestimmt und muß bei Verwendung eines anderen Druckers in geeigneter Weise abgeändert werden.

Farbwahl
Zur Farbwahl muß gesagt werden, daß sie — es wird ja in Hires-Grafik gearbeitet — ein wenig eingeschränkt ist. Die Auswahl muß in folgender Form durchgeführt werden: Hires Vordergrund (VG), Hintergrund (HG) = > Low col VG neu, HG, HG = < col = < Low col VG neu, HG, HG und so weiter.
Dabei wird die neue Vordergrundfarbe bestimmt. Man muß jedoch trotzdem noch aufpassen: Wenn Zeichen verschiedener Farben zu dicht aneinanderkommen oder sich überlagern, so führt das zu Farbvermischungen oder völlig anderen Farben.
Eine Ausführung im weniger problematischen Multi-Modus erwies sich jedoch wegen der Zeichengröße als nicht durchführbar.
Das Programm läuft ohne Änderungen auf dem Commodore 64 mit der Basic-Erweiterung »Simons Basic«, der Floppy 1541 und dem Epson RX-80. Falls die Datasette verwendet werden sollte, muß der SCRSV-Befehl folgendermaßen abgeändert werden SCRSV 2,8,2… → SCRSV 1,1,1.
Ansonsten dürfte das Programm mit kleinen Änderungen auch mit jedem anderen grafikfähigen Drucker laufen.
(Andreas Funk)Zeile | Funktion |
---|---|
75 | Farbwahl für Textdaxstellung |
80 | Dimensiomerung der Feldvariablen |
100-460 | Hauptmenü |
1000-1980 | Kuchen |
1100-1118 | »Urkreis« |
1130-1160 | Zeichnen des »Kuchengerüstes« |
1161 | Verzweigung nach 1900 |
1164-1181 | Einschreiben der Werte |
1184-1186 | Bestimmung des Maximalwertes |
1187-1199 | Ausfüllen des größten Sektors |
1200 | Verzweigung nach 1925 |
1205-1500 | Titel, Mittelwert, Summe und Menü |
1700-1880 | Menüabfrage |
1925-1980 | Ausfüllen der Maximumvorderfläche |
2000-3980 | Balkengrafik |
2300-2800 | Darstellung von höchstens 10 Werten |
2310-2318 | Titel, Mittelwert,Summe |
2320-2410 | Koordinatensystem, Prozentzahlen |
2622-2670 | Einschreiben der Werte |
2690 | Sprung nach 3800 |
2800-3540 | Darstellung von bis zu 20 Werten |
2820-2847 | Titel, Mittelwert, Summe |
2850-2965 | Koordinatensystem mit Prozentangabe |
3800-3980 | Menüabfrage |
4000-4980 | Diagramm |
4094-4180 | Bestimmung des Maximalwertes |
4270-4345 | Titel, Mittelwert, Summe |
4357 | Umrechnung der Werte in Koordinaten |
4360-4640 | Koordinatensystem mit Prozentangaben |
4650-4770 | Diagrammdarstellung |
4780-4850 | Einschreibung der Werte (zweireihig) |
4900-4980 | Menüabfrage |
5000-7999 | Werteeingabe |
5060-5100 | Titel |
5120-5160 | Mittelwert-Summe-Abfrage |
5180-5330 | Anzahl der Werte (2-20) |
5360-5420 | Werteeingabe |
5500-5620 | Wertetabelle |
5640-5660 | Sicherheitsabfrage |
5700 | Verzweigung nach 8000 |
5720-5730 | Ausgabe von Mittelwert und Summe |
5910-6000 | Speicherung der Tabelle |
8000-8300 | Mittelwert und Summe |
8130 | Berechnung der Summe der Werte |
8180 | Mittelwert |
8190-8197 | Formatierung von Mittelwert und Summe |
9000-9050 | Fehlerkanal der Floppy |
9090-9180 | Darstellung der letzten Grafik |
9120 | Darstellung |
9141 | Abfrage der Betragssumme |
9142-9180 | Menüabfrage |
X(22),A(22),B(22),C(22),F(22) | Feldvariable für Zahlenwerte |
E$,E | Abfrage des Darstellungsmodus |
T$ | Titel der Tabelle, SCRSV-Name |
M$ | Abfrage nach Mittelwert-Summen-Berechnung |
A$,A | Anzahl der Werte |
D | Schleifenvariable |
W$ | Sicherheitsabfrage, ob Werte in Ordnung sind |
MB | Summe der Werte |
MC | Summe der Absolutwerte |
MW | Mittelwert |
MAX,YX | Maxima der Feldvariablen |
V$ | Abfrage nach dem Ausdruck der Wertetabelle |
S$ | Abfrage nach der Speicherung der Wertetabelle Wird unter T$ abgespeichert |
AA,BB$,CC,DD | Floppy-Fehlerkanal |
Z$ | Abfrage nach der Weiterführung des Programms |
GH | Faktor zur Umrechnung der Feldvariablen in darstellbare Größe |
Länge des Textstrings beim Diagramm | |
Schleifenvariable Darstellung der Prozentwerte beim Diagramm | |
H$ | Textstring; unterste Zeile bei der Grafik |
S | Winkelberechnung beim Kuchen |
W1,W2,W3,W4 | Winkel bei Kuchen (Bogenmaß) |
D1,D2,D3 | Winkel beim Kuchen (Bogenmaß) |
J,K | Koordinaten zur Berechnung der Zahlen beim Kuchen |
D$ | LEFT$ vom Textstring (Kuchen) |
C | Konstante für die Negativdarstellung |
H1,H2,H3 | Laufvariablen beim Balken |
F | Laufvariablen beim Balken |
V | Koordinaten (pos.-neg.) beim Balken |
P,Q | Koordinaten beim Balken |
35 rem******************************* 40 rem**** chart 1 **************** 70 rem******************************* 75 poke53280,10:poke53281,12:print"{red}" 80 dimx(22),a(22),b(22),c(22),f(22) 100 print"{clr}"at(12,8)">>> chart 1 <<<" 130 printat(7,11)"programm zur graphischen" 160 printat(11,13)"zahlendarstellung" 170 pause3 220 print"{clr}{rvon} darstellungsformen {rvof}" 250 printat(5,5)"kuchengraphik..........1" 280 printat(5,7)"balkengraphik..........2" 310 printat(5,9)"diagramm...............3" 320 printat(5,11)"letzte graphik.........4" 340 printat(5,15)"bitte waehlen sie >>>" 350 printat(5,19)"ende...................e" 370 gete$:ife$=""then370 375 ife$="e"thenprint"{clr}":end 377 ife$="4"thengoto 9100 380 ife$<"1"ore$>"3"then370 400 printat(28,15)e$ 430 e=val(e$) 440 pause1 450 gosub5000 460 onegoto1000,2000,4000 1000 rem****************************** 1010 rem****** kuchen ********* 1020 rem****************************** 1100 i=360/mc:max=-10^38 1110 hires0,14 1111 low col1,14,14 1112 circle160,110,80,40,1 1114 arc160,130,90,270,5,80,40,1 1116 line80,110,80,130,1 1118 line240,110,240,130,1 1120 hi col:s=0:w1=0 1122 ford=1toa:f(d)=int(abs(x(d))+.5):nextd 1130 ford=1toa 1140 s=s+f(d) 1150 w1=((s*i)/180)*~ 1152 w3=(((f(d)/2)*i)/180)*~ 1155 low col1,14,14 1160 angl160,110,s*i,80,40,1 1161 if(s*i)<270and(s*i)>90thengosub1900 1163 hi col 1164 j=115:k=67 1165 ifa>10thenj=120 1166 ifx(d)<0thenlow col 2,14,14 1167 ifx(d)=0then1180 1168 ifmc/abs(x(d))>75then1180 1169 d$=left$(str$(x(d)),3) 1170 text155-cos((w1-w3)+(~/2))*j,110-sin((w1-w3)+(~/2))*k,d$,1,1,8 1180 ifx(d)<0thenhi col 1181 nextd 1183 w1=0:w2=0:w3=0:s=0 1184 ford=1toa 1185 ifx(d)>maxthenmax=x(d) 1186 nextd 1187 w1=0:w2=0:w3=0:s=0 1188 ford=1toa 1189 s=s+f(d) 1190 low col 1,14,14 1191 w2=((s*i)/180)*~:w3=(((f(d)/2)*i)/180)*~ 1193 ifx(d)=maxandx(d)=x(d+1)then1199 1195 ifx(d)=maxthen paint160-cos((w2-w3)+~/2)*20,110-sin((w2-w3)+~/2)*20,1 1198 nextd 1199 hi col 1200 gosub1925 1207 low col11,14,14 1210 text10, 6,"{CTRL-A}"+t$,1,2,12 1215 ifleft$(m$,1)<>"j"then1400 1220 text10,25,"{CTRL-A}mittelwert = "+str$(mw),1,1,8 1230 text10,33,"{CTRL-A}summe = "+str$(mb),1,1,8 1240 hi col 1400 h$=" {rvon}Menue=M Balken=B Diagramm=D Copy=C{rvof}" 1450 low col 13,14,14 1500 text3,190,"{CTRL-B}"+h$,1,1,8 1550 hi col 1700 getz$:ifz$=""then1700 1730 ifz$<>"m"andz$<>"b"andz$<>"d"andz$<>"c"then1700 1760 ifz$="m"thencset0:goto220 1790 ifz$="d"thengoto4000 1820 ifz$="b"thengoto2000 1850 ifz$="c"thencopy:goto1700 1880 end 1900 d1=160-cos(w1+~/2)*80:d2=110-sin(w1+~/2)*40:d3=d2+20 1910 lined1,d2,d1,d3,1 1920 return 1925 i=360/mc:s=0:low col1,14,14 1930 ford=1toa 1931 s=s+f(d) 1932 ifx(d)=maxandx(d)=x(d+1)thenreturn 1933 w2=((s*i)/180)*~:w3=(((f(d)/2)*i)/180)*~:w4=(((s-f(d))*i)/180)*~ 1935 ifs*i<90and(s-f(d))*i<90andx(d)=maxthen1968 1938 ifs*i>265and(s-f(d))*i>265andx(d)=maxthen1968 1941 ifs*i<270and(s-f(d))*i>90andx(d)=maxthen1942:else:goto1944 1942 paint160-cos((w2-w3)+~/2)*80,115-sin((w2-w3)+~/2)*40,1:goto1968 1944 ifs*i>93and(s-f(d))*i<90andx(d)=maxthen1945:else:goto1947 1945 paint161-cos(w2+~/2)*80,115-sin(w2+~/2)*40,1:goto1968 1947 ifs*i>=270and(s-f(d))*i<265andx(d)=maxthen1948:else:goto1968 1948 paint159-cos(w4+~/2)*80,115-sin(w4+~/2)*40,1:goto1968 1950 ifs*i>270and(s-f(d))*i<90andx(d)=maxthen1952:else:goto 1968 1952 paint160-cos((w2-w3)+~/2)*80,115-sin((w2-w3)+~/2)*40,1:goto1968 1968 nextd 1970 hi col 1980 return 1990 end 2000 rem****************************** 2010 rem********* balkengraphik ***** 2040 rem****************************** 2050 y=0:z=0:c=0 2070 ford=1toa 2100 a(d)=x(d) 2130 next 2230 ford=1toa 2240 ifabs(a(d))>ytheny=abs(a(d)) 2250 nextd 2252 gh=abs(y)/100 2255 ifmc<>mbanda<=10thenc=50:gh=2*gh 2256 ford=1toa:a(d)=a(d)/gh:nextd 2260 ifa<=10then2300 2290 ifa>10then2800 2300 rem****** max 10 werte ********** 2310 hires0,14 2312 low col 15,14,14 2315 text10,5,"{CTRL-A}"+t$,1,2,10 2317 ifleft$(m$,1)="j"thentext10,23,"{CTRL-A}mittelwert = "+str$(mw),1,1,8 2318 ifleft$(m$,1)="j"thentext10,31,"{CTRL-A}summe = "+str$(mb),1,1,8 2319 hi col 2320 line40,160-c,(40+a*26)+10,160-c,1 2322 line(40+a*26)+5,158-c,(40+a*26)+10,160-c,1 2324 line(40+a*26)+5,162-c,(40+a*26)+10,160-c,1 2340 line40,160,40,50,1 2342 line42,55,40,50,1 2344 line38,55,40,50,1 2350 q=0 2360 forf=140-(c*(4/5))to60step((-20)+(.2*c)) 2380 line38,f,41,f,1 2390 q=q+20 2395 low col 9,14,14 2400 text 0,f-6,str$(q),1,1,8 2402 hi col 2405 nextf 2410 char10,155,37,1,1 2430 ford=1toa 2432 h1=40+d*26 2435 ifx(d)<0thenlow col2,14,14 2436 ifa(d)<0thenv=110:else:v=110-a(d) 2437 ifmc=mbthenv=160-a(d) 2440 rech1-18,v,14,abs(a(d)),1 2560 lineh1-18,v,h1-12,v-6,1 2570 lineh1-4,160-a(d)-c,h1+2,154-a(d)-c,1 2580 lineh1-4,160-c,h1+2,154-c,1 2590 lineh1+2,v-6,h1-12,v-6,1 2600 lineh1+2,154-a(d)-c,h1+2,154-c,1 2605 ifx(d)=0then2615 2607 ifx(d)<0thenpainth1,108,1 2610 painth1-3,v+1,1 2615 ifx(d)<0thenhi col 2620 next d 2625 t=-1 2626 loop 2628 t=t+2 2630 b(t)=int(x(t)+.5) 2631 b(t+1)=int(x(t+1)+.5) 2632 ifx(t)=0then2635 2634 p=105-a(t)-(a(t))/abs(a(t))*10 2635 ifx(t+1)=0then2637 2636 q=105-a(t+1)-(a(t+1))/abs(a(t+1))*10 2637 ifmb=mcthenp=165:q=174 2638 ifa(t)<0thenlow col 2,14,14 2639 ifx(t)=0then2642 2640 text(40+t*26)-23,p,left$(str$(b(t)),3),1,1,7 2642 exit ift>=a 2645 ifa(t+1)<0thenlow col 2,14,14 2648 ifx(t+1)=0then2655 2650 text(40+(t+1)*26)-23,q,left$(str$(b(t+1)),3),1,1,7 2655 exit if t+1>=a 2660 ifa(t)<0thenhi col 2662 ifa(t+1)<0thenhi col 2670 end loop 2690 goto3800 2800 rem********* max 20 werte ******** 2820 hires0,14 2825 low col 1,14,14 2830 text10,03,"{CTRL-A}"+t$,1,2,10 2840 ifleft$(m$,1)="j"thentext10,20,"{CTRL-A}mittelwert = "+str$(mw),1,1,8 2845 ifleft$(m$,1)="j"thentext10,28,"{CTRL-A}summe = "+str$(mb),1,1,8 2847 hi col 2850 line40,150,40,40,1 2860 line315,150,315,40,1 2870 line40,150,315,150,1 2880 line38,45,40,40,1 2890 line42,45,40,40,1 2900 line313,45,315,40,1 2910 line317,45,315,40,1 2915 q=0 2920 forf=130to50step-20 2930 line38,f,41,f,1 2940 line314,f,317,f,1 2945 q=q+20 2947 low col 7,14,14 2950 text0,f-6,str$(q),1,1,8 2955 char10,145,37,1,1 2960 hi col 2965 next 2970 ford=1toa:a(d)=abs(a(d)):nextd 3000 iffrac(a/2)<>0thenb=(int(a/2))+1:else:b=(a/2) 3010 ford=b+1toa 3015 h2=50+(d-b)*25 3020 rech2-16,156-a(d),12,a(d),1 3030 lineh2-15,150,h2-5,150,0 3040 lineh2-16,156-a(d),h2-10,150-a(d),1 3050 lineh2-4,156-a(d),h2+2,150-a(d),1 3060 lineh2-4,156,h2+2,150,1 3070 lineh2+2,150,h2+2,150-a(d),1 3080 lineh2-10,150-a(d),h2+2,150-a(d),1 3090 lineh2-3,150,h2+1,150,0 3092 ifa(d)=0then3340 3095 if(y/a(d))>75then3340 3097 ifx(d)=0then3340 3100 painth2-15,157-a(d),1 3110 painth2-9,155-a(d),1 3120 painth2-3,154,1 3130 ifx(d)<0thenlow col 2,14,14 3140 texth2-20,40,left$(str$(x(d)),3),1,1,8 3330 ifx(d)<0thenhi col 3340 next 3410 ford=1tob 3415 h3=50+d*25 3420 rech3-26,178-a(d),12,a(d),2 3440 lineh3-26,178-a(d),h3-20,172-a(d),2 3450 lineh3-14,178-a(d),h3-8,172-a(d),2 3460 lineh3-14,178,h3-8,172,2 3470 lineh3-8,172,h3-8,172-a(d),2 3480 lineh3-20,172-a(d),h3-8,172-a(d),2 3500 ifx(d)<0thenlow col 2,14,14 3510 texth3-35,181,left$(str$(x(d)),3),1,1,8 3520 ifx(d)<0thenhi col 3540 next 3800 h$=" {rvon}Menue=M Kuchen=K Diagramm=D Copy=C{rvof}" 3810 low col11,14,14 3820 text3,191,"{CTRL-B}"+h$,1,1,8 3830 hi col 3900 getz$:ifz$=""then3900 3930 ifz$<>"m"andz$<>"k"andz$<>"d"andz$<>"c"then3900 3940 ifz$="m"thencset0:goto220 3950 ifz$="d"thengoto4000 3960 ifz$="k"thengoto1000 3970 ifz$="c"thencopy:goto3900 3980 end 4000 rem **************************** 4030 rem ******* diagramm *********** 4060 rem **************************** 4090 y=0 4120 ford=1toa 4150 ifabs(x(d))>ytheny=abs(x(d)) 4180 next 4210 gh=y/90 4270 hires1,14 4280 low col11,14,14 4300 text10,10,"{CTRL-A}"+t$,1,2,10 4330 ifleft$(m$,1)="j"thentext10,30,"{CTRL-A}mittelwert = "+str$(mw),1,1,8 4340 ifleft$(m$,1)="j"thentext10,38,"{CTRL-A}summe = "+str$(mb),1,1,8 4345 hi col 4350 ifmb<>mcthenc=55:gh=gh*2 4357 ford=1toa:c(d)=x(d)/gh:nextd 4360 line50,150,50,50,1 4365 fori=142to54step-8:line49,i,51,i,1:nexti 4380 line48,55,50,50,1:line52,55,50,50,1 4390 fori=60to240step 10:linei,149-c,i,151-c,1:nexti 4420 line50,150-c,250,150-c,1 4440 line245,148-c,250,150-c,1:line245,152-c,250,150-c,1 4450 fori=20to100step20 4452 low col 9,14,14 4455 ifmb<>mcthen4470 4459 z=0 4460 fori=135to55step-20:z=z+20:text10,i,str$(z),1,1,8:nexti:char20,150,37,1,1 4465 goto4640 4470 z=-120 4480 fori=140to45step-9:z=z+20:text10,i,str$(z),1,1,8:nexti:char20,155,37,1,1 4640 hi col 4650 ford=1toa-1 4660 line(50+d*10)-10,150-c(d)-c,(50+d*10),150-c(d+1)-c,1 4770 next 4780 d=-1 4790 ifmc<>mbthenll=2:else:ll=3 4800 loop 4805 low col3,14,14 4810 d=d+2 4815 ifx(d)<0thenlow col2,14,14 4820 text27+d*10,160,left$(str$(x(d)),ll),1,1,8 4822 ifx(d)<0thenhi col 4824 exit if d>=a 4826 low col3,14,14 4828 ifx(d+1)<0thenlow col 2,14,14 4830 text27+(d+1)*10,172,left$(str$(x(d+1)),ll),1,1,8 4832 ifx(d+1)<0thenhi col 4834 exit if d+1>=a 4840 hi col 4850 end loop 4900 h$=" {rvon}Menue=M Kuchen=K Balken=B Copy=C{rvof}" 4902 low col 6,14,14 4905 text3,188,"{CTRL-B}"+h$,1,1,8 4907 hi col 4910 getz$:ifz$=""then4910 4930 ifz$<>"m"andz$<>"k"andz$<>"b"andz$<>"c"then4910 4940 ifz$="m"thencset0:goto220 4950 ifz$="b"thengoto2000 4960 ifz$="k"thengoto1000 4970 ifz$="c"thencopy:goto4910 4980 end 5000 rem******************************* 5010 rem***** werteeingabe ******** 5020 rem******************************* 5030 print"{clr}{rvon} werteeingabe {rvof}" 5060 printat(5,5)"titel der tabelle" 5090 input"{up}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}";t$ 5100 ift$=""then5030 5120 printat(5,8)"mittelwert und summe" 5150 input"{up}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}";m$ 5160 ifleft$(m$,1)<>"j"andleft$(m$,1)<>"n"then5120 5180 printat(5,11)"anzahl der werte" 5210 input"{up}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}";a$ 5240 a=val(a$) 5270 ifa<2ora>20thenprintat(6,13)"maximal 20 werte":goto5180 5330 ford=1toa:x(d)=100*x(d):x(d)=int(x(d)):x(d)=x(d)/100 5360 printat(5,17)"wert";d;" =" 5390 input"{up}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}";x(d) 5420 nextd 5500 print"{clr}{rvon} wertetabelle {rvof}" 5530 printat(5,3)t$ 5550 print"{down}" 5560 ford=1toastep2:x(d)=100*x(d):x(d)=int(x(d)):x(d)=x(d)/100 5570 x(d+1)=100*x(d+1):x(d+1)=int(x(d+1)):x(d+1)=x(d+1)/100 5590 print" wert"(d)"="left$(str$(x(d)),7) 5600 print" {up} wert"(d+1)"="left$(str$(x(d+1)),7) 5620 next 5640 printat(6,17)"werte in ordnung ?" 5650 getw$:ifw$=""then5650 5652 ifleft$(w$,1)<>"j"andleft$(w$,1)<>"n"then5640 5655 printat(26,17)w$ 5660 ifleft$(w$,1)="n"thenprintat(6,17)" ":goto5330 5700 goto8000 5720 printat(6,19)"mittelwert = ";mw 5730 printat(6,20)"summe = ";mb 5800 printat(6,22)"wertetabelle ausdrucken" 5830 input"{up}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}";v$ 5860 ifleft$(v$,1)<>"j"andleft$(v$,1)<>"n"then5800 5880 ifleft$(v$,1)="j"thenhrdcpy 5900 ifleft$(v$,1)="n"then5910 5910 printat(6,23)"wertetabelle speichern" 5930 input"{up}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}";s$ 5960 ifleft$(s$,1)<>"j"andleft$(s$,1)<>"n"then5910 5980 ifleft$(s$,1)="j"thenscrsv2,8,2,"@:"+t$+",s,w":gosub9000:return 6000 ifleft$(s$,1)="n"thenreturn 7999 end 8000 rem****************************** 8030 rem**** summe und mittelwert *** 8060 rem****************************** 8120 mb=0 8125 ford=1toa:mc=mc+abs(x(d)):next 8130 ford=1toa:mb=mb+(x(d)):next 8180 mw=mb/a 8190 mw=mw*1000:mw=int(mw):mw=mw/1000 8195 mb=mb*1000:mb=int(mb):mb=mb/1000 8197 mc=mc*1000:mc=int(mc):mc=mc/1000 8200 ifm$="n"then5800 8210 goto5720 8300 end 9000 rem **** fehlerkanal *********** 9010 open15,8,15 9020 input#15,aa,bb$,cc,dd 9025 ifbb=0thenclose15:return 9030 print"{clr}";aa,bb$,cc,dd 9040 geta$:ifa$=""then9040 9045 close15 9050 return 9090 rem *************************** 9100 rem *** letzte graphik ******** 9110 rem *************************** 9120 cset 2 9140 getz$:ifz$=""then9140 9141 ifmc=0then9160 9142 ifz$<>"m"andz$<>"b"andz$<>"d"andz$<>"c"andz$<>"k"then9140 9144 ifz$="m"thencset0:goto220 9146 ifz$="d"thengoto4000 9148 ifz$="b"thengoto2000 9150 ifz$="k"thengoto1000 9152 ifz$="c"thencopy:goto9140 9160 cset0:goto220 9180 end