Compucolor.org – Virtual Media

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