Compucolor.org – Virtual Media

Listing of file='TTRL4.BAS;01' on disk='vmedia/BASIC_language_1-5-sector.ccvf'

100 REM COPYRIGHT (C) BY COMPUCOLOR 1979
105 REM BY KLH 11/13/79 REV 1.1
110 ADR= 256* PEEK (32941)+ PEEK (32940)
120 POKE ADR+ 41,4:POKE ADR+ 42,4
130 LN= PEEK (ADR+ 44):IF LN< > PEEK (ADR+ 45)OR LN= 0THEN 1000
140 ON LNGOTO 1002,1200
1000 POKE ADR+ 44,1:POKE ADR+ 45,1
1002 PLOT 29,6,2,12,15,27,11,3,10,9:PRINT " MORE STATEMENTS, FEATURES, AND PROGRAMMING 
1004 PRINT :PRINT TAB( 5)"UP TO THIS POINT, YOUR PROGRAMS HAVE BEEN SMALL, SIMPLE
1006 PRINT "PROGRAMS THAT USE ONLY PRINT STATEMENTS AND VARIABLES. THEY ALSO
1008 PLOT 28:PRINT "RUN CONSECUTIVELY FROM THE FIRST LINE TO THE LAST. TUTORIAL FOUR
1010 PRINT " WILL DEAL WITH VARIABLES THAT ARE ASSIGNED BY INPUT STATEMENTS
1012 PRINT "   AND BY READ-DATA STATEMENTS. THE IF-THEN, IF-GOTO AND GOTO
1014 PRINT "   STATEMENTS WILL ALSO BE EXPLAINED. THESE STATEMENTS ALLOW A
1016 PRINT "PROGRAM TO PERFORM VARIOUS TASKS AND GO TO VARIOUS LINES INSTEAD
1018 PLOT 28:PRINT " OF GOING CONSECUTIVELY. LOGICAL AND RELATIONAL OPERATORS THAT
1020 PRINT "  MAKE THE COMPUTER DECIDE WHAT TO DO WILL BE DISCUSSED ALSO.
1022 GOSUB 10030
1024 PLOT 3,3,9:PRINT "AN INPUT IS A STATEMENT THAT ASSIGNS TO A VARIABLE A VALUE
1026 PRINT TAB( 6)"ENTERED ,OR TYPED, FROM THE KEYBOARD. THE FORM IS:
1028 PRINT "		   INPUT [VARIABLE(S)]
1030 PRINT "EACH VARIABLE MUST BE SEPARATED BY A COMMA. AN EXAMPLE WOULD BE:
1032 PLOT 28:PRINT "100 INPUT A,B,C$
1034 PRINT "THE COMPUTER WILL WAIT AT THE INPUT FOR THE VALUES OF A, B, AND
1036 PRINT "C$ TO BE ENTERED. EACH ENTRY MUST ALSO BE SEPARATED BY A COMMA.
1038 PRINT "WHEN A INPUT IS FOUND, A ? IS PRINTED TO LET THE USER KNOW THAT
1040 PRINT "AN INPUT IS NEEDED. THE PROGRAM WILL NOT CONTINUE UNTIL ALL THE
1042 PRINT "VARIABLES HAVE BEEN ASSIGNED A VALUE. NOTE: A NUMERIC INPUT WILL
1044 PLOT 28:PRINT ,"NOT ACCEPT ANYTHING THAT IS NOT A NUMBER.
1046 GOSUB 10030
1048 PLOT 3,4,10:PRINT "IT IS OFTEN HELPFUL TO INCLUDE A PROMPT WITH AN INPUT. A
1050 PRINT " PROMPT IS JUST A PRINTED STATEMENT THAT TELLS THE USER WHAT IS
1052 PRINT TAB( 17)"NEEDED BY THE INPUT STATEMENT.
1054 PRINT "100 PRINT "CHR$ (34)"THE NUMBER IS"CHR$ (34)";:INPUT A
1056 PRINT "200 INPUT "CHR$ (34)"THE NUMBER IS?"CHR$ (34)";A
1058 PRINT " NOTICE THAT THE PRINTED STATEMENT IN LINE 200 CONTAINS THE ?.
1060 PRINT " AN INPUT CONTAINING A QUOTED STRING DOES NOT PRINT A QUESTION
1062 PRINT " MARK. IF RETURN IS HIT WITHOUT GIVING THE INPUT A VALUE, ZERO
1064 PRINT "   IS ASSUMED FOR ALL NUMERIC VARIABLES AND "CHR$ (34)""CHR$ (34)" (NULL) FOR ALL
1066 PRINT TAB( 23)"STRING VARIABLES.
1068 GOSUB 10030
1070 PLOT 3,4,6:PRINT "READ-DATA ARE TWO STATEMENTS USED WITH ONE ANOTHER. DATA
1072 PRINT "STATEMENTS STORE NUMERIC AND STRING VALUES THAT ARE ASSIGNED TO
1074 PRINT "   VARIABLES BY READ STATEMENTS. THEY ARE USED IN THE FORM:
1076 PRINT TAB( 22)"DATA [VALUE LIST]":PRINT TAB( 20)"READ [VARIABLE LIST]"
1078 PRINT " READ AND DATA STATEMENTS CAN BE PLACED ANYWHERE IN A PROGRAM.
1080 PRINT " STRINGS DO NOT NEED TO BE ENCLOSED IN QUOTES, BUT IT IS OFTEN
1082 PRINT TAB( 6)"NECESSARY IF YOU WISH TO PLACE A SPACE BETWEEN WORDS.
1084 PRINT TAB( 4)"ALL DATA MUST BE IN THE PROPER ORDER BEFORE ASSIGNING IT
1086 PRINT ,,,"TO THE VARIABLES.
1088 PRINT TAB( 26)"FOR EXAMPLE:
1090 PRINT "100 READ A,B,C$: PRINT A,B,C$
1092 PRINT "200 DATA 17,-9.5,"CHR$ (34)"TUTORIAL"CHR$ (34)""
1094 PRINT TAB( 27)"WILL PRINT
1096 PRINT " 17	-9.5	TUTORIAL
1098 PRINT "IF THERE IS NO DATA FOR A READ STATEMENT TO STORE, YOU GET THIS:
1100 PLOT 28:PRINT "OD ERROR IN [LINE NUMBER]":PRINT "READY"
1102 PRINT " THIS TELLS YOU THE COMPUTER RAN OUT OF DATA IN [LINE NUMBER].
1104 GOSUB 10030
1106 PRINT " DATA IN A DATA STATEMENT CAN BE RE-USED. THIS IS DONE WITH THE
1108 PRINT TAB( 5)"RESTORE STATEMENT. A RESTORE STATEMENT IS IN THE FORM:
1110 PRINT TAB( 21)"RESTORE [LINE NUMBER]
1112 PRINT "   A LINE NUMBER IS DEFINED BY THE RESTORE STATEMENT. ALL DATA
1114 PRINT " STATEMENTS FROM THAT LINE TO THE END OF THE PROGRAM WILL BE
1116 PRINT TAB( 7)"RESTORED SO THEY CAN BE USED BY THE READ STATEMENT.
1118 PRINT :PRINT " NOW IT'S TIME FOR YOU TO TRY SOME MORE PROGRAMMING. TRY USING
1120 PRINT "    THE INPUT AND READ-DATA STATEMENTS, ALONG WITH THE OTHER
1122 PRINT "    STATEMENTS YOU HAVE LEARNED SO FAR. WHEN YOU'RE READY,
1124 PRINT TAB( 18)"HIT AUTO AND WE'LL GO ON.
1126 POKE ADR+ 44,2:POKE ADR+ 45,2:GOTO 1456
1200 PLOT 6,2,12,3,0,8
1202 PRINT "   A PROGRAM DOES NOT HAVE TO RUN SEQUENTIALLY, FROM FIRST TO
1204 PRINT "  LAST LINE. A GOTO STATEMENT CAN BE USED TO GO TO ANY DESIRED
1206 PRINT TAB( 5)"LINE IN A PROGRAM. THE GOTO STATEMENT IS IN THE FORM:
1208 PRINT TAB( 23)"GOTO [LINE NUMBER]
1210 PRINT "WHEN A GOTO STATEMENT IS FOUND, THE PROGRAM WILL CONTINUE AT THE
1212 PLOT 28:PRINT " LINE NUMBER SPECIFIED. GOTO STATEMENTS SHOULD BE PLACED AT THE
1214 PRINT "  END OF MULTIPLE LINE STATEMENTS, AS ANY STATEMENTS AFTER THEM
1216 PRINT "WILL NOT BE EXECUTED. AN EXAMPLE OF THE GOTO STATEMENT WOULD BE:
1220 PRINT "100 A= 5:GOTO 300
1222 PRINT "200 PRINT A* A
1224 PRINT "300 PRINT A;"CHR$ (34)" (THIS IS LINE 300)"CHR$ (34)""
1226 PRINT TAB( 21)"THE PROGRAM WOULD PRINT
1228 PRINT " 5 (THIS IS LINE 300)
1230 GOSUB 10030
1232 PLOT 3,0,8:PRINT "HOWEVER, THE GOTO STATEMENT ISN'T VERY USEFUL BY ITSELF. THIS IS
1234 PLOT 28:PRINT " WHY RELATIONAL OPERATORS ARE IMPORTANT. WITH THEM THE COMPUTER
1236 PRINT TAB( 6)"CAN BE GIVEN A CHOICE OF WHAT TO DO AND WHERE TO GO.
1238 PRINT "    MATH SYMBOL    BASIC SYMBOL  EXAMPLE","MEANING
1240 PRINT ,"=",,"=","   A=B","     A IS EQUAL TO B
1242 PRINT :PRINT ,"<",,"<","   A<B","     A IS LESS THAN B":PRINT
1244 PRINT ,"<
e",,"<=, =<","   A<=B","     A IS LESS THAN":PRINT ,,,,,"       OR EQUAL TO B
1246 PRINT ,">",,">","   A>B","     A IS GREATER":PRINT ,,,,,"       THAN B
1248 PRINT ,">
e",,"=>, >=","   A=>B","     A IS GREATER THAN":PRINT ,,,,,"       OR EQUAL TO B
1250 PRINT ,"= WITH SLASH","<>, ><","   A<>B","     A IS NOT EQUAL TO B
1252 PLOT 28:GOSUB 10030
1254 PLOT 3,1,3:PRINT "STRING VARIABLES ARE ALSO COMPARED IN MUCH THE SAME WAY. EACH
1256 PRINT "CHARACTER HAS A NUMERIC VALUE, CALLED AN ASCII VALUE. THESE ARE
1258 PRINT "LISTED IN YOUR MANUAL. IN A RELATIONAL OPERATION THE TWO STRINGS
1260 PLOT 28:PRINT "  ARE COMPARED ONE CHARACTER AT A TIME UNTIL TWO CHARACTERS ARE
1262 PRINT "   UNEQUAL. THE STRING CONTAINING THE CHARACTER WITH THE LOWER
1264 PRINT TAB( 11)"ASCII VALUE IS LESS THAN THE OTHER STRING.
1266 PRINT ,"OPERATOR","EXAMPLE",,"MEANING
1268 PRINT ," =",," A$=B$","   THE STRINGS A$ AND B$ ARE":PRINT ,,,,"     EQUAL
1270 PRINT ," <",," A$<B$","   THE STRING A$ PRECEDES B$
1272 PRINT :PRINT ," <=, =<",," A$<=B$","   THE STRING A$ PRECEDES OR":PRINT ,,,,"    IS EQUAL TO B$
1274 PRINT ," >",," A$>B$","   THE STRING A$ FOLLOWS B$
1276 PRINT :PRINT ," =>, >=",," A$=>B$","   THE STRING A$ FOLLOWS OR":PRINT ,,,,"    IS EQUAL TO B$
1278 PRINT ," <>",," A$<>B$","   THE STRINGS A$ AND B$ ARE":PRINT ,,,,"    NOT EQUAL
1280 PRINT " SO, IF A$="CHR$ (34)"AB&"CHR$ (34)" AND B$="CHR$ (34)"ABD"CHR$ (34)", A$<B$ BECAUSE & IS LESS THAN D IN
1282 PLOT 28:PRINT TAB( 5)"ASCII VALUE. THIS MAKES ALPHABETIZING ITEMS VERY EASY.
1284 PRINT "  WHEN THE CONDITION OF A RELATIONAL OPERATOR IS TRUE, IT HAS A
1286 PRINT TAB( 13)"VALUE OF -1: IF FALSE, ITS VALUE IS 0.
1288 GOSUB 10030
1290 PLOT 3,2,8:PRINT "ANOTHER KIND OF OPERATOR IS THE LOGICAL OPERATOR. THESE THREE
1292 PRINT " OPERATORS ALSO PERFORM COMPARISONS. THEY ARE AND, OR, AND NOT.
1294 PRINT ,,"THEIR COMPARISONS WORK LIKE THIS:
1296 PRINT ,"OPERATOR      EXAMPLE",,"      MEANING
1298 PRINT ,"   AND","   A=5 AND B<>7",,"A MUST EQUAL 5 AND":PRINT ,,,,,"  B MUST NOT EQUAL 7
1300 PRINT ,"   OR","   A=5 OR B<>7",,"A MUST EQUAL 5 OR":PRINT ,,,,,"  B MUST NOT EQUAL 7
1302 PRINT ,"   NOT","   NOT (A=5)",,"TAKES THE OPPOSITE OF":PRINT ,,,,,"  A [-(A)] AND ADDS -1
1304 PRINT :PRINT "   THE VALUE OF THE COMPARISON IS THE SAME AS FOR RELATIONAL
1306 PRINT TAB( 12)"OPERATORS: -1 FOR TRUE AND 0 FOR FALSE.
1308 PRINT :PRINT TAB( 4)"NOW YOU KNOW THE OPERATORS: LET'S LEARN HOW TO USE THEM.
1310 GOSUB 10030
1312 PLOT 3,3,7:PRINT "SUPPOSE YOU WANT A CERTAIN PART OF A PROGRAM TO BE RUN ONLY
1314 PRINT "  WHEN THE VARIABLE X IS GREATER THAN 5. HOW WOULD YOU TELL THE
1316 PRINT "    COMPUTER TO DO THIS? THAT IS WHAT THE IF-THEN AND IF-GOTO
1318 PRINT "   STATEMENT IS USED FOR. THE STATEMENTS ARE USED IN THE FORM:
1320 PRINT :PRINT TAB( 14)"IF [EXPRESSION] THEN <[LINE NUMBER]

1322 PRINT TAB( 37)"[STATEMENT]
1324 PRINT :PRINT TAB( 14)"IF [EXPRESSION] GOTO [LINE NUMBER]
1326 PRINT "  EXPRESSION IS AN ARITHMETIC EXPRESSION OR OPERATOR COMPARING
1328 PRINT TAB( 4)"TWO OR MORE EXPRESSIONS. THE IF-THEN STATEMENT CAN EITHER
1330 PRINT "  PERFORM A STATEMENT OR GO TO A LINE NUMBER: THE IF-GOTO WILL
1332 PRINT "   ONLY GO TO A LINE NUMBER. BOTH OF THESE STATEMENTS WILL BE
1334 PRINT "     EXECUTED IF THE EXPRESSION IS TRUE. IF IT IS FALSE, THE
1336 PRINT "  PROGRAM WILL CONTINUE WITH THE NEXT LINE - IT WILL NOT DO ANY
1338 PRINT TAB( 6)"STATEMENTS ON THE LINE AFTER THE IF-THEN OR IF-GOTO.
1340 GOSUB 10030
1342 PLOT 3,2,8:PRINT "NOW YOU CAN TELL THE COMPUTER TO SKIP THAT SECTION WHEN X IS
1344 PRINT TAB( 21)"NOT GREATER THAN FIVE:
1346 PRINT "100 IF X<= 5 THEN 300
1348 PRINT "200 PRINT "CHR$ (34)"X IS GREATER THAN FIVE"CHR$ (34)"
1350 PRINT "300 PRINT X
1352 PRINT "  WHEN X IS LESS THAN OR EQUAL TO FIVE, THE EXPRESSION IN LINE
1354 PRINT "  100 IS TRUE, SO THE IF-THEN IS EXECUTED. IF X IS GREATER THAN
1356 PRINT "FIVE THE EXPRESSION IS FALSE, AND THE PROGRAM GOES ON TO LINE
1358 PRINT "   200 (AND SO THE SPECIAL PORTION IS RUN ONLY WHEN DESIRED).
1360 PRINT TAB( 12)"THE IF-GOTO WOULD WORK IN THE SAME WAY.
1362 PRINT "  LINE 100 CAN BE CHANGED TO TELL THAT X IS LESS THAN OR EQUAL
1364 PRINT "  TO FIVE BY CHANGING THEN 300 TO THEN PRINT "CHR$ (34)"X IS NOT GREATER
1366 PRINT "THAN FIVE"CHR$ (34)":GOTO 300. THIS IS AN EXAMPLE OF THE SECOND TYPE OF
1368 PRINT TAB( 7)"IF-THEN STATEMENT, AND THE USE OF A GOTO STATEMENT.
1370 GOSUB 10030
1442 PRINT :PRINT TAB( 4)"THIS CONCLUDES TUTORIAL FOUR. DO YOU WISH TO REVIEW THIS
1444 INPUT " LESSON (YES/NO)? ";ZZ$:GOSUB 10000:IF LEFT$ (ZZ$,1)= "Y"THEN 1002:REM 
1446 IF LEFT$ (ZZ$,1)< > "N"THEN PLOT 28,11:GOTO 1444
1448 PRINT :PRINT TAB( 5)"EXPERIMENT SOME WITH WHAT YOU HAVE LEARNED IN THIS LESSON.
1450 PRINT "WHEN YOU ARE READY TO GO TO TUTORIAL FIVE HIT THE AUTO KEY.
1452 POKE ADR+ 41,5:POKE ADR+ 42,5:POKE ADR+ 44,0:POKE ADR+ 45,0:PLOT 27,11
1454 PRINT :PRINT "HAVE FUN!"
1456 POKE 33434,0:POKE 33435,0:POKE 33436,0:END
10000 IF ZZ$= "M"THEN LOAD "MENU":RUN 1000
10010 IF PEEK (33278)< > 1THEN RETURN
10020 PLOT 1
10030 PRINT :INPUT "		    HIT RETURN TO CONTINUE: ";ZZ$:PLOT 12:GOTO 10000