10 '========================================
20 '= =
30 '= ΓΡΑΦΙΚΗ
ΠΑΡΑΣΤΑΣΗ ΣΥΝΑΡΤΗΣΕΩΝ =
40
'= =
50
'========================================
60 DIM
F(650),ROOT(100)
70
SCREEN 2:C24$=CHR$(24)
80
XMO=0!:WIDTH 80
90 '
100
'---------ΕΠΙΛΟΓΕΣ----------------------
110 '
120
CLS:LOCATE 14,20
130
PRINT "PROGRAMMA GRAFIKON PARASTASEVN"
140
PRINT TAB(24);"1. ORISMOS SYNARTHSHS"
150
PRINT TAB(24);"2. GRAFIKH PARASTASH"
160
PRINT TAB(24);"3. TELOS PROGRAMMATOS":PRINT
162
PRINT "PIESE TO ANTISTOIXO PLHKTRO"
170
K$=INKEY$
180 IF
K$="" THEN 170 ELSE KK=VAL(K$)
190 IF
KK>3 THEN SOUND 65,2:GOTO 170
200
CLS:ON KK GOTO 240,300,1000
210 '
220 '--------ΟΡΙΣΜΟΣ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ----------
230 '
240
CLS:PRINT"DOSE TH SYNARTHSH META TO ="
250
PRINT"SVHNONTAS AYTH POY YPARXEI"
260
PRINT:PRINT"META DOSE RUN"
270
PRINT:PRINT:EDIT 300
280 REM
---- ΠΑΡΑΜΕΤΡΟΙ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ -------
290 '
300 DEF
FNY(X)=X*SIN(X)
310
SCREEN 2:LOCATE 1,3:PRINT STRING$(80,210)
320
LOCATE 1,5:PRINT"grafikh parastash apo:";
330
INPUT" ",APO
340
PRINT TAB(17);:INPUT "mexri: ",MEXRI
350
PRINT TAB(16);:INPUT "BHMATA: ",STP
360 IF
STP=0 OR STP>640 THEN STP=640 ELSE 380
370
LOCATE 23:PRINT "640"
380
INPUT "YPOLOGISMOS RIZON ;(n/o)",RRR$
390 IF
RRR$="N" OR RRR$="n" THEN FROOT=99 ELSE
FROOT=0:GOTO 420
400
INPUT "AKRIBEIA 1=MIKRH 9=MEGALH :
",XAC
410 IF
XAC<9 THEN ACC=100 ELSE ACC=400
420
QX=.9:QY=.9
430 CLS:LOCATE
2,25:PRINT "PARAKALO PERIMENETE "
440
CNT=0:DX=(MEXRI-APO)/STP:XMAX=APO:XMIN=APO
450 '
460 '------ΥΠΟΛΟΓΙΣΜΟΣ ΣΗΜΕΙΩΝ-------------
470 '
480
R=1:ON ERROR GOTO 1620
490 FOR
X=APO TO MEXRI+DX STEP DX
500 PSET
((CNT+1)*640/STP,199)
510 PSET
((CNT+1)*640/STP,197)
520
F=FNY(X)
530
CNT=CNT+1
540 IF
CNT=1 THEN FMAX=F:FMIN=F:GOTO 570
550 IF
F>FMAX THEN FMAX=F:XMAX=X:GOTO 570
560 IF
F<FMIN THEN FMIN=F:XMIN=X:GOTO 570
570
F(CNT)=F:IF CNT=1 THEN F(0)=F
580
FACT=F*F(CNT-1):IF FROOT<>99 THEN 610
590 IF
F=0 THEN ROOT(R)=X:R=R+1:GOTO 610
600 IF
FACT<0 THEN GOSUB 1490
610 NEXT
X
620 ON
ERROR GOTO 1620
630
CLS:PRINT "YPOLOGISMOS APO: ";APO;
640
PRINT "MEXRI: ";MEXRI;
650
PRINT "SE";STP;"BHMATA"
660
PRINT "ELAXISTO: c(";XMIN;")=";FMIN
670
PRINT "MEGISTO:c(";XMAX;")=";FMAX
680 IF
R<1 OR FROOT=0 THEN 710
690
PRINT:PRINT "rizes:";
700 FOR
II=1 TO R-1:PRINT TAB(7);ROOT(II):NEXT II
710
LOCATE 20,25:PRINT "THA SYNEXISETE;
(n/o) "
720
K$=INKEY$:IF K$=""THEN 720
730 IF
K$="O" OR K$="o" THEN CLS:GOTO 80
740 GOTO 870
750 '
760 '----------ΕΠΑΝΑΛΗΨΗ/ΕΚΤΥΠΩΣΗ--------------
770 '
780
LOCATE 20,25
790
PRINT "EPANALHPSH ME ALLH KLIMAKA; (N/O)",KS$
800
KS$=INKEY$:IF KS$="" THEN 800
810 IF
KS$="O" OR KS$="o"
THEN CLS:GOTO 80
820 CLS
830
LOCATE 20,25:PRINT SPACE$(79):LOCATE 20,25
840
LOCATE 22,25:PRINT SPACE$(79):LOCATE 22,25
850
INPUT "KLIMAKOSH AXONA-Y (0.1-0.9): ",QY
860 IF
QX<.1 OR QX>.9 OR QY<.1 OR QY>.9 THEN 830
870
LOCATE 20,25
880
PRINT "PATHSTE ENA PLHKTRO GIA SYNEXEIA";
890
PRINT C24$;CHR$(7):GOTO 900
900
CLS:LOCATE 22,25:PRINT SPACE$(79):LOCATE 22,25
910
INPUT "YPODIAIRESH
X-AXONA:",XD
920
LOCATE 24,25:PRINT SPACE$(79):LOCATE 24,25
930
INPUT "YPODIAIRESH Y-AXONA:",YD:CLS
940
LOCATE 20,25
950
PRINT "PATHSTE ENA PLHKTRO GIA SYNEXEIA";
960
PRINT C24$;CHR$(7)
970
SCREEN 2:GOSUB 1040:GOSUB 1380
980
K$=INKEY$:IF K$=""THEN 980
990 GOTO
780
1000
SCREEN 0,0,0:STOP
1010 '
1020
'-------ΑΥΤΟΜΑΤΗ ΚΛΙΜΑΚΩΣΗ-----------
1030 '
1040
XPLUS=ABS(FMIN)/(ABS(FMIN)+ABS(FMAX))
1050
YO=199-199*XPLUS*QY
1060
XO=(QX+.1)*(640*ABS(APO)/
(ABS(APO)+ABS(MEXRI)))
1070
XO=XO+XMO
1080
Y1=640*(QX+.1)
1090
PSET (1,YO):LINE-(Y1,YO)
1100
Y2=INT(Y1/((MEXRI-APO)*XD))
1110 FOR
I=1 TO XO STEP Y2
1120
PSET (XO,YO):LINE-(XO,YO+4)
1130
PSET (XO-I,YO):LINE-(XO-I,YO+4)
1140
NEXT I
1150 FOR
I=Y2 TO Y1-XO STEP Y2
1160
PSET (XO,YO):LINE-(XO,YO+4)
1170
PSET (XO+I,YO):LINE-(XO+I,YO+4)
1180
NEXT I
1190 IF
APO*MEXRI>0 THEN 1320
1200
Y3=199*QY
1210
PSET (XO,200-199*(QY+.1)):LINE-(XO,199)
1220
Y4=INT(Y3/((FMAX-FMIN)*YD))
1230 IF
Y4<10^(-6) THEN GOTO 1330
1240 FOR
J=1 TO YO-199+199*(QY+.1) STEP Y4
1250
PSET (XO,YO):LINE-(XO+3,YO)
1260
PSET (XO,YO-J):LINE-(XO+3,YO-J)
1270
NEXT J
1280 FOR
J=Y4 TO 199-YO STEP Y4
1290
PSET (XO,YO):LINE-(XO+3,YO)
1300
PSET (XO,YO+J):LINE-(XO+3,YO+J)
1310
NEXT J
1320
RETURN
1330
PRINT "YPODIAIRESH Y AXONA LANTHASMENH"
1340 GOTO 910
1350 '
1360 '--------ΣΧΕΔΙΑΣΗ ΤΗΣ ΚΑΜΠΥΛΗΣ----------
1370 '
1380 IF
R>1 THEN LOCATE 1,1:PRINT "rizes:";
1390 FOR
II=1 TO R-1:PRINT ROOT(II);"/";:NEXT II
1400 FOR
I%=1 TO CNT+1
1410
XA=XMO+(QX+.1)*(640/STP)*(I%-1)
1420
YA=398-YO-QY*F(I%)*199/
(ABS(FMAX)+ABS(FMIN))-398*XPLUS*QY
1430
PSET (XA,YA)
1440 IF
F(I%)*F(I%-1)<=0 THEN SOUND 146,2
1450
NEXT I%
1460
RETURN
1470 '
1480
'---------ΥΠΟΛΟΓΙΣΜΟΣ ΡΙΖΩΝ-------------
1490
RMIN =10^10
1500 FOR
RX=X-(MEXRI-APO)/STP TO X
STEP (MEXRI-APO)/(ACC*STP)
1510 IF
FNY(RX)=0 THEN ROOT(R)=RX:R=R+1 ELSE 1540
1520
LOCATE 23,INT(1+DX*CNT*80/(MEXRI-APO))
1530
PRINT CHR$(25);CHR$(7):RETURN
1540 IF
ABS(FNY(RX))>RMIN THEN 1560
1550
RMIN=RX
1560
NEXT RX:ROOT(R)=RMIN
1570
LOCATE 23,INT(1+DX*CNT*80/(MEXRI-APO))
1580
PRINT CHR$(25);CHR$(7):R=R+1:RETURN
1590 '
1600 '----ΠΑΓΙΔΕΥΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΛΑΘΩΝ -------
1610 '
1620 IF
ERR<>6 AND ERR<>11 AND ERR<>5 THEN END
1630
F(CNT)=0:CNT=CNT+1
1640
RESUME 610