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