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 
