10  REM ***  HP TIME-SHARED BASIC PROGRAM LIBRARY  ************************
11  REM
12  REM         TUT23:  TUTOR SERIES BASIC LANGUAGE PROGRAMMING COURSE,
13  REM                 (PART 23 OF 25)
14  REM         36139 (A810) REV A -- 7/71
15  REM
16  REM ***  CONTRIBUTED PROGRAM  ****************************************
17  REM
20  GOTO 100
30  GOTO 300
40  GOTO 630
90  PRINT " U=4.2, V=5.87, W=3.92 (FROM"
100  PRINT "THIS IS 'TUT23', AND IS A REVIEW LESSION,";
110  PRINT " TO ENABLE YOU TO MAKE SURE YOU"
120  PRINT "HAVE LEARNED THE FUNDAMENTALS OF THE 'BASIC'";
130  PRINT " LANGUAGE. THE FIRST PART OF"
140  PRINT "THE LESSON WILL BE DEVOTED TO YOUR WRITING A";
150  PRINT " PROGRAM INVOLVING TERMS AND"
160  PRINT "THEIR USE. LET'S BEGIN."
170  PRINT 
180  PRINT "WRITE THE SHORTEST PROGRAM YOU CAN. TO READ:";
200  PRINT "THE PROGRAM ITSELF), TO ENTER A VALUE CALLED";
210  PRINT " X FROM THE TELETYPE, AND TO"
220  PRINT "PRINT OUT THE POSITIVE DIFFERENCE BETWEEN THE";
230  PRINT " LARGEST OF THE FOUR VALUES"
240  PRINT "AND THE AVERAGE OF THE OTHER THREE.  TRY THEM";
250  PRINT "SEVERAL TIMES USING"
260  PRINT "X AS A PARAMETER (DIFFERENT VALUES). THEN CONTINUE";
270  PRINT " WITH THIS LESSON PRO-"
280  PRINT "GRAM.  BEFORE YOU RE-RUN IT, TYPE '20' AND RETURN THE CARRIAGE"
290  STOP 
300  PRINT "THE FOLLOWING PROGRAM ALLOWS FOR AN INFINITE NUMBER";
310  PRINT " OF INPUT VALUES:"
320  PRINT 
330  PRINT "    100 READ U,V,W"
340  PRINT "    110 DATA 4.2, 5.87, 3.92"
350  PRINT "    120 INPUT X"
360  PRINT "    130 IF X>5.87 THEN 170"
370  PRINT "    140 IF X=5.87 THEN 190"
380  PRINT "    150 PRINT ABS(5.87-((X+8.12)/3))"
390  PRINT "    160 GOTO 120"
400  PRINT "    170 PRINT ABS(X-13.99/3)"
410  PRINT "    180 GOTO 120"
420  PRINT "    190 PRINT ''NO MAXIMUM VALUE''"
430  PRINT "    200 GOTO 120"
440  PRINT "    210 END"
450  PRINT 
460  PRINT "OF COURSE THIS PROBLEM INTERPRETATION REQUIRES";
470  PRINT " A UNIQUE MAXIMUM VALUE."
480  PRINT "IF YOURS IS DIFFERENT, DON'T CHANGE IT UNLESS";
490  PRINT " IT DID NOT WORK. NEXT MAKE"
500  PRINT "THE ASSUMPTION THAT THE DATA MAY NOT";
510  PRINT " STAY THE SAME, AND THAT U, V, AND W"
520  PRINT "ARE TO BE REARRANGED (IF NECESSARY) SO";
530  PRINT " THAT U IS THEN THE GREATEST AND W"
540  PRINT "THE LEAST OF THE THREE. HAVE X, U, V,";
550  PRINT " AND W PRINTED OUT AS ADJUSTED. RUN"
560  PRINT "THE PROGRAM WITH NEW DATA. THEN CALL";
570  PRINT " THIS ONE BACK IN AND TYPE:"
580  PRINT 
590  PRINT "  DELETE - 20,30"
600  PRINT 
610  PRINT "THEN RUN IT."
620  STOP 
630  PRINT "IF YOU CHANGED YOURS SUCCESSFULLY, TYPE '1' AND WHEN";
640  PRINT " I STOP, CALL IN "
650  PRINT "PROGRAM 'TUT24' WHICH IS THE NEXT PART OF THIS LESSION.";
660  PRINT " IF YOU WANT TO"
670  PRINT "KNOW HOW I CHANGED THE PROGRAM I STARTED WITH,";
680  PRINT " TYPE '9' INSTEAD. WHAT IS"
690  PRINT "YOUR CHOICE.";
700  INPUT W
710  PRINT 
720  IF W>1 THEN 740
730  STOP 
740  PRINT "I WANT TO REMOVE A BLOCK OF LINES IN THE MIDDLE,";
750  PRINT " PLUS LIND 110 (A SET OF"
760  PRINT "DATA WOULD BE ADDED WITH EACH 'RUN'). WHAT IS THE";
770  PRINT " BEGINNING (BLOCK) LIND"
780  PRINT "I SHOULD REMOVE (NUMBER ONLY) ";
790  INPUT W
800  PRINT 
810  IF W=130 THEN 840
820  PRINT "NO, IT'S 130, BECAUSE V MUST BE GENERALIZED.";
830  GOTO 850
840  PRINT "RIGHT; THAT'S BECAUSE V MUST BE GENERALIZED.";
850  PRINT " ON THAT BASIS, WHICH SHOULD"
860  PRINT "BE THE LAST LINE IN THE BLOCK";
870  INPUT W
880  PRINT 
890  PRINT "IT WILL HAVE TO BE 180. WE'LL STILL WANT THE";
900  PRINT " LAST THREE LINES. SO WE CAN"
910  PRINT "USE THE SYSTEM COMMANDS:"
920  PRINT 
930  PRINT "   DELETE - 110,110"
940  PRINT "   DELETE - 130,180"
950  PRINT 
960  PRINT "CIRCLE IN PEN OR PENCIL THOSE LINES DELETED.";
970  PRINT " NOW WE WANT TO INSERT QUITE"
980  PRINT "A NUMBER OF LINES WHERE THESE HAVE BEEN";
990  PRINT " REMOVED. TO MAKE ROOM, SHOULD WE"
1000  PRINT "(1) USE A SMALL INCREMENT FOR THE NEW LINE";
1010  PRINT " NUMBERS, (2) RESEQUENCE,"
1020  PRINT "OR (3) WRITE A NEW PROGRAM AND APPEND IT TO";
1030  PRINT " THIS ONE? TYPE NUMBER ONLY:"
1040  PRINT "WHICH";
1050  INPUT W
1060  PRINT 
1070  IF W=1 THEN 1170
1080  IF W=2 THEN 1200
1090  IF W>3 THEN 1150
1100  PRINT "THIS WON'T WORK BECAUSE THE LINE NUMBERS OF THE APPENDED"
1110  PRINT "PROGRAM WOULD NEED TO BE LESS THAN THE LAST STATEMENT OF"
1120  PRINT "THE ORIGINAL PROGRAM. RESEQUENCING WOULD PROBABLY BE THE MOST"
1130  PRINT " DESIRABLE WAY TO DO IT."
1140  GOTO 1220
1150  PRINT "TYPE 1, 2, OR 3 PLEASE."
1160  GOTO 1040
1170  PRINT "OK, PROVIDED YOU DON'T NEED TOO MANY LINES.";
1180  PRINT " I'D PREFER RESEQUENCING. NOW"
1190  GOTO 1220
1200  PRINT "THIS IS DOUBTLESSLY THE BEST WAY, ALTHOUGH ";
1210  PRINT "ANOTHER MIGHT WORK. NOW"
1220  PRINT "IN ORDER TO GUARANTEE SUFFICIENT ROOM FOR THE";
1230  PRINT " INSERTED PART, THE COMMAND"
1240  PRINT "BELOW WILL CHANGE LINE NUMBERS:"
1250  PRINT 
1260  PRINT "    RENUMBER - 100,500"
1270  PRINT 
1280  PRINT " THIS WAS EXPLAINED IN 'TUT15'. NOW WE CAN";
1290  PRINT " INSERT THE REQUIRED PART:"
1300  PRINT 
1310  PRINT "    630 PRINT               760 LET U=V"
1320  PRINT "    640 IF U<V THEN 750     770 LET V=Y"
1330  PRINT "    650 IF U<W THEN 710     780 GOTO 650"
1340  PRINT "    660 IF V>W THEN 790     790 PRINT''X, U, V, AND W:''"
1350  PRINT "    670 LET Y=V             800 PRINT X,U,V,W"
1360  PRINT "    680 LET V=W             810 PRINT''DIFFERENCE:'';"
1370  PRINT "    690 LET W=Y             820 IF X>U THEN 860"
1372  PRINT "    700 GOTO 650            830 IF X<U THEN 880"
1374  PRINT "    710 LET Y=U             850 GOTO 1100"
1380  PRINT "    720 LET U=W             860 PRINT (X-(U+V+W)/3)"
1390  PRINT "    730 LET W=Y             870 GOTO 1105"
1400  PRINT "    740 GOTO 660            880 PRINT (U-(X+V+W)/3)"
1404  PRINT "                            890 GOTO 1105"
1408  PRINT "                            1100 PRINT ''NO MAXIMUM VALUE''"
1409  PRINT "                            1105 PRINT"
1410  PRINT "    750 LET Y=U             1600 GOTO 600"
1420  PRINT 
1430  PRINT "BEFORE WE CAN CONTINUE THIS DISCUSSION YOU WILL NEED";
1440  PRINT " TO CHANGE PROGRAMS."
1450  PRINT " CALL IN THE PROGRAM 'TUT24', WHICH IS THE NEXT PART OF";
1460  PRINT "THIS LESSON."
1470  PRINT "IF NECESSARY, I CAN EXPLAIN THE ABOVE PROGRAM FURTHER."
1480  END 
