C 64
Statistik

Business-Grafik für jedermann

Mit den beiden hier vorgestellten Programmen können Sie sehr einfach statistische Kurven in Form eines Kreis- oder Liniendiagramms auf dem Printer/Plotter 1520 zeichnen.

Beide Programme »Kreisdiagramm« (Listing 1) und »Manager-Kurve« (Listing 2) sind in Basic geschrieben und werden folglich mit LOAD"Name", 8 geladen und mit RUN gestartet. Zu beiden Programmen finden Sie in Tabelle 1 und 2 eine Aufschlüsselung nach Zeilennummern. Dadurch lassen sich die Programme leicht den eigenen Erfordernissen anpassen.

Zeile Funktion
10 - 80 Programmname; Name und Adresse des Autors
90 - 330 Dateninitialisierung
340 - 600 Dateneingabe
610 - 680 Umrechnung der Werte in Bogenmaß-Winkel
690 - 760 Kreis zeichnen
770 - 1220 Zeichnen der Sektoren
1230 - 1340 Texte und Programmende
1350 - 1480 Unterprogramm Sektorenfärbung im I. Quadranten
1490 - 1620 analog für II. Quadranten
1630 - 1760 analog für III. Quadranten
1770 - 1900 analog für IV. Quadranten
1910 - 2080 Unterprogramm Eingabe weiterer Sektorenbereiche
Tabelle 1. Aufschlüsselung nach Zeilennummern für das Programm »Kreisdiagramm«.
10 - 70 Programmname; Name und Adresse des Autors
80 - 150 Initialisierung des Plotters und Dimensionierung von Strings und Variablen
160 - 470 Menü
480 - 1410 Neues Diagramm
1420 - 1920 Linie zeichnen
1930 - 2100 Diagramm am Ende durch Beschriftung vervollständigen (Unterprogramm)
2110 Programmende durch Plotterreset.
Tabelle 2. Aufschlüsselung nach Zeilennummern für das Programm »Manager Kurve«.

Kreisdiagramm

Das Programm »Kreisdiagramm« (Listing 1) ermöglicht das Zeichnen und farbliche Gestalten von Kreisdiagrammen verschiedener Größen mit dem Plotter VC 1520.

Um ein Kreisdiagramm zu zeichnen, ist wie folgt vorzugehen.

  1. Laden und Starten des Programms mit LOAD-"Name",8:RUN
  2. Eingabe der Diagrammgröße (maximal 2)
    Der Radius des geplotteten Kreisdiagramms in »cm« beträgt das zweifache des eingegebenen Wertes.
  3. Eingabe der Diagrammfarbe (0 = schwarz etc.)
    Die Konturen des Diagramms und die eventuellen Texte werden in dieser Farbe geplottet.
  4. Eingabe der Überschrift
  5. Eingabe der Anzahl der Sektoren
  6. Eingabe, ob Prozent- oder Absolutwerte (»P« beziehungsweise »A«.)
    Bei Absolutwerten werden die Sektorengrößen anteilig berechnet. Bei Prozentwerten überprüft das Programm, ob die Summe der eingegebenen Werte ungleich 100% ist. Sollte das der Fall sein, wird eine Korrektur oder Neueingabe angeboten, bei Unterschreitung der Gesamtsumme der Restwert berechnet und als gleichwertiger Sektor bearbeitet.
  7. Eingabe, mit oder ohne Text
    Wenn die Eingabe mit Text erfolgen soll, werden die Sektoren am Rand mit einer laufenden Nummer versehen und die Texte mit »Nr.« unter dem Diagramm aufgelistet.
  8. Eingabe, ob Korrektur der Initialisierungsdaten
    Wenn ja, Neustart des Programms
  9. Eingabe der Daten zu den Sektoren
    • Prozent- beziehungsweise Absolut-Wert
    • Text, falls erwünscht
    • Farbeingabe (RETURN = keine farbliche Ausfüllung, sonst in der eingegebenen Farbe)
    • Linienabstandseingabe für Schraffierung, wenn Farbeingabe (1 = lückenloses Ausmalen des Sektors mit der angegebenen Farbe).
    Aus Zeitgründen und wegen der Lebensdauer der Plotterstifte empfiehlt es sich nicht, große Diagramme farblich ganz auszufüllen.
  10. Eingabe, ob Korrektur einzelner Werte.
    Wenn ja, Eingabe der laufenden Nummer des zu korrigierenden Wertes; wenn nein, setzt sich der Plotter-Zeichenstift in Bewegung.

Zwei Beispiele für das Zeichnen von Kreisdiagrammen zeigen Bild 1 und 2.

Bild 1. Kreisdiagramm gezeichnet mit dem Plotter 1520 (Diagrammgröße 2)
Bild 2. Kreisdiagramm (Diagrammgröße 1)

Manager-Kurve

Mit dem Plotter-Programm »Manager-Kurve« (Listing 2) lassen sich beliebige Linien in ein 8 x 16 cm großes Koordinatensystem mit frei wählbarer Skala zeichnen. Das Diagramm wird anschließend beschriftet.

Um eine »Manager-Kurve« zu zeichnen, ist wie folgt vorzugehen.

  1. Laden und Starten des Programms mit LOAD-"Name",8:RUN
  2. Im Menü wählt man die Farbe für Skala und Beschriftung, stellt das Menü auf »Neues Diagramm« und drückt RETURN zur Ausführung.
  3. Eingabe der Ober- und Untergrenze der Y-Skala. Eingabe der Ober- und Untergrenze der X-Skala. Da die X-Achse doppelt so lang ist wie die Y-Achse, ergeben gleiche Ober- und UntergrenzenfürX- undY-Skalaeine 1/2-fache Überhöhung. Eingabe der Überschrift: Zum Zeichnen des Diagramms ist RETURN zu drücken. Auch eine Korrektur der Daten (N) oder ein direkter Rücksprung ins Menü (M) ist möglich.
  4. Bei der Menü-Anzeige nach dem Zeichnen des Diagramms wähle man »Neue Linie« und stelle Farbe, Linienart (unterbro-\chene/durchgezogene Linie) und Verfahrensweise zum Zeichnen eines Punktes (mit/ohne Markierungskreuz) ein. RETURN führt zur
  5. Koordinaten- und Texteingabe der Punkte. Aus Gründen der Übersichtlichkeit empfiehlt es sich nicht, zu vielen Punkten lange Texte einzugeben. In diesem Fall ist die Anbringung von Fußnoten günstiger, die dann manuell oder mit einem entsprechenden Programm neben das Diagramm gesetzt, erklärt werden.

    Liegt ein Punkt außerhalb des Diagramms, kann bis zur Zeichengrenze des Plotters die Linie gezogen werden. Jedoch läßt sich kein Text eingeben.

    Wahlweise ist

    • Ausführung der Anweisung (= Plotten der Linie), danach Eingabe eines neuen Punktes (RETURN),
    • Ausführung der Anweisung, danach Rücksprung ins Menü (SHIFT-RETURN),
    • direkter Sprung ins Menü (M) oder
    • Korrektur der Daten (N) möglich.
  6. Im Menü lassen sich Farbe, Linienart und Markierungskreuz einstellen. Auch kann die Linie am letzten Punkt weitergezeichnet, oder eine neue Linie begonnen werden. Entscheidet man sich für ein neues Diagramm oder für Programmende, wird das alte Diagramm beschriftet und zur neuen Diagramm-Dateneingabe gesprungen beziehungsweise das Programm beendet.

Zwei Beispiele für eine Managerkurve zeigen Bild 3 und 4.

(Franz Strobel/ah)
Bild 3. Liniendiagramm mit Kommentar
Bild 4. Bis zu vier Liniendiagramme gleichzeitig.
10 rem ***********************
20 rem ***   kreisdiagramm   *
30 rem *** fuer plotter 1520 *
40 rem ***        von        *
50 rem ***   franz  strobl   *
60 rem ***   starenweg  12   *
70 rem ***  d-8050 freising  *
80 rem ***********************
90 rem ***
100 rem *** dateninitialisierung
110 rem ***
120 print"{clr}kreisdiagramm":input"groesse (max. 2)";a
130 ifa>2ora<=0then120
140 open1,6,1:open2,6,2:open3,6,3:open4,6
150 deffnk(y)=sqr((a*a*10000-y*y))
160 input"diagrammfarbe (0 - 3)";f1
170 iff1<0orf1>3then160
180 print#2,f1
190 input"ueberschrift (bis 20 zeichen)";u$:iflen(u$)>20then190
200 print#3,2:print#4,u$
210 print#3,0
220 input"anzahl der sektoren ( < 100)";as
230 ifas>100oras<1oras<>int(as)then220
240 dimw(as+1),t$(as+1),s(as+1),f$(as+1)
250 print"prozent- oder absolut-werte (p/a) ?";
260 getg$:ifg$=""or(g$<>"p"andg$<>"a")then260
270 printg$
280 print"mit texteingabe? (j/n)";
290 gett$:ift$<>"j"andt$<>"n"then290
300 printt$
310 print"sollen die daten korrigiert werden (j/n)?"
320 getd$:ifd$<>"j"andd$<>"n"then320
330 ifd$="j"thenrun
340 rem ***
350 rem *** dateneingabe
360 rem ***
370 s=0
380 forr1=1toas
390 printr1;:input". wert";w(r1)
400 gosub1940
410 s=s+w(r1)
420 nextr1
430 ifg$="a"ors<=100then500
440 rem rem summe der prozentwerte > 100
450 print"summe der prozentwerte > 100"
460 print"neueingabe (n) oder korrektur (k)?"
470 gete$:ife$<>"n"ande$<>"k"then470
480 ife$="n"thenrun
490 goto540
500 print"werte korrigieren? (j/n)"
510 getk$:ifk$<>"j"andk$<>"n"then510
520 ifk$="n"then600
530 rem korrektur eines wertes
540 input"welchen wert";k:ifk>asork<1then430
550 s=s-w(k)
560 printk;:input". wert";w(k)
570 r1=k:gosub1940
580 s=s+w(r1)
590 goto430
600 ifs<100andg$="p"thenprint"rest:":as=as+1:r1=as:w(r1)=100-s:print"wert:"w(r1):gosub1940
610 rem ***
620 rem *** umrechnung der werte in bogenmass-winkel
630 rem ***
640 ifg$="p"thenf=.02*~:goto660
650 f=~*2/s
660 forr2=1toas
670 w(r2)=w(r2)*f
680 nextr2
690 rem ***
700 rem *** kreis zeichen
710 rem ***
720 print#1,"m",240,-120*a:print#1,"i"
730 print#1,"r",0,a*100
740 forr3=0to2step.05
750 print#1,"j",a*100*sin(r3*~),a*100*cos(r3*~)
760 nextr3
770 rem ***
780 rem *** zeichnen der sektoren
790 rem ***
800 s1=0:x1=0:y1=a*100
810 forr4=1toas
820 s0=s1:x0=x1:y0=y1
830 s1=s1+w(r4)
840 x1=a*100*sin(s1):y1=a*100*cos(s1)
850 print#1,"r",0,0:print#1,"j",x1,y1
860 rem quadrantenbeschriftung
870 ift$="n"then940
880 ifs1<=~/2thenprint#1,"r",x1-4,y1+10:goto920
890 ifs1<=~thenprint#1,"r",x1+6,y1-6:goto920
900 ifs1<=3*~/2thenprint#1,"r",x1-8,y1-12:goto920
910 print#1,"r",x1-18,y1
920 print#4,r4;:print#1,"m",240,-120*a:print#1,"i"
930 rem farbe des sektors
940 iff$(r4)=""then1260
950 print#2,f$(r4)
960 q0=int(2*s0/~):ifq0=4thenq0=3
970 q1=int(2*s1/~):ifq1=4thenq1=3
980 q=q1-q0
990 ifq=0then1210
1000 ifq=1then1150
1010 ifq=2then1090
1020 rem 4 quadranten
1030 xl=x0:yl=y0:xr=a*100:yr=0:gosub1380
1040 xl=a*100:yl=0:xr=0:yr=-100*a:gosub1520
1050 xl=0:yl=-100*a:xr=-100*a:yr=0:gosub1660
1060 xl=-100*a:yl=0:xr=x1:yr=y1:gosub1800
1070 goto1260
1080 rem 3 quadranten
1090 ifq1=3thenxl=x0:yl=y0:xr=0:yr=-100*a:gosub1520:goto1050
1100 xl=x0:yl=y0:xr=a*100:yr=0:gosub1380
1110 xl=a*100:yl=0:xr=0:yr=-100*a:gosub1520
1120 xl=0:yl=-100*a:xr=x1:yr=y1:gosub1660
1130 goto1260
1140 rem 2 quadranten
1150 ifq1=3thenxl=x0:yl=y0:xr=-100*a:yr=0:gosub1660:goto1060
1160 ifq1=2thenxl=x0:yl=y0:xr=0:yr=-100*a:gosub1520:goto1120
1170 xl=x0:yl=y0:xr=a*100:yr=0:gosub1380
1180 xl=a*100:yl=0:xr=x1:yr=y1:gosub1520
1190 goto1260
1200 rem 1 quadrant
1210 xl=x0:yl=y0:xr=x1:yr=y1
1220 q1=q1+1:onq1gosub1380,1520,1660,1800
1230 rem ***
1240 rem *** texte und programmende
1250 rem ***
1260 print#2,f1:nextr4
1270 print#1,"m",0,-240*a
1280 print#4:ift$="n"then1340
1290 print#3,1:print#2,f1:print#4
1300 forr5=1toas
1310 ifr5<10thenprint#4," ";
1320 print#4,r5;:print#4,t$(r5)
1330 nextr5:print#4:print#4
1340 print#4:close1:close2:close3:close4:end
1350 rem ***
1360 rem *** farbe i. quadrant
1370 rem ***
1380 ifyl=0thendeffnl(y)=250:goto1400
1390 deffnl(y)=y*xl/yl
1400 ifyr=0thendeffnr(y)=250:goto1420
1410 deffnr(y)=y*xr/yr
1420 forh1=ylto0step-s(r4)
1430 hx=fnl(h1):ha=fnr(h1):hb=fnk(h1)
1440 ifha>hbthenha=hb
1450 print#1,"r",hx,h1
1460 print#1,"j",ha,h1
1470 nexth1
1480 return
1490 rem ***
1500 rem *** farbe ii. quadrant
1510 rem ***
1520 ifyl=0thendeffnl(y)=250:goto1540
1530 deffnl(y)=y*xl/yl
1540 ifyr=0thendeffnr(y)=250:goto1560
1550 deffnr(y)=y*xr/yr
1560 forh2=0toyrstep-s(r4)
1570 hx=fnr(h2):ha=fnl(h2):hb=fnk(h2)
1580 ifha>hbthenha=hb
1590 print#1,"r",hx,h2
1600 print#1,"j",ha,h2
1610 nexth2
1620 return
1630 rem ***
1640 rem *** farbe iii. quadrant
1650 rem ***
1660 ifyl=0thendeffnl(y)=-250:goto1680
1670 deffnl(y)=y*xl/yl
1680 ifyr=0thendeffnr(y)=-250:goto1700
1690 deffnr(y)=y*xr/yr
1700 forh3=0toylstep-s(r4)
1710 hx=fnl(h3):ha=fnr(h3):hb=-fnk(h3)
1720 ifha<hbthenha=hb
1730 print#1,"r",ha,h3
1740 print#1,"j",hx,h3
1750 nexth3
1760 return
1770 rem ***
1780 rem *** farbe iv. quadrant
1790 rem ***
1800 ifyl=0thendeffnl(y)=-250:goto1820
1810 deffnl(y)=y*xl/yl
1820 ifyr=0thendeffnr(y)=-100*a:goto1840
1830 deffnr(y)=y*xr/yr
1840 forh4=yrto0step-s(r4)
1850 hx=fnr(h4):ha=fnl(h4):hb=-fnk(h4)
1860 ifha<hbthenha=hb
1870 print#1,"r",ha,h4
1880 print#1,"j",hx,h4
1890 nexth4
1900 return
1910 rem ***
1920 rem *** eingabe weiterer sektorendaten
1930 rem ***
1940 ift$="n"then1970
1950 input"    text (bis 36 zeichen";t$(r1)
1960 iflen(t$(r1))>36then1950
1970 print"    farbe (s/b/g/r/return)?";
1980 getf$:iff$=""then1980
1990 iff$="s"thenf$(r1)="0":goto2050
2000 iff$="b"thenf$(r1)="1":goto2050
2010 iff$="g"thenf$(r1)="2":goto2050
2020 iff$="r"thenf$(r1)="3":goto2050
2030 ifasc(f$)=13thenf$(r1)="":print:return
2040 goto1980
2050 printf$
2060 input"    linienabstand schraffierung";s(r1)
2070 ifs(r1)<1then2050
2080 return
Listing 1. Programm »Kreisdiagramm«. Bitte beachten Sie die Eingabehinweise auf Seite 6
10 rem *********************
20 rem *** manager - kurve *
30 rem ***       von       *
40 rem ***  franz  strobl  *
50 rem ***  starenweg  12  *
60 rem *** d-8050 freising *
70 rem *********************
80 rem ***
90 rem *** initialisierung
100 rem ***
110 open1,6,1:open2,6,2:open4,6:open3,6,3:open44,6,4:open5,6,5:open7,6,7
120 print#44,1:print#4:print#4:print#4:print#3,1
130 dimt$(100)
140 f$(0)="schwarz":f$(1)="blau":f$(2)="gruen":f$(3)="rot"
150 i$(0)="nein":i$(1)="ja":f=0:l=0:g=0:e=0:w=0:m=0:d=.5
160 rem ***
170 rem *** menue
180 rem ***
190 rem menue-anzeige
200 print"{clr}liniendiagramm{down}"
210 print"neues diagramm (d)       ",i$(d*2)
220 print"neue linie (l)           ",i$(l*2)
230 print"linie weiterzeichnen (w) ",i$(w*2)
240 print"ende (e)                 ",i$(e*2)
250 print"farbe (f)                ",f$(f*4)
260 print"markierung (m)           ",i$(m*2)
270 print"gestrichelte linie (g)   ",i$(g*2)
280 print"{down}return fuehrt die anweisung aus"
290 rem menue-eingabe
300 geta$:ifa$=""then300
310 ifa$="f"thenf=f+.25:f=f-int(f):goto200
320 ifa$="w"thenw=w+.5:w=w-int(w):e=0:l=0:d=0:goto200
330 ifa$="l"thenl=l+.5:l=l-int(l):e=0:d=0:w=0:goto200
340 ifa$="m"thenm=m+.5:m=m-int(m):e=0:goto200
350 ifa$="e"thene=e+.5:e=e-int(e):l=0:d=0:w=0:m=0:g=0:goto200
360 ifa$="d"thend=d+.5:d=d-int(d):l=0:e=0:w=0:goto200
370 ifa$="g"theng=g+.5:e=0:d=0:g=g-int(g):goto200
380 ifasc(a$)=13then410
390 goto300
400 rem menue-ausfuehrung
410 ife=.5thengosub1960:close1:close2:close4:close44:close5:goto2110
420 print#2,f*4
430 print#5,g*8
440 ifw=.5thenw=0:ifc$="j"andd1=1then1490
450 ifl=.5andd1=1then1460
460 ifd=.5thengosub1960:goto520
470 goto300
480 rem ***
490 rem *** neues diagramm
500 rem ***
510 rem initialisierung
520 print#1,"m",0,-200:print#4:f1=f:d1=1:n1=0:n3=0:print#2,f*4
530 forb=0to100:t$(b)="                                       ":nextb
540 rem eingabe y-skala und auswertung
550 print"{clr}skala:":print"hoehe (y):"
560 input"anfang";ya
570 input"ende";ye
580 ifya>=yethen560
590 dy=ye-ya
600 z=0
610 forb=yatoyestepdy/4
620 ifb=0thenn1=1
630 y$(z)=str$(b):z=z+1
640 nextb
650 rem eintragung skalenwerte y in beschriftungsvariable t$(x)
660 z=0
670 forts=1to33step8
680 l1=len(y$(z))
690 fortz=22to21-l1step-1
700 t$(tz)=left$(t$(tz),ts)+mid$(y$(z),tz-20+l1,1)+right$(t$(tz),38-ts)
710 nexttz
720 z=z+1
730 nextts
740 rem eingabe x-skala und auswertung
750 print"laenge (x):"
760 print"-skala ist in x-richtung doppelt so lang wie in y-richtung"
770 input"anfang";xa
780 input"ende";xe
790 ifxa>=xethen770
800 dx=xe-xa
810 print.5*dx/dy"-fach ueberhoeht"
820 print"{down}return = fuehrt die anweisung aus"
830 print"m      = zurueck ins menue"
840 print"n      = korrektur der daten"
850 geta$:ifa$=""then850
860 ifa$="n"then520
870 ifa$="m"thend1=0:goto200
880 ifasc(a$)<>13then850
890 z=0
900 forb=xatoxestepdx/4
910 ifb=0thenn3=1
920 x$(z)=str$(b):z=z+1
930 nextb
940 rem eintragung skalenwerte x in beschriftungsvariable t$(x)
950 z=0
960 fortz=21to61step10
970 forb=0tolen(x$(z))
980 t$(tz+b)=mid$(x$(z),1+b,1)+right$(t$(tz+b),38)
990 nextb
1000 z=z+1
1010 nexttz
1020 rem eingabe ueberschrift und auswertung
1030 t1$="":input"ueberschrift";t1$
1040 l1=len(t1$):ifl1=0then1110
1050 ifl1>40thenprint"text zu lang":goto1030
1060 rem eintragung ueberschrift in beschriftungsvariable t$(x)
1070 forb=38to37+l1
1080 t$(b)=left$(t$(b),38)+mid$(t1$,b-37,1)
1090 nextb
1100 rem plotterinitialisierung zum zeichnen des diagramms
1110 print#1,"m",0,-200
1120 print#4,chr$(13)
1130 print#1,"m",18,0:print#1,"i"
1140 rem y-achse
1150 print#1,"j",400,0
1160 forb=400to0step-100
1170 print#1,"r",b,5
1180 print#1,"j",b,-5
1190 nextb
1200 rem x-achse
1210 forb=0to-800step-200
1220 print#1,"r",-5,b
1230 print#1,"j",5,b
1240 nextb
1250 print#1,"r",0,-800
1260 print#1,"j",0,0
1270 rem achse x=0 (mit beschriftung), falls notwendig
1280 ifxa>=0orxe<=0then1350
1290 fx=800*xa/dx:print#1,"r",-5,fx
1300 print#1,"j",400,fx
1310 ifn3=1then1350
1320 n2=int(22-fx/20):ifleft$(t$(n2),1)<>" "then1350
1330 t$(n2)="0"+right$(t$(n2),38)
1340 rem achse y=0 (mit beschriftung), falls notwendig
1350 ifya>=0orye<=0then1410
1360 fy=-400*ya/dy:print#1,"r",fy,5
1370 print#1,"j",fy,-800
1380 ifn1=1then1410
1390 n2=int(1+fy/12):ifmid$(t$(20),n2,1)<>" "then1410
1400 t$(20)=left$(t$(20),n2)+"0"+right$(t$(20),38-n2)
1410 l=.5:d=0:goto200
1420 rem ***
1430 rem *** linie zeichnen
1440 rem ***
1450 rem zeichentyp "r" oder "j"
1460 ifl=.5thenc$="r":goto1490
1470 c$="j"
1480 rem koordinaten- und texteingabe mit auswertung
1490 input"{clr}laengenwert (x)";x
1500 input"hoehenwert (y)";y
1510 ifx<=xeandx>=xaandy<=yeandy>=yathen1560
1520 print"punkt liegt nicht innerhalb des dia-"
1530 print"gramms. soll trotzdem die linie ge-"
1540 print"zeichnet werden, druecken sie return"
1550 t1$="":goto1580
1560 t1$="":input"text";t1$
1570 iflen(t1$)>20thenprint"text zu lang":t1$="":goto1560
1580 print"{down}return = fuehrt die anweisung aus"
1590 print"sh/ret = ausfuehrung, danach ins menue"
1600 print"m      = zurueck ins menue"
1610 print"n      = korrektur der daten"
1620 geta$:ifa$=""then1620
1630 ifa$="n"then1490
1640 ifa$="m"thenw=0.5:l=0:goto200
1650 ifasc(a$)<>13andasc(a$)<>141then1620
1660 rem plotterkoordinaten und ausfuehrung
1670 fx=-800*(x-xa)/dx
1680 fy=400*(y-ya)/dy
1690 print#1,c$,fy,fx
1700 rem markierungskreuz
1710 ifm=0then1760
1720 print#5,0:print#1,"r",fy+3,fx
1730 print#1,"j",fy-3,fx:print#1,"r",fy,fx+3
1740 print#1,"j",fy,fx-3:print#1,"r",fy,fx
1750 print#5,g*8
1760 ift1$=""then1910
1770 rem eintragung text in freien platz der beschriftungsvariable t$(x)
1780 ts=int(2+fy/12)
1790 tz=int(21-fx/20)
1800 v=0
1810 forb=tztotz-1+len(t1$)
1820 ifmid$(t$(tz),ts,1)<>" "thenb=tz-1+len(t1$):v=v+1:nextb:goto1840
1830 nextb:v=0
1840 ifv=1thents=ts+1:goto1810
1850 ifv=2thents=ts-2:goto1810
1860 ifv=3thents=ts+3:goto1810
1870 ifv=4thenprint"text nicht moeglich":forb=0to300:nextb:goto1910
1880 forb=tztotz-1+len(t1$)
1890 t$(b)=left$(t$(b),ts-1)+mid$(t1$,b+1-tz,1)+right$(t$(b),39-ts)
1900 nextb
1910 ifasc(a$)=141thenw=.5:l=0:goto200
1920 goto1470
1930 rem ***
1940 rem *** diagramm am ende durch beschriftung vervollstaendigen
1950 rem ***
1960 ifd1=0thenreturn
1970 print#2,f1*4:print#5,0
1980 print#1,"m",0,410
1990 fort=1to80
2000 ift$(t)="                                       "thenprint#4:nextt:return
2010 ifright$(t$(t),38)="                                      "then2060
2020 ifright$(t$(t),29)="                             "then2070
2030 ifright$(t$(t),19)="                   "then2080
2040 ifright$(t$(t),10)="          "then2090
2050 print#4,t$(t):nextt:return
2060 print#4,left$(t$(t),1):nextt:return
2070 print#4,left$(t$(t),10):nextt:return
2080 print#4,left$(t$(t),20):nextt:return
2090 print#4,left$(t$(t),29):nextt
2100 return
2110 print#7:close7:end
Listing 2. Programm »Manager-Kurve«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →