10 REM *** HP TIME-SHARED BASIC PROGRAM LIBRARY ********************* 11 REM 12 REM TUT08: TUTOR SERIES BASIC LANGUAGE PROGRAMMING COURSE, 13 REM (PART 8 OF 25) 14 REM 36139 (A810) REV A -- 7/71 15 REM 16 REM *** CONTRIBUTED PROGRAM ************************************** 17 REM 100 PRINT "O.K., WE'LL TRY A PROBLEM: REQUIRED, COMPUTE SUCCESSIVE VALUES" 110 PRINT "OF U*(U+1)^2 FOR UNIFORMLY INCREASING 'U' VALUES, BUT LIMITING" 120 PRINT "U*(U+1)^2 TO 10 OR LESS. THE COMPUTER WILL DECIDE HOW MANY 'U'" 130 PRINT "VALUES IT WILL USE. IT WILL KEEP INCREASING'U' BY 'DELTA U'" 140 PRINT "UNTIL U*(U+1)^2 REACHES 10, THEN STOP. THE PROGRAM SHOWN" 145 PRINT "BELOW WILL ACCOMPLISH THIS." 150 PRINT 160 PRINT " 100 LET U=0" 170 PRINT " 110 PRINT U,U*(U+1)^2" 180 PRINT " 120 LET U=U+1" 190 PRINT " 130 IF U*(U+1)^2<=10 THEN 110" 200 PRINT " 140 END" 210 PRINT 220 PRINT "STUDY THE PROGRAM AND SEE IF YOU CAN TELL ME WHAT LINE NUMBER IS" 230 PRINT "THE BEGINNING OF THE LOOP. WHICH WOULD YOU SAY"; 240 INPUT L 250 PRINT 260 IF L=110 THEN 290 270 PRINT "TRY ANOTHER NUMBER. WHICH ONE IS IT"; 280 GOTO 240 290 PRINT "FINE. AND WHICH IS THE LAST LINE IN THE LOOP"; 300 INPUT T 320 IF T=130 THEN 350 330 PRINT "STUDY THE PROGRAM AND TRY AGAIN. WHICH ONE"; 340 GOTO 300 350 PRINT "THAT'S THE ONE. NOTICE WE USED A 'DELTA U' OF UNITY (LINE 120):" 360 PRINT "WE COULD HAVE USED OTHER INCREMENTAL VALUES, WHICH WOULD HAVE" 370 PRINT "CHANGED THE NUMBER OF TIMES THROUGH THE LOOP. HERE ARE THREE" 380 PRINT "OUTPUTS BASED ON DIFFERENT VALUES OF 'DELTA U' SHOWN IN LINE 120:" 390 PRINT 400 PRINT "FOR '120 LET U=U+1' WE GET: FOR '120 LET U=U+.2' WE GET:" 410 PRINT 415 PRINT " U U*(U+1)^2 U U*(U+1)^2" 416 PRINT 420 PRINT " 0 0 0 0" 430 PRINT " 1 4 .2 .288" 440 PRINT " .4 .784" 450 PRINT "FOR '120 LET U=U+.5' WE GET: .6 1.536" 460 PRINT " .8 2.592" 470 PRINT " 0 0 1 4" 480 PRINT " .5 1.125 1.2 5.808" 490 PRINT " 1 4 1.4 8.064" 500 PRINT " 1.5 9.375" 510 PRINT 520 PRINT "IN EACH CASE, 'U' IS THE LEFT-HAND COLUMN AND 'U*(U+1)^2' IS THE " 530 PRINT "RIGHT-HAND COLUMN. NOTICE - THE LARGEST NUMBER IN THE RIGHT-HAND" 540 PRINT "COLUMN IS NEVER OVER 10. THE COMPUTER HAS SEEN THAT ONE MORE 'U'" 550 PRINT "WOULD BE TOO MUCH, AND HAS TAKEN ACTION TO HALT THE LOOP." 560 PRINT 570 PRINT "ANOTHER WAY TO 'LOOP' USES AN INSTRUCTION REQUIRING A PREDETERMINED" 580 PRINT "NUMBER OF LOOPS - I.E., THE COMPUTER IS INSTRUCTED EXACTLY HOW" 590 PRINT "MANY ITERATIONS IT IS TO MAKE. HERE IS AN EXAMPLE:" 600 PRINT 610 PRINT " 160 FOR J=2 TO 2.5 STEP .1" 620 PRINT 630 PRINT "HOW WOULD YOU ANSWER THIS? TRUE OR FALSE: 'J' VALUES CONTROL" 640 PRINT "THE NUMBER OF ITERATIONS. (USE: 1=TRUE, 0=FALSE) ANSWER.."; 650 INPUT J 660 PRINT 670 IF J=1 THEN 700 680 PRINT "YOU SHOULD HAVE SAID 'TRUE'. YOU SEE, 'J' IS THE COUNTER, AND" 690 GOTO 710 700 PRINT "YOU'RE RIGHT. THE 'J' VALUE WILL BE USED TO COUNT THE LOOP." 710 PRINT "ITS STARTING VALUE WILL BE '2'. ITS MAXIMUM VALUE WILL BE.."; 720 INPUT J1 730 PRINT 740 IF J1=2.5 THEN 770 750 PRINT "NO - BUT ITS MAXIMUM VALUE IS SHOWN IN THE STATEMENT. IT IS.."; 760 GOTO 720 770 PRINT "GOOD. BUT IT MAY END UP SOMEWHAT LESS, BECAUSE OF THE SIZE OF" 780 PRINT "THE INCREMENT (CHANGE IN 'J'). WHAT INCREMENT IS SHOWN...."; 790 INPUT I 800 PRINT 810 IF I=.1 THEN 840 820 PRINT "THAT'S NOT IT, BUT THE STATEMENT TELLS. HOW MUCH IS IT...."; 830 GOTO 790 840 PRINT "YOU OBVIOUSLY UNDERSTAND THE STATEMENT, AND PROBABLY REALIZE" 850 PRINT "THAT '160' IS THE STATEMENT (OR LINE) NUMBER. 'FOR' ALERTS THE" 860 PRINT "'TIME SHARING' MACHINE, 'TO' SAYS 'MAXIMUM VALUE'," 870 PRINT "AND 'STEP' MEANS 'INCREMENT'." 880 PRINT 890 PRINT "NOW WE HAVE ONE MORE OBSTACLE, THE COMPUTER KNOWS WHERE THE" 900 PRINT "LOOP STARTS (AT LINE 160) AND EVERYTHING ELSE ABOUT IT EXCEPT" 910 PRINT "WHERE IT STOPS - I.E., WHAT THE LAST INSTRUCTION IN THE LOOP " 920 PRINT "IS. DO YOU THINK (1) 'LAST LINE' OR (2) 'NEXT J' OR (3) 'NEW J'" 930 PRINT "IS THE CORRECT LAST INSTRUCTION (TYPE CHOICE NUMBER ONLY)...."; 940 INPUT N 950 PRINT 960 IF N=2 THEN 990 970 PRINT "WELL, MAYBE THAT WAS TOO TRICKY. IT SHOULD BE 'NEXT J', AND WE" 980 GOTO 1000 990 PRINT "THAT'S THE ONE, ALL RIGHT, THE WORD 'NEXT' IS THE CLUE, SO WE" 1000 PRINT "PUT A LINE NUMBER ON IT WHICH SEQUENCES IT AS THE LAST LINE OF" 1010 PRINT "THE LOOP. THE COMPUTER THAN 'BACKTRACKS' TO THE BEGINNING OF" 1020 PRINT "THE LOOP (LINE 160 HERE) AND 'LOOPS' UNTIL 'J' SAYS TO STOP." 1030 PRINT 1040 PRINT "FOR THE PREVIOUS EXAMPLE, SUPPOSE WE WANTED 4 VALUES, REGARDLESS" 1050 PRINT "OF THE FUNCTION'S SIZE. LET'S COUNT WITH 'C'. WE'LL WRITE:" 1060 PRINT 1070 PRINT " 100 LET U=0" 1080 PRINT " 110 FOR C=1 TO 4" 1090 PRINT " 120 PRINT U,U*(U+1)^2" 1100 PRINT " 130 LET U =U+.2" 1110 PRINT " 140 NEXT C" 1120 PRINT " 150 END" 1130 PRINT 1135 PRINT "WHEN 'STEP' IS OMITTED (LINE 110) THE INCREASE (IN 'C') IS 1." 1140 PRINT "SO NOW WE HAVE LOOKED AT TWO WAYS TO ITERATE - THE 'IF' LOOP" 1150 PRINT "AND THE 'FOR' LOOP. WE'LL BE SEEING MORE OF THEM IN THE FUTURE." 1170 PRINT "BEFORE WE BRING THIS LESSON TO A CLOSE, I'D LIKE TO INTRODUCE" 1180 PRINT "YOU TO ONE OF THE USEFUL FEATURES OF YOUR TELETYPE TERMINAL." 1190 PRINT "NOTICE THE PAPER TAPE UNIT TO THE LEFT OF YOUR TELETYPE, THIS" 1200 PRINT "PERMITS YOU TO EITHER PUNCH OR READ PAPER TAPE IN CONJUNCTION" 1210 PRINT "WITH YOUR PROGRAM. YOU 'READ IN' PAPER TAPE BY INSERTING IT IN" 1220 PRINT "THE READER (FAR LEFT) ADN TYPING 'TAPE' ON THE KEYBOARD. I'LL" 1230 PRINT "GENERATE A LINEFEED AFTER YOU TYPE RETURN. YOU PUSH THE LITTLE" 1240 PRINT "LEVER FORWARD AND THE TAPE BEGINS TO BE READ." 1260 PRINT "WE'LL WORK IT OUT SOME MORE IN A FUTURE LESSION." 1265 PRINT 1270 PRINT "CALL 'TUT09' FOR THE NEXT LESSON." 1275 END