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