1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        LENSES:   SOLVES LENS PROBLEMS
4  REM
5  REM        36630 REV  A   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
50  REM LENS-COPYRIGHT 1970, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM JOHN W. HOSIE - NORTHPORT HIGH - PHYSICS 
110  PRINT "THIS PROGRAM MAY BE USED TO SOLVE LENS PROBLEMS."
120  PRINT 
130  PRINT "IN THE ORDER GIVEN ENTER THE VALUES FOR THE FOLLOWING:"
140  PRINT 
150  PRINT "FOCAL LENGTH, OBJECT DISTANCE, IMAGE DISTANCE, OBJECT"
160  PRINT 
170  PRINT "SIZE, IMAGE SIZE.  INPUT 0 (ZERO) FOR UNKNOWN VALUES."
180  PRINT 
182  PRINT "EVERY TIME THE COMPUTER ASKS 'READY?', ENTER 1 IF YOU HAVE"
183  PRINT 
184  PRINT "MORE PROBLEMS TO DO, OR 0 TO END THE PROGRAM."
186  PRINT 
188  PRINT 
190  PRINT "*** READY ";
191  INPUT F
192  IF F=0 THEN 780
193  IF F <> 1 THEN 188
195  PRINT 
196  PRINT "WHAT ARE YOUR VALUES FOR F, P, Q, O, I";
200  INPUT F,P,Q,O,I
210  LET P=ABS(P)
220  LET O=ABS(O)
230  PRINT 
240  IF F=0 THEN 390
250  IF P <> F THEN 280
260  PRINT "THE IMAGE IS AT INFINITY"
270  GOTO 186
280  LET Z=P*F/(P-F)
300  IF Q=0 THEN 340
310  IF Z=Q THEN 420
312  IF ABS(Q-Z)<.05*Z THEN 344
320  PRINT "YOUR Q IS NOT CORRECT FOR THE F AND P YOU HAVE ENTERED"
330  PRINT "NOTE CHANGED Q.  THE PERCENT ERROR ON YOUR Q IS:"
335  PRINT 100*ABS(Z-Q)/ABS(Z);" PERCENT."
340  LET Q=Z
342  GOTO 420
344  PRINT "YOUR Q IS CORRECT TO WITHIN ";100*ABS(Q-Z)/ABS(Z)"%"
346  PRINT "NOTE CORRECTED Q."
350  GOTO 340
360  IF Q=0 THEN 560
370  LET P=Q*F/(Q-F)
380  GOTO 420
390  IF P=0 THEN 550
400  IF Q=0 THEN 490
410  LET F=Q*P/(Q+P)
420  IF O=0 THEN 730
430  IF I=0 THEN 470
435  LET Z9=O*Q/P
440  IF I=Z9 THEN 660
445  IF ABS(I-Z9)<.05*Z9 THEN 474
450  PRINT "YOUR I IS NOT CORRECT FOR THE O YOU HAVE ENTERED"
460  PRINT "NOTE CHANGED I.  THE PERCENT ERROR ON YOUR I IS:"
465  PRINT 100*ABS(I-Z9)/ABS(Z9);" PERCENT."
470  LET I=Z9
472  GOTO 660
474  PRINT "YOUR I IS CORRECT TO WITHIN ";100*ABS(I-Z9)/ABS(Z9);"%"
476  PRINT "NOTE CORRECTED I."
478  GOTO 470
480  GOTO 660
490  IF O <> 0 THEN 520
500  PRINT "IF F,Q, AND O OR I = 0; CANNOT CALCULATE - TRY AGAIN."
510  GOTO 186
520  IF I=0 THEN 500
530  LET Q=P*I/O
540  GOTO 650
550  IF Q <> 0 THEN 590
560  PRINT "THE FOCAL LENGTH CANNOT BE CALCULATED IF BOTH OBJECT"
570  PRINT "AND IMAGE DISTANCES ARE ZERO."
580  GOTO 186
590  IF O=0 THEN 610
600  IF I <> 0 THEN 640
610  PRINT "MUST KNOW BOTH OBJECT AND IMAGE SIZE TO FIND FOCAL"
620  PRINT "LENGTH AND OBJECT DISTANCE."
630  GOTO 186
640  LET P=Q*O/I
650  LET F=Q*P/(P+Q)
660  PRINT 
665  PRINT "F="F,"P="P,"Q="Q,"O="O,"I="I
670  PRINT 
680  PRINT 
690  GOTO 186
700  PRINT "INFORMATION ABOUT EITHER FOCAL LENGTH OR BOTH OBJECT"
710  PRINT "AND IMAGE SIZE NEEDED FOR COMPLETE SOLUTION."
720  GOTO 186
730  IF I=0 THEN 760
740  LET O=I*P/Q
750  GOTO 660
760  PRINT 
765  PRINT "F="F,"P="P,"Q="Q
770  GOTO 670
780  END 
