10  COM B$[1],Z$[1],A,A$[1],B
20  REM PROGRAM NAME = GRAPH, GRAPHING DATA
30  DIM W$[3],D$[20],C$[3],E$[20],H$[20],G$[20]
40  DIM X[50],Y[50],K[50],L[50],W[50],Z[50]
50  K2=240
60  IF A$="B" THEN 1830
70  REM A$="B"  =  CHAINED FROM GRAPHS
80  PRINT "DO YOU KNOW WHICH FUNCTIONS OF X THIS PROGRAM CAN GRAPH?  ";
90  ENTER K2,K3,W$
100  PRINT 
110  IF W$="YES" THEN 1610
120  IF W$#"NO" THEN 80
130  PRINT '10"LET'S SAY, ARBITRARILY, THE VALUE OF Y (THE DEPENDENT VARIABLE)"
140  PRINT "DEPENDS ON THE VALUE OF X (THE INDEPENDENT VARIABLE)."
150  PRINT "THEN, WE SAY Y IS A FUNCTION OF X.  FUNCTIONS OF X WHICH THIS"
160  PRINT "PROGRAM CAN GRAPH ARE:"
170  PRINT "  1) Y VS. X^N      3) Y VS. LOG X      5) Y VS. (COS X)^N"
180  PRINT "  2) Y VS. E^X      4) Y VS. (SIN X)^N  6) Y VS. (TAN X)^N"
190  PRINT "  "'10"AND THE INVERSE OF ANY OF THE ABOVE,"
200  PRINT "  WHERE N = REAL NUMBER, AND E = NATURAL LOG BASE = 2.718..."
210  GOTO 1610
220  PRINT "HOW MANY (X,Y) PAIRS OF DATA ARE THERE?  ";
230  ENTER K2,K3,S
240  PRINT 
250  FOR N=1 TO S
260  READ K[N],L[N]
270  NEXT N
280  IF A$="B" THEN 80
290  PRINT "WHICH FUNCTION OF X (OR ITS INVERSE) DO YOU WANT GRAPHED?  ";
300  ENTER K2,K3,B
310  PRINT 
320  IF B<1 OR B>6 OR B#INT(B) OR K3<0 THEN 290
330  PRINT "DO YOU WANT THE INVERSE OF THE FUNCTION?  ";
340  ENTER K2,K3,C$
350  PRINT 
360  IF C$="YES" THEN 380
370  IF C$#"NO" THEN 330
380  IF B=2 OR B=3 THEN 460
390  PRINT "INPUT A VALUE FOR N:  ";
400  ENTER K2,K3,K
410  PRINT 
420  IF C$#"YES" THEN 450
430  F=-K
440  GOTO 460
450  F=K
460  FOR N=1 TO S
470  W[N]=K[N]
480  Z[N]=L[N]
490  NEXT N
500  GOTO 1320
510  I1=A1=W[1]
520  I2=A2=Z[1]
530  FOR N=1 TO S
540  I1=I1 MIN W[N]
550  A1=A1 MAX W[N]
560  I2=I2 MIN Z[N]
570  A2=A2 MAX Z[N]
580  NEXT N
590  FOR M=1 TO S
600  N=1
610  FOR A=1 TO S
620  IF Z[N] >= Z[A] THEN 660
630  IF A=S THEN 680
640  N=N+1
650  GOTO 610
660  NEXT A
670  GOTO 720
680  Y[M]=Z[A]
690  X[M]=W[A]
700  Z[A]=0
710  GOTO 750
720  Y[M]=Z[N]
730  X[M]=W[N]
740  Z[N]=0
750  NEXT M
760  Q=A1-I1
770  R=A2-I2
780  IF Q=0 THEN 810
790  T=60/Q
800  GOTO 820
810  T=0
820  U=R/10
830  GOSUB B OF 1480,1500,1520,1540,1560,1580
840  PRINT 
850  IF B=2 OR B=3 THEN 910
860  IF C$="YES" THEN 890
870  PRINT "- - - - - GRAPH OF Y VS. "D$;K
880  GOTO 950
890  PRINT "- - - - - GRAPH OF Y VS. 1/"D$;K
900  GOTO 950
910  IF C$="YES" THEN 940
920  PRINT "- - - - - GRAPH OF Y VS. "D$
930  GOTO 950
940  PRINT "- - - - - GRAPH OF Y VS. 1/"D$
950  PRINT "- - - RANGE OF VALUES FOR Y IS"R" AND FOR X IS"Q
960  PRINT "Y"
970  FOR M=1 TO 10
980  E=Y[1]-(M-1)*U
990  FOR N=2 TO S
1000  IF E=Y[N-1] THEN 1070
1010  IF E>Y[N-1] THEN 1030
1020  NEXT N
1030  J=(Y[N-1]-E)/(Y[N-1]-Y[N-2])
1040  G=J*(X[N-1]-X[N-2])
1050  G=-G
1060  GOTO 1080
1070  G=0
1080  H=X[N-1]+G
1090  I=H-I1
1100  W=I*T
1110  PRINT "!"'10'13"!"'10'13"!";TAB(W);"*"
1120  NEXT M
1130  PRINT "!"'13'10"!"
1140  PRINT "------------------------------------------------------------------ X"
1150  PRINT 
1160  PRINT "DOES THE GRAPH LOOK LIKE A STRAIGHT LINE?  ";
1170  ENTER K2,K3,W$
1180  PRINT 
1190  IF W$="NO" THEN 1250
1200  IF W$#"YES" THEN 1160
1210  PRINT 
1220  PRINT "NOW YOU SHOULD BE ABLE TO WRITE A STRAIGHT LINE RELATIONSHIP"
1230  PRINT "BETWEEN THE VARIABLES."
1240  END 
1250  PRINT "DO YOU WANT TO HAVE ANOTHER FUNCTION OF X GRAPHED?  ";
1260  ENTER K2,K3,W$
1270  PRINT 
1280  PRINT 
1290  IF W$="YES" THEN 290
1300  IF W$#"NO" THEN 1250
1310  END 
1320  FOR N=1 TO S
1330  GOSUB B OF 1360,1380,1400,1420,1440,1460
1340  NEXT N
1350  GOTO 510
1360  W[N]=(W[N])^F
1370  RETURN 
1380  W[N]=EXP(W[N])
1390  RETURN 
1400  W[N]=LOG(W[N])
1410  RETURN 
1420  W[N]=(SIN(W[N]))^F
1430  RETURN 
1440  W[N]=(COS(W[N]))^F
1450  RETURN 
1460  W[N]=(TAN(W[N]))^F
1470  RETURN 
1480  D$="X^"
1490  RETURN 
1500  D$="E^X"
1510  RETURN 
1520  D$="LOG X"
1530  RETURN 
1540  D$="(SIN X)^"
1550  RETURN 
1560  D$="(COS X)^"
1570  RETURN 
1580  D$="(TAN X)^"
1590  RETURN 
1600  END 
1610  IF A$="B" THEN 290
1620  PRINT "HAVE YOU TYPED THE DATA STATEMENTS INTO THIS PROGRAM?  ";
1630  ENTER K2,K3,W$
1640  PRINT 
1650  IF W$="YES" THEN 220
1660  IF W$#"NO" THEN 1620
1670  PRINT 
1680  PRINT "AFTER THESE INSTRUCTIONS ARE FINISHED, YOU MUST DO THE FOLLOWING:"
1690  PRINT "   1. TYPE IN DATA STATEMENTS(S) USING LINES 3000-3500 AS FOLLOWS:"
1700  PRINT "        FOR EXAMPLE:"
1710  PRINT "            FOR THESE VALUES OF X AND Y:"
1720  PRINT "                 EXPT #     X    Y"
1730  PRINT "                   1       18    5"
1740  PRINT "                   2       12    9"
1750  PRINT "                   3       30    1"
1760  PRINT "                   4        1   15"
1770  PRINT "            "'10"THE DATA STATEMENTS MUST BE IN THE FORM,"
1780  PRINT "            3000 DATA X1,Y1,X2,Y2,X3,Y3,......"
1790  PRINT "            AND FOR THIS SET OF DATA THE STATEMENT IS:"
1800  PRINT "            3000 DATA 18,5,10,9,30,1,1,15"
1810  PRINT "   2. AFTER TYPING THE DATA STATEMENT(S), TYPE RUN."
1820  END 
1830  S=5
1840  GOTO B OF 1850,1910,250
1850  FOR N=1 TO 5
1860  K[N]=N
1870  L[N]=1/N
1880  NEXT N
1890  PRINT 
1900  GOTO 80
1910  FOR N=1 TO 5
1920  K[N]=N
1930  L[N]=N^2
1940  NEXT N
1950  PRINT 
1960  GOTO 80
3000  DATA 9,.056,6,.083,2,.25,1,.5,4,.125
3600  END 
