-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathA10_Functieplot.bc3
270 lines (269 loc) · 8.76 KB
/
A10_Functieplot.bc3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
1000 A=250:HG=0:GOTO20:REM FUNCTIEPLOT
1010 GOSUB100:REM SCHERM SCHOON
1110 IFHG/2=INT(HG/2) THENHG=HG-1
1120 IFVG/2=INT(VG/2) THENVG=VG-1
1130 REM VOORBEREIDINGEN
1140 REM ******************************
2000 GOSUB100:REM SCHERM SCHOON
2010 PRINT" x"
2020 PRINT"1 Y = A"
2030 PRINT" 2"
2040 PRINT"2 Y = AX +BX+C"
2050 PRINT" 3 2"
2060 PRINT"3 Y = AX +BX +CX+D"
2070 PRINT" a"
2080 PRINT"4 Y = LOG X"
2090 PRINT"5 Y = A*SIN BX"
2100 PRINT" 2"
2110 PRINT"6 Y = A*SIN BX"
2120 PRINT" a"
2130 PRINT"7 Y = X"
2140 PRINT"8 Twee grafieken"
2150 PRINT"9 Stop programma";
2160 G=20:DH=0:DV=0:REM BEGINVERGROTING
2170 GOSUB210:F=IN-48:REM KIES
2180 IFF=9 THEN950:REM EINDE
2190 IFF=8 THEN3000
2200 IF(F<1)OR(F>7) THEN2170
2210 F2=0:REM GEEN TWEE FUNCTIES
2220 GOSUB100:REM SCHERM SCHOON
2230 ONF GOSUB9000,9100,9200,9300,9400,9500,9600
2260 GOSUB100:REM SCHERM SCHOON
2270 PRINT"Stapgrootte (1-4)?"
2280 GOSUB210:S=IN-48:REM VRAAG STAPGROOTTE
2290 IF(S<1)OR(S>4) THEN2260
2300 GOTO10000:REM TEKEN IN HI-RES.
2310 REM KIES FUNCTIE DIE MOET GETEKEND
2320 REM ******************************
3000 GOSUB100:REM SCHERM SCHOON
3010 PRINT"Welke van de genoemde"
3020 PRINT"functies zijn het?"
3030 PRINT:PRINT"Functie 1: ";
3040 GOSUB210:F=VAL(IN$):REM KIES
3050 IF(F<1)OR(F>7) THEN3040
3060 A=0:B=0:C=0:D=0:PRINTIN$
3070 ONF GOSUB9000,9100,9200,9300,9400,9500,9600
3080 A1=A:B1=B:C1=C:D1=D:REM FUNCTIE 1
3090 PRINT:PRINT"Functie 2: ";
3100 GOSUB210:F2=VAL(IN$):REM KIES
3110 IF(F2<1)OR(F2>7) THEN3100
3120 PRINTIN$
3130 ONF2 GOSUB9000,9100,9200,9300,9400,9500,9600
3140 A2=A:B2=B:C2=C:D2=D:A=A1:B=B1:C=C1:D=D1:F1=F
3150 REM VARIABELEN VOOR FUNCTIE 1 EN 2
3160 GOTO2260:REM KIES TWEE FUNCTIES
3170 REM ******************************
7000 GOSUB210:REM WACHT OP TOETS
7100 IFIN=77 THEN2000:REM M
7110 IFIN=71 THEN7160:REM G
7120 IFIN=75 THEN7140:REM K
7130 GOTO7000:REM VRAAG OPDRACHT
7140 G=G*.5:DH=0:DV=0:REM VERKLEIN
7150 GOTO2260:REM TEKEN VERKLEINING
7160 G=G*2:REM VERGROOT
7170 GOSUB100:REM SCHERM SCHOON
7180 PRINT"Welk gebied?"
7190 PRINT:PRINT"0 rond Oorsprong"
7200 PRINT"1 kwadrant I"
7210 PRINT"2 kwadrant II"
7220 PRINT"3 kwadrant III"
7230 PRINT"4 kwadrant IV"
7240 GOSUB210:REM WACHT OP TOETS
7250 IFIN=48 THENDX=0:DY=0:GOTO7310
7260 IFIN=49 THENDX=1:DY=1:GOTO7310
7270 IFIN=50 THENDX=-1:DY=1:GOTO7310
7280 IFIN=51 THENDX=-1:DY=-1:GOTO7310
7290 IFIN=52 THENDX=1:DY=-1:GOTO7310
7300 GOTO7240
7310 DH=DH+EX*DX/G:DV=DV+EY*DY/G
7320 REM KIES GEBIED EN VERSCHUIF
7330 GOTO2260:REM TEKEN VERGROTING
7340 REM BEPAAL NIEUWE TEKENOPDRACHT
7350 REM ******************************
8000 PRINT"Geef A een waarde:"
8010 INPUTW$:A=VAL(W$)
8020 IF(W$="e")OR(W$="E") THENA=2.71828183
8030 IF(W$="pi")OR(W$="PI") THENA=3.14159265
8040 RETURN:REM HAAL WAARDE A
8100 PRINT"Geef B een waarde:"
8110 INPUTW$:B=VAL(W$)
8120 IF(W$="e")OR(W$="E") THENB=2.71828183
8130 IF(W$="pi")OR(W$="PI") THENB=3.14159265
8140 RETURN:REM HAAL WAARDE B
8200 PRINT"Geef C een waarde:"
8210 INPUTW$:C=VAL(W$)
8220 IF(W$="e")OR(W$="E") THENC=2.71828183
8230 IF(W$="pi")OR(W$="PI") THENC=3.14159265
8240 RETURN:REM HAAL WAARDE C
8300 PRINT"Geef D een waarde:"
8310 INPUTW$:D=VAL(W$)
8320 IF(W$="e")OR(W$="E") THEND=2.71828183
8330 IF(W$="pi")OR(W$="PI") THEND=3.14159265
8340 RETURN:REM HAAL WAARDE D
8350 REM HAAL WAARDEN VAN CONSTANTEN
8360 REM ******************************
9000 PRINT" x"
9010 PRINT"Y = A"
9020 PRINT:GOSUB8000:REM HAAL A
9030 IFA<0 THEN9020
9040 RETURN
9100 PRINT" 2"
9110 PRINT"Y = AX +BX+C"
9120 PRINT:GOSUB8000
9130 GOSUB8100:GOSUB8200
9140 RETURN:REM HAAL A EN B EN C
9200 PRINT" 3 2"
9210 PRINT"Y = AX +BX +CX+D"
9220 PRINT:GOSUB8000:GOSUB8100
9230 GOSUB8200:GOSUB8300
9240 RETURN:REM HAAL A EN B EN C EN D
9300 PRINT" a"
9310 PRINT"Y = LOG X"
9320 PRINT:GOSUB8000:REM HAAL A
9330 IF(A<=0)OR(A=1) THEN9320
9340 RETURN
9400 PRINT"Y = A*SIN BX"
9410 PRINT:GOSUB8000:GOSUB8100
9420 RETURN:REM HAAL A EN B
9500 PRINT" 2"
9510 PRINT"Y = A*SIN BX"
9520 PRINT:GOSUB8000:GOSUB8100
9530 RETURN:REM HAAL A EN B
9600 PRINT" a"
9610 PRINT"Y = X"
9620 PRINT:GOSUB8000:REM HAAL A
9630 IFA<>INT(A) THEN9620
9640 RETURN
9650 REM BEPAAL CONSTANTEN IN FUNCTIES
9660 REM ******************************
9700 ONF GOSUB9800,9810,9820,9830,9850,9860,9870
9710 RETURN:REM ZOEK GOEDE FUNCTIE
9800 Y=A^T:RETURN
9810 Y=(A*T+B)*T+C:RETURN
9820 Y=((A*T+B)*T+C)*T+D:RETURN
9830 IFT>0 THENY=LOG(T)/LOG(A):RETURN
9840 Y=(-EY-1)*SGN(A-1)/G+DV:RETURN
9850 Y=A*SIN(B*T):RETURN
9860 Y=A*(SIN(B*T)^2):RETURN
9870 Y=T^A:RETURN
9880 REM BEPAAL Y-BEELD VAN X
9890 REM ******************************
10000 GOSUB600:REM GRAFISCH BEDRIJF
10010 FX=1/HG:FY=1/VG:CN=0:REM KLEUR
10020 EY=(VG+1)/2:VE=EY*FY:REM HELFT Y-AS
10030 EX=(HG+1)/2:REM HELFT X-AS
10040 FORHO=8*FX TOHG*FX-.001 STEP2*FX
10050 IF(HO>(EX-5)*FX)AND(HO<(EX+3)*FX) THEN10080
10060 IF(HO>(EX+21)*FX)AND(HO<(EX+38)*FX) THEN10080
10070 GOSUB620:REM PLOT PUNT
10080 NEXTHO:REM TEKEN X-AS
10090 HO=EX*FX
10100 FORVE=8*FY TOVG*FY STEP2*FY
10110 IF(VE>(EY-4)*FY)AND(VE<(EY+4)*FY) THEN10130
10120 GOSUB620:REM PLOT PUNT
10130 NEXTVE:REM TEKEN Y-AS
10140 VE=(EY-3)*FY:HO=(EX-4)*FX:SR$="O"
10150 IF(INT(DH)<>0)OR(INT(DV)<>0) THENSR$="+"
10160 GOSUB650:REM PRINT SR$ (O OF +)
10170 SR=20/G:GOSUB300:REM SR$=SR
10180 HO=(EX+22)*FX:GOSUB650:REM PRINT SR$
10190 HO=(EX+20)*FX:VE=VE+4*FY:GOSUB620
10200 VE=VE+FY:GOSUB620:REM PLOT PUNTEN
10210 REM TEKEN LIJNTJE VOOR EENHEID
10220 VE=(EY-3)*FY:HO=0:SR$="X"
10230 GOSUB650:REM PRINT SR$
10240 VE=0:HO=(EX-4)*FX:SR$="Y"
10250 GOSUB650:REM PRINT SR$
10260 Q=0:REM TEKEN ASSENSTELSEL
10270 REM *****************************
11000 T=(-EX-1)/G+DH:GOSUB9700
11010 LY=INT(G*(Y-DV)+0.5):REM EERSTE Y
11020 FORX=-EX TOEX-2 STEPS
11030 IFLY>EY-3 THENLY=EY-2
11040 IFLY<-EY+3 THENLY=-EY+2
11050 HO=(X+EX)*FX:T=X/G+DH:GOSUB9700
11060 Y=INT(G*(Y-DV)+0.5):REM Y NU
11070 IFABS(Y)<EY-2 THEN11120:REM Y BINNEN BEELD
11080 IF(ABS(LY)>EY-3)AND(SGN(LY)=SGN(Y)) THEN11180
11090 IF(ABS(LY)>EY-3) THEN12000
11100 IFY>0 THEN12100
11110 GOTO12200:REM Y BUITEN BEELD
11120 VE=(-Y+EY)*FY:GOSUB620:REM PLOT PUNT
11130 IFLY>EY-3 THEN12300
11140 IFLY<-EY+3 THEN12400
11150 IFABS(LY-Y)<=1 THEN11180
11160 IFLY>Y THEN12500
11170 GOTO12600:REM Y BINNEN BEELD
11180 LY=Y:NEXTX:REM VORIGE Y=Y NU
11190 GOTO13000
11200 REM LUS VOOR TEKENEN GRAFIEK
11210 REM *****************************
12000 VE=2*FY:GOSUB620:REM PLOT PUNT
12010 VE=(VG-2)*FY:GOSUB630:REM TREK LIJN TOT DIT PUNT
12020 GOTO11180:REM BOVEN TOT ONDER
12100 VE=2*FY:GOSUB620:REM PLOT PUNT
12110 VE=(-LY+EY-1)*FY:GOSUB630:REM TREK LIJN
12120 GOTO11180:REM BOVEN TOT PUNT
12200 VE=(VG-2)*FY:GOSUB620:REM PLOT PUNT
12210 VE=(-LY+EY+1)*FY:GOSUB630:REM TREK LIJN
12220 GOTO11180:REM ONDER TOT PUNT
12300 VE=2*FY:GOSUB630:REM TREK LIJN
12310 GOTO11180:REM PUNT TOT BOVEN
12400 VE=(VG-2)*FY:GOSUB630:REM TREK LIJN
12410 GOTO11180:REM PUNT TOT ONDER
12500 VE=(-LY+EY+1)*FY:GOSUB630:REM TREK LIJN
12510 GOTO11180:REM PUNT TOT HOOG PUNT
12600 VE=(-LY+EY-1)*FY:GOSUB630:REM TREK LIJN
12610 GOTO11180:REM PUNT TOT LAAG PUNT
12700 REM DELEN VAN GRAFIEK TEKENEN
12710 REM *****************************
13000 Q=Q+1:REM TELLER VOOR 2 FUNCTIES
13010 IF(Q>1)OR(F2=0) THEN13040
13020 F=F2:A=A2:B=B2:C=C2:D=D2
13030 GOTO11000:REM TEKEN GRAFIEK 2
13040 IFQ=1 THEN13070
13050 F=F1:A=A1:B=B1:C=C1:D=D1
13060 REM HERSTEL SITUATIE GRAFIEK 1
13070 CN=1:FORVE=0 TO8*FY STEPFY
13080 HO=0:GOSUB620:REM WIS PUNT
13090 HO=(HG-2)*FX:GOSUB630:REM WIS LIJN TOT DIT PUNT
13100 NEXTVE:REM WIS BOVENSTE REGELS
13110 CN=0:SR$="Menu Groter Kleiner ?"
13120 HO=0:VE=0:GOSUB650:REM PRINT SR$
13130 GOTO7000:REM VRAAG OPDRACHT
13140 REM MAAK GRAFIEK AF
13150 REM *****************************
30000 REM 0-999 STANDAARDROUTINES
30010 REM 1000 VERPLICHTE REGEL
30020 REM 1010-1140 VOORBEREIDINGEN
30030 REM 2000-2320 FUNCTIE-KEUZE
30040 REM 3000-3170 VOOR TWEE FUNCTIES
30050 REM 8000-8360 VRAAGT CONSTANTEN
30060 REM 9000-9660 CONST. IN FUNCTIES
30070 REM 9700-9890 ZOEKT Y-BEELD VAN X
30080 REM 9970-9990 EINDROUTINE
30090 REM 10000-10270 ASSENSTELSEL
30100 REM 11000-11210 TEKEN GRAFIEK
30110 REM 12000-12710 TEKENROUTINES
30120 REM 13000-13150 MAAK GRAFIEK AF
30130 REM 30000-30260 BESCHRIJVING
30140 REM 32000-32110 AUTEUR
30150 REM
30160 REM VERDERE GEGEVENS STAAN IN
30170 REM AARDE EN KOSMOS INFORMATICA
30180 REM NUMMER 7, 1987
30190 REM
30200 REM *****************************
30210 REM FUNCTIEPLOT
30220 REM
30230 REM EEN PROGRAMMA IN
30240 REM BASICODE-3
30250 REM
32000 REM GESCHREVEN DOOR
32010 REM HANS VAN DONGEN
32020 REM HENDRIK VAN VELDEKESTRAAT 34
32030 REM 6367 SB VOERENDAAL
32040 REM
32050 REM 28-08-1987
32060 REM
32100 REM TROS-RADIO dd 871007