10  REM ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  *********************
11  REM
12  REM         TUT14:  TUTOR SERIES BASIC LANGUAGE PROGRAMMING COURSE,
13  REM                 (PART 14 OF 25)
14  REM         36139 (A810) REV A -- 7/71
15  REM
16  REM ***  CONTRIBUTED PROGRAM  **************************************
17  REM
100  PRINT "GLAD TO SEE YOU AGAIN, I HOPE YOU HAVE BEEN PRACTICING"
110  PRINT "THE INSTRUCTIONS AS YOU LEARN THEM, LEARNING HOW TO PROGRAM"
120  PRINT "WELL IS LIKE MASTERING A FOREIGN LANGUAGE, ONLY REPEATED"
130  PRINT "EXERCISE CAN MAKE YOU PROFICIENT."
140  LET W=0
150  PRINT 
160  PRINT "BEFORE WE UNDERTAKE ANY NEW WORK, LETS FIRST REVIEW SOME OF THE"
170  PRINT "BASIC STATEMENTS YOU HAVE PREVIOUSLY BEEN INTRODUCED TO."
180  PRINT 
190  PRINT "AN ARITHMETIC FUNCTION MAY BE USED TO AVOID WRITING AN"
200  PRINT "IDENTICAL STATEMENT REPETITIOUSLY, FOR EXAMPLE, YOUR"
210  PRINT "PROGRAM MAY REQUIRE THE FOLLOWING STATEMENTS;"
220  PRINT 
230  PRINT "   120 LET U=(C1*X^2 + C2*X + C3) * SIN(X)"
240  PRINT "        ."
250  PRINT "        ."
260  PRINT "   280 LET V=(C1*Y^2 + C2*Y + C3) +2"
270  PRINT "        ."
280  PRINT "        ."
290  PRINT "   370 LET W=C1*Z^2 + C2*Z + C3"
300  PRINT "        ."
310  PRINT 
320  PRINT "AN EASIER WAY TO DO THIS WOULD BE TO USE THE FUNCTION STATEMENT."
330  PRINT "WHICH OF THE FOLLOWING STATEMENTS WOULD BE INVOLVED (TYPE"
340  PRINT "THE NUMBER OF THE STATEMENT)"
350  PRINT 
360  PRINT "   (1) GO TO  (2) REM  (3) DEF  (4) IF...THEN..."
370  PRINT 
380  INPUT Z
390  PRINT 
400  IF Z=3 THEN 460
410  LET W=W+1
420  PRINT "YOU'RE PUTTING ME ON. A FUNCTION MUST BE PRECEDED BY THE"
430  PRINT "SYMBOL 'DEF', AN ABBREVIATION OF THE WORD 'DEFINE'."
440  PRINT 
450  GOTO 470
460  PRINT "RIGHT.  ";
470  PRINT "  YOU WOULD WRITE, FOR EXAMPLE, THE FOLLOWING ;"
480  PRINT 
490  PRINT "     90 DEF FNR(Q)=C1*Q^2 + C2*Q + C3"
500  PRINT "       ."
510  PRINT "       ."
520  PRINT "    120 LET U=FNR(X) * SIN(X)"
530  PRINT "       ."
540  PRINT "       ."
550  PRINT "    280 LET V=FNR(Y)+2"
560  PRINT "       ."
570  PRINT "       ."
580  PRINT "    370 LET W=FNR(Z)"
590  PRINT 
600  PRINT "REMEMBER - A FUNCTION, LIKE THE PARENTS OF A TEENAGER, ALWAYS"
610  PRINT "REQUIRES AN ARGUMENT, IN THE DEFINING STATEMENT (90) THE"
620  PRINT "ARGUMENT IS Q, WHEN USED IN THE BODY OF THE PROGRAM, THE"
630  PRINT "CALLED FOR ARGUMENT REPLACES THE 'DUMMY' ARGUMENT Q."
640  PRINT 
650  PRINT "FOR EG, IF C1=1, C2=3, AND C3=6, WHAT IS THE VALUE OF FNR(3) ";
660  INPUT Z
670  PRINT 
680  IF Z=24 THEN 720
690  LET W=W+1
700  PRINT "NO, WOULD YOU BELIEVE 24?  (1*9 + 3*3 + 6)"
710  GOTO 730
720  PRINT "VERY GOOD. "
730  PRINT 
740  PRINT 
750  PRINT "DID YOU UNDERSTAND THE DIFFERENCE BETWEEN A FUNCTION AND A"
760  PRINT "SUBROUTINE? A SUBROUTINE IS USED TO AVOID WRITING IDENTICAL"
770  PRINT "GROUPS OF INSTRUCTIONS, WHEREAS A FUNCTION TREATS ONLY A SINGLE"
780  PRINT "LINE,"
790  PRINT 
800  PRINT "WHICH TWO OF THE FOLLOWING SYMBOLS DO YOU ASSOCIATE WITH THE"
810  PRINT "USE OF A SUBROUTINE? (TYPE THE 2 NUMBERS SEPARATED BY A COMMA)"
820  PRINT 
830  PRINT "   (1) GO TO  (2) RETURN  (3) NEXT  (4) GOSUB  (5) END  ";
840  INPUT Z1,Z2
850  PRINT 
860  LET Z=Z1*Z2
870  IF Z=8 THEN 940
880  LET W=W+1
890  IF W=1 THEN 920
900  PRINT "X?)'ZG';=80>:?<  (THE COMPUTER EQUIVALENT OF TSK, TSK)"
910  GOTO 950
920  PRINT "SINCE THIS IS YOUR FIRST MISTAKE, I WON'T REPRIMAND YOU."
930  GOTO 950
940  PRINT "RIGHT.  "
950  PRINT 
960  PRINT "GOSUB XXX IS AN ABBREVIATED WAY OF INDICATING 'GO TO THE"
970  PRINT "SUBROUTINE WHICH STARTS AT LINE NUMBER XXX'. THE RETURN"
980  PRINT "STATEMENT, WHICH SHOULD BE THE LAST STATEMENT IN THE SUBROUTINE."
990  PRINT "IS A SIGNAL THAT WHEN THE SUBROUTINE HAS BEEN EXECUTED, CONTROL"
1000  PRINT "IS RETURNED TO THE PROGRAM STATEMENT FOLLOWING 'GOSUB XXX'"
1010  PRINT 
1020  PRINT 
1030  PRINT "THE FUNCTION AND SUBROUTINE CALLS ARE VERY POWERFUL INSTRUCTIONS"
1040  PRINT "AND SHOULD BE MASTERED."
1050  IF W<2 THEN 1080
1060  PRINT "SINCE YOU MISSED ";W;"OF THE ABOVE QUESTIONS ABOVE, PERHAPS"
1070  PRINT "YOU SHOULD REVIEW 'TUT09' WHEN YOU ARE THROUGH HERE."
1080  PRINT 
1090  PRINT 
1100  PRINT "YOU PROBABLY NOTICED THAT BLANKS WERE INSERTED BETWEEN SOME"
1110  PRINT "OF THE WORDS USED IN THE STATEMENTS ABOVE, TO IMPROVE"
1120  PRINT "LEGIBILITY, BLANKS MAY BE USED FREELY IN ALL STATEMENTS, WITHOUT"
1130  PRINT "AFFECTING THE INTENT OF THE STATEMENT IN ANY WAY, WITH BUT ONE"
1140  PRINT "EXCEPTION, WHICH ONE OF THE FOLLOWING EXAMPLES INDICATE WHAT"
1150  PRINT "THIS EXCEPTION MIGHT BE?"
1151  PRINT 
1160  PRINT "   (1) NEXTN             NEXT N"
1170  PRINT "   (2) DEFFNG(Y)=...     DEF FN G(Y) = ..."
1180  PRINT "   (3) GOTO200           GO TO 200"
1190  PRINT "   (4) PRINT''RATE='';X  PRINT''RATE =  '';X  "
1200  PRINT "   (5) INPUTX,Y,Z        INPUT X, Y, Z"
1210  PRINT "   (6) LETX=2*Y+Z        LET X = 2*Y + Z"
1220  PRINT "   (7) FORI=1TOK         FOR I = 1 TO K"
1230  PRINT "   (8) END               E N D"
1240  PRINT "   (9) GOSUB1245         GO SUB 1245"
1250  PRINT 
1260  PRINT "TYPE IN THE NUMBER OF YOUR CHOICE,  ";
1270  INPUT Z
1280  PRINT 
1290  PRINT "THIS WAS PRETTY TRICKY. ";
1300  IF Z=4 THEN 1330
1310  PRINT "NUMBER FOUR WAS THE CORRECT ANSWER."
1320  GOTO 1340
1330  PRINT "I'M GLAD YOU SPOTTED IT."
1340  PRINT 
1350  PRINT "IN PRINTING OUT ALPHABETIC MESSAGES, A BLANK IS TREATED AS"
1360  PRINT "ANY OTHER CHARACTER, THIS ALLOWS YOU TO SPACE THE MESSAGE"
1370  PRINT "AS YOU LIKE. HOWEVER, YOU CAN SEE THAT BLANKS CAN BE USED"
1380  PRINT "AT WILL IN ALL OTHER STATEMENTS WHEN WRITING YOUR PROGRAM."
1390  PRINT 
1420  PRINT 
1430  PRINT "REMEMBER TO USE THE 'REM', OR REMARK, TO MAKE FOOTNOTES IN"
1440  PRINT "YOUR PROGRAM."
1450  PRINT 
1460  PRINT "THAT'S ALL FOR NOW, CALL IN THE NEXT PORTION OF THIS SEQUEL"
1470  PRINT "ENTITLED 'TUT15', FOR A NEW EXCITING ADVENTURE."
1480  END 
