Listing of file='LSN10.BAS;01' on disk='vmedia/BASIC_lessons-sector.ccvf'
10 PLOT 27,1,255,14 20 REM COMPUCOLOR BASIC LESSON 10 30 REM ART GRUSENDORF 60 PLOT 6,35,12,3,15,12,6,24:PRINT " WELCOME TO COMPUCOLOR BASIC " 70 PLOT 3,24,16,6,24:PRINT " LESSON 10 " 80 FOR X= 1TO 1000:NEXT X:PLOT 6,3,12 90 PRINT :PRINT 100 PRINT " GOOD TO SEE YOU AGAIN!" 110 PRINT :PRINT "IN THE LAST LESSON, REFERENCE WAS MADE TO FUNCTIONS WHICH" 120 PRINT "YOU CAN DEFINE YOURSELF. THEY ARE CALLED USER DEFINED FUNCTIONS" 130 PRINT "AND USE THE THE TERM DEF (FOR DEFINE). HERE IS AN EXAMPLE:" 140 PRINT :PRINT " DEF FNP(C) = C+.57*C" 150 PRINT :PRINT "THE FN MEANS FUNCTION AND P IS THE NAME" 160 PRINT "OF THE FUNCTION. A FUNCTION NAME IS A SINGLE LETTER, SO YOU" 170 PRINT "ARE ALLOWED 26 PER PROGRAM. TYPE 1 IF YOU THINK C IS THE" 180 PRINT "ARGUMENT. OTHERWISE TYPE ANOTHER NUMBER. WHAT DO YOU SAY"; 190 INPUT A 200 PLOT 12:IF A= 1THEN 230 210 PRINT "WRONG GUESS - C IS OPERATED ON; THE RIGHT SIDE SHOWS HOW," 220 GOTO 240 230 PRINT "OF COURSE! ANY FUNCTION NEEDS AN ARGUMENT. ON THE RIGHT SIDE," 240 PRINT "C+.57*C WILL HAVE A VALUE DEPENDENT UPON THE SIZE OF C.IF" 250 PRINT "P IS A SALES PRICE BASED ON A 57 PERCENT MARKUP OVER COST," 260 PRINT "THEN THE EXPRESSION COULD READ: 'THE PRICE FUNCTION OF COST" 270 PRINT "IS DEFINED AS C+.57*C'." 280 PRINT "THE FOLLOWING SAMPLE PROGRAM INCORPORATES THE ABOVE FUNCTION:":PRINT 290 PRINT " 100 DEF FNP(C) = C+.57*C" 300 PRINT " 110 INPUT C" 305 PRINT " 120 PRINT P" 310 PRINT :PRINT "FOR A COMPLICATED FUNCTION USED MORE THAN ONCE IN A PROGRAM," 320 PRINT "THE DEFINE STATEMENT HAS OBVIOUS ADVANTAGES. MORE EXAMPLES" 330 PRINT " OF USING DEFINED FUNCTIONS WILL BE INCLUDED LATER." 340 PRINT :INPUT " PRESS 'RETURN'";G 350 PLOT 12 360 PRINT "A SUBROUTINE MAY BE THOUGHT OF AS A PROGRAM WITHIN A PROGRAM." 370 PRINT "THE STANDARD FUNCTIONS ARE USUALLY SUBROUTINES, SINCE WHEN ONE" 380 PRINT "OF THEM IS CALLED, THE ARGUMENT IS SUBSTITUTED" 390 PRINT "INTO A SERIES (SUM OF TERMS) TO EVALUATE THE FUNCTION. WE MAY" 400 PRINT "WRITE OUR OWN SUBROUTINE FOR A PROCESS TO BE DONE MORE THAN" 410 PRINT "ONCE IN A PROGRAM. THE SUBROUTINE WILL BE EXECUTED " 420 PRINT "WHEN THE MAIN PROGRAM TRANSFERS CONTROL TO IT." 430 PRINT "NOTE THESE EXPRESSIONS:" 440 PRINT :PRINT " GOSUB DOSUB GOFOR ROUTINE" 445 PRINT 450 PRINT "WHICH LOOKS LIKE IT MIGHT CALL IN A SUBROUTINE"; 460 INPUT A$ 470 IF A$= "GOSUB"THEN 500 480 PRINT "IT DOESN'T THOUGH. TRY ANOTHER ONE." 490 GOTO 460 500 PLOT 12 510 PRINT "THAT'S IT. FOR INSTANCE, GOSUB 400 MEANS 'GO TO THE PROGRAM" 520 PRINT "(SUBROUTINE) WHICH BEGINS ON LINE 400. AFTER THE SUBPROGRAM" 530 PRINT "HAS BEEN EXECUTED, CONTROL IS RETURNED TO THE STATEMENT AFTER" 540 PRINT "THE ONE WHICH CALLED THE SUBROUTINE. 550 PRINT :PRINT " GOBACK MAIN RETURN GO TO" 555 PRINT 560 INPUT "HOW DO YOU THINK THIS IS DONE? ";A$ 570 IF A$= "RETURN"THEN 600 580 PRINT "NOT THAT ONE. TRY AGAIN" 590 GOTO 560 600 PRINT 610 PRINT "THAT'S IT! USE THIS ONE AS THE LAST STATEMENT IN A" 620 PRINT "SUBROUTINE TO RETURN TO THE POINT LEFT IN THE MAIN" 630 PRINT "PROGRAM. THE NEXT STATEMENT IN THE LATTER IS THEN EXECUTED." 640 PRINT "NOW FOR AN EXAMPLE. DO YOU PREFER A (1)GEOMETRY OR (2)LOGIC" 650 PRINT "SUBROUTINE (TYPE IN NUMBER OF CHOICE) AS AN ILLUSTRATION"; 660 INPUT A 665 PLOT 12 670 IF A= 1THEN 730 680 IF A= 2THEN 700 690 PRINT "WE DON'T HAVE THAT ONE. IS IT 1 OR 2";:GOTO 660 700 PRINT "THIS EXAMPLE PRODUCES THE MAXIMUM AND MINIMUM VALUES OF" 710 PRINT "N NUMBERS, ASSUMING NO TWO NUMBERS ARE EQUAL. I'LL LEAVE ONE OF" 720 GOTO 750 730 PRINT "THIS EXAMPLE COMPUTES THE RADIUS OF A CIRCLE, GIVEN TWO POINTS" 740 PRINT "(X1,Y1) AND (X2,Y2) PLUS THE CROWN HEIGHT H. I'LL LEAVE ONE OF" 750 PRINT "THE MAIN PROGRAM STATEMENTS BLANK." 770 FOR J= 100TO 130STEP 10 775 PLOT 15 780 PRINT " "J" <MAIN PROGRAM STATEMENT>" 790 NEXT J 795 PRINT " ";J 800 FOR J= 150TO 170STEP 10 830 PRINT " ";J;" (MAIN PROGRAM STATEMENT)" 832 NEXT J 835 PRINT " (THE NEXT 8 STATEMENTS CONSTITUTE THE SUBROUTINE)" 840 IF A= 1THEN 1080 850 PRINT " 200 B=A(1)" 860 PRINT " 210 C=A(1)" 870 PRINT " 220 FOR I=2 TO N" 880 PRINT " 230 IF A(I)<=B THEN 250" 890 PRINT " 240 B=A(I)" 900 PRINT " 250 IF A(I)>=C THEN 260" 910 PRINT " 255 C=A(I)" 920 PRINT " 260 NEXT I" 930 PRINT " 270" 940 PRINT :PRINT "WHICH LINE NUMBER SHOULD A STATEMENT IN 140 REFER TO"; 950 INPUT U 960 IF U= 140THEN 966 962 IF U= 200THEN 975 963 PRINT "IT'S A LINE NUMBER IN THE SUBROUTINE. WHICH ONE"; 964 GOTO 967 966 PRINT "NO, I MEAN WHAT SUBROUTINE STATEMENT DID YOU REFER TO"; 967 INPUT V 968 PRINT 969 IF V= 200THEN 975 970 PRINT "IT HAS TO BE 200. THIS IS THE FIRST LINE IN THE SUBROUTINE. NOW" 971 GOTO 980 975 PRINT "RIGHT, SINCE THIS ONE IS THE FIRST LINE IN THE SUBROUTINE. NOW" 980 PRINT "FILL IN LINE 270. WHAT IS THE WORD"; 990 INPUT L$ 995 IF L$< > "RETURN"THEN 980 1000 PLOT 12:PRINT :PRINT "THE WORD IS RETURN, AND CONTROL IS RETURNED" 1010 PRINT "TO LINE 150. SEE HOW IT IS DONE?" 1060 GOTO 2000 1080 PRINT " 200 IF H<.000001 THEN 240" 1090 PRINT " 210 IF SQR((X2-X1)^2+(Y2-Y1)^2)<.000001 THEN 260" 1100 PRINT " 220 R=.5*H+.25/H*((X2-X1)^2+(Y2-Y1)^2)" 1110 PRINT " 230 GOTO 270" 1120 PRINT " 240 PRINT ''CROWN HEIGHT CANNOT BE ZERO%'" 1130 PRINT " 250 GOTO 270" 1140 PRINT " 260 PRINT ''YOU HAVE DEFINED ONLY ONE POINT''" 1150 PRINT " 270" 1160 GOTO 940 2000 PRINT :PRINT "SO THE FINAL PROGRAM COULD IN GENERAL BE:":PRINT 2010 PRINT " 100 (MAIN PROGRAM BEGINS)" 2020 PRINT " . ...." 2030 PRINT " . ...." 2040 PRINT " . ...." 2050 PRINT " 140 GOSUB 200" 2060 PRINT " . (MAIN PROGRAM RESUMES)" 2070 PRINT " . ...." 2080 PRINT " 190 END" 2090 PRINT " 200 (SUBROUTINE BEGINS)" 2100 PRINT " . ...." 2110 PRINT " . ...." 2120 PRINT " 270 RETURN" 2130 PRINT :PRINT :PLOT 14:PRINT " PRESS 'RETURN'";:INPUT " ";G 2140 PLOT 12 2150 PRINT :PRINT "I HOPE YOU WILL TRY USING SUBROUTINES IN YOUR OWN PROGRAMS," 2160 PRINT "SO THAT YOU CAN BECOME PROFICIENT AT WRITING THEM." 2170 PRINT :PRINT "THERE IS AN EASY WAY OF ADDING GENERAL INFORMATION OR COMMENTS" 2180 PRINT "TO YOUR PROGRAM. SUCH STATEMENTS ARE NOT EXECUTED BUT" 2190 PRINT "THEY ARE LISTED. HERE IS AN EXAMPLE OF A REMARK STATEMENT:" 2195 PRINT 2200 PRINT " 460 REM THIS PROGRAM COMPUTES PROBABLE HEAT LOSS" 2300 PRINT :PRINT "NOTE THAT A LINE NUMBER IS REQUIRED BUT THE REMARK" 2310 PRINT "IS IGNORED ON EXECUTION. THE PURPOSE OF REM IS" 2320 PRINT "TO ENABLE A PROGRAMMER TO PUT COMMENTS THROUGHOUT A PROGRAM." 2340 PRINT :INPUT " PRESS 'RETURN'";G 2350 PLOT 12 2360 PRINT :PRINT :PRINT :PRINT "THAT CONCLUDES THIS LESSON." 2380 PRINT :PRINT "TRY TO USE THE CONCEPTS PRESENTED IN THESE" 2390 PRINT "LESSONS AS OFTEN AS YOU CAN. THE MORE YOU USE THEM THE MORE" 2400 PRINT "COMFORTABLE YOU WILL BE WITH THEM AND THE MORE ENJOYMENT YOU" 2410 PRINT "CAN RECEIVE FROM YOUR COMPUCOLOR. HAVE FUN!" 2420 PRINT "TO REVIEW TYPE 1 AND PRESS 'RETURN', TO STOP TYPE 2 AND PRESS" 2430 INPUT "'RETURN', TO GO ON TO LESSON 11 JUST PRESS 'RETURN'";J 2440 IF J= 0THEN LOAD "LSN11":RUN 2450 IF J= 1THEN RUN 2460 END