10  REM ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  *********************
11  REM
12  REM         TUT05:  TUTOR SERIES BASIC LANGUAGE PROGRAMMING COURSE,
13  REM                 (PART 5 OF 25)
14  REM         36139 (A810) REV A -- 7/71
15  REM
16  REM ***  CONTRIBUTED PROGRAM  **************************************
17  REM
100  PRINT "I'M BACK AGAIN. GLAD YOU'RE STILL HERE. LET'S SEE........"
110  PRINT 
120  PRINT "THE PROGRAM AS IT NOW STANDS SAYS:"
130  PRINT 
140  PRINT "     11 READ X,Y,Z"
150  PRINT "     12 DATA 3,4,12,8,15,11"
155  PRINT "     20 LET R=SQR(X^2+Y^2+Z^2)"
160  PRINT "     30 PRINT''THE RADIUS VECTOR EQUALS'';R"
170  PRINT "     35 GO TO 9"
180  PRINT "     40 END"
190  PRINT 
200  PRINT "LET'S USE THE 'GO TO' STATEMENT ALREADY IN THE PROGRAM, BUT"
210  PRINT "CHANGE IT TO EITHER 'GO TO 11' OR ELSE TO 'GO TO 12'. ONLY"
220  PRINT "ONE OF THESE IS CORRECT. DO YOU THINK IT IS '11 OR '12'";
230  INPUT V
240  PRINT 
250  IF V=11 THEN 290
260  IF V=12 THEN 290
270  PRINT "YOUR ANSWER HAS TO BE EITHER 11 OR 12. WHICH IS IT";
280  GOTO 230
290  PRINT "'11' IS CORRECT, BECAUSE IT IS 'READ' WHICH WE WANT DONE TWICE."
300  PRINT "'DATA' IS NOT A SEQUENTIAL INSTRUCTION - JUST INFORMATION FOR"
310  PRINT "THE MACHINE. INCIDENTALLY, THE 'DATA' STATEMENT MAY BE PLACED"
320  PRINT "ANYWHERE IN THE PROGRAM PRECEDING 'END'. TO ILLUSTRATE THIS,"
330  PRINT "LET'S MOVE IT FROM LINE 12 TO LINE 38. THE PROGRAM WILL NOW READ:"
340  PRINT 
350  PRINT "     11 READ X,Y,Z"
360  PRINT "     20 LET R=SQR(X^2+Y^2+Z^2)"
370  PRINT "     30 PRINT ''THE RADIUS VECTOR EQUALS'';R"
380  PRINT "     35 GO TO 11"
390  PRINT "     38 DATA 3,4,12,8,15,11"
400  PRINT "     40 END"
410  PRINT 
420  PRINT "WHEN 'RUN' IS TYPED BY THE USER, THE COMPUTER WILL RESPOND:"
430  PRINT 
440  PRINT "    THE RADIUS VECTOR EQUALS 13"
450  PRINT "    THE RADIUS VECTOR EQUALS 20.2485"
460  PRINT "    OUT OF DATA IN 11"
465  PRINT 
470  PRINT "THIS IS FINE, BUT THE COMPUTER DOESN'T SAY WHAT SET OF VALUES"
480  PRINT "IS USED FOR EACH ONE. SO WE CAN ADD A SECOND PRINT STATEMENT:"
490  PRINT 
500  PRINT "     25 PRINT ''X, Y, AND Z VALUES ARE, RESPECTIVELY:'';X,Y,Z"
510  PRINT 
520  PRINT "THE LINE NUMBER SHOULD BE BETWEEN 20 AND 30 SO IT WILL PRECEDE"
530  PRINT "THE 'PRINT' ON LINE 30. SO NOW OUR PROGRAM MIGHT WELL BE:"
540  PRINT 
550  PRINT "     11 READ X,Y,Z"
560  PRINT "     20 LET R=SQR(X^2+Y^2+Z^2)"
570  PRINT "     25 PRINT ''X, Y, AND Z VALUES ARE, RESPECTIVELY:''; X,Y,Z"
575  PRINT "     30 PRINT ''THE RADIUS VECTOR EQUALS'';R"
580  PRINT "     35 GO TO 11"
590  PRINT "     38 DATA 3,4,12,8,15,11"
600  PRINT "   40 END"
610  PRINT 
620  PRINT "AND THE COMPUTER RESPONSE IS:"
625  PRINT 
630  PRINT "    X, Y, AND Z VALUES ARE, RESPECTIVELY: 3, 4, 12"
640  PRINT "    THE RADIUS VECTOR EQUALS 13"
650  PRINT "    X, Y, AND Z VALUES ARE, RESPECTIVELY: 8, 15, 11"
660  PRINT "    THE RADIUS VECTOR EQUALS 20.2485"
662  PRINT "    OUT OF DATA IN 11"
665  PRINT 
670  PRINT "THIS PROVIDES THE NECESSARY INFORMATION. IF THE QUANTITY OF"
680  PRINT "DATA EXCEEDS THE AVAILABLE LINE SPACE IN THE 'DATA' STATEMENT,"
690  PRINT "ADDITIONAL 'DATA' STATEMENTS CAN BE USED, SO LONG AS THEY ARE"
700  PRINT "NUMBERED SUCH THAT THE DATA ARE SEQUENCED PROPERLY."
701  PRINT 
710  PRINT "NOTICE THAT THE INPUT VALUES IN EACH SET MUST HAVE DIFFERENT"
720  PRINT "NAMES (I.E., X, Y, AND Z). WE COULD CALL THEM ALL BY THE SAME"
730  PRINT "NAME BY USING SUBSCRIPTS. THE COMPUTER DOES THIS BY PARENTHESES,"
740  PRINT "SO INSTEAD OF X, Y, AND Z, WE COULD USE, SAY, W(1), W(2), AND"
750  PRINT "W(3) - THEN CHANGE PROGRAM STATEMENTS ACCORDINGLY. THE PRESENT"
760  PRINT "SEQUENCE OF STATEMENTS IS: 11,20,25,30,35,38,40. WHICH IS"
770  PRINT "THE FIRST ONE WE MUST MAKE A CHANGE IN? (NATURALLY, LINE NUMBERS"
780  PRINT "WOULD NOT CHANGE.) THE LINE NUMBER OF THE STATEMENT WOQLD BE";
800  INPUT U
810  PRINT 
820  IF U=11 THEN 850
830  PRINT "LOOK AT THE PROGRAM MORE CAREFULLY. TRY AGAIN. WHICH";
840  GOTO 800
850  PRINT "RIGHT. HOW MANY STATEMENTS WOULD NOT HAVE TO BE CHANGED";
860  INPUT S
870  PRINT 
880  IF S=4 THEN 970
890  PRINT "LOOK REAL CLOSE.  AGAIN......";
900  GOTO 860
970  PRINT "THAT'S THE IDEA. BUT, WITH SUBSCRIPTS THE COMPUTER MUST BE"
980  PRINT "'WARNED' TO RESERVE SUFFICIENT MEMORY SPACE FOR THE VALUES."
990  PRINT "THE TERM FOR THIS IS THE WORD 'DIMENSION'. WHICH OF THE FOLLOWING"
1000  PRINT "INSTRUCTIONS DO YOU THINK MIGHT 'RESERVE STORAGE';"
1010  PRINT 
1020  PRINT "     FOR          (TYPE '1' FOR THIS CHOICE)"
1030  PRINT "     TAPE         (TYPE '2' FOR THIS CHOICE)"
1040  PRINT "     DIM W(3)     (TYPE '3' FOR THIS CHOICE)"
1045  PRINT 
1050  PRINT "YOUR CHOICE IS........";
1060  INPUT Q
1070  PRINT 
1080  IF Q=3 THEN 1150
1090  IF Q<3 THEN 1120
1100  PRINT "NO SUCH CHOICE.  AGAIN......";
1110  GOTO 1060
1120  PRINT "NO, BUT WE'LL TAKE UP THAT INSTRUCTION IN A FUTURE LESSON."
1130  PRINT "TAKE ANOTHER GUESS......";
1140  GOTO 1060
1150  PRINT "RIGHT. 'DIM' STANDS FOR DIMENSION, 'W' IS THE NAME, AND"
1160  PRINT "'(3)' IS THE NUMBER OF LOCATIONS NEEDED. (YOU MAY RESERVE MORE"
1170  PRINT "THAN YOU EXPECT TO USE, IF YOU WISH.) IF WE USE SUBSCRIPTS,"
1180  PRINT "IT IS NOT ADVISABLE TO USE THE 'GO TO' STATEMENT FOR REPEATED"
1190  PRINT "SETS OF DATA. THEREFORE, LET US ASSUME THAT WE WILL HAVE ONLY"
1200  PRINT "ONE SET OF VALUES FOR OUR THREE W'S (WE'LL TAKE A CLOSER LOOK"
1210  PRINT "AT THE USE OF SUBSCRIPTS IN A FUTURE LESSON). SO, WE CAN ELIM-"
1220  PRINT "INATE THE 'GO TO' INSTRUCTION, AND THAT LEAVES US A PROGRAM"
1230  PRINT "WITH THE 'DIM' STATEMENT BUT NO 'GO TO' STATEMENT. HERE'S A"
1240  PRINT "POSSIBILITY:"
1250  PRINT 
1260  PRINT "       8 DIM W(3)"
1270  PRINT "      11 READ W(1), W(2), W(3)"
1280  PRINT "      20 LET R=SQR(W(1)^2+W(2)^2+W(3)^2)"
1290  PRINT "      25 PRINT ''W(1), W(2), AND W(3) AARE;''; W(1),W(2),W(3)"
1300  PRINT "      30 PRINT ''THE RADIUS VECTOR EQUALS'';R"
1310  PRINT "      38 DATA 3,4,12"
1320  PRINT "      40 END"
1330  PRINT 
1340  PRINT "NOTE THAT THE 'DIM' SHOULD BE PUT FIRST. THIS IS SO IT WILL 'SET"
1350  PRINT "UP' THE COMPUTER'S MEMORY FOR THE PROBLEM."
1360  PRINT 
1370  PRINT "WELL, YOU'VE COMPLETED ANOTHER LESSON. BE SURE TO TRY YOUR"
1380  PRINT "PROBLEMS ON THE COMPUTER EVERY CHANCE YOU GET. SEE YOU SOON."
1390  PRINT "CALL 'TUT06' WHEN YOU ARE READY FOR YOUR NEXT LESSON."
1400  END 
