home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib34a.dsk / MAY.1988 / SUM.SLICE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  61 lines

  1. 10  REM  **********************
  2. 20  REM  * SUM.SLICE          *
  3. 30  REM  * TASK SLICING       *
  4. 40  REM  * BY HAROLD BALABAN  *
  5. 50  REM  * COPYRIGHT (C) 1988 *
  6. 60  REM  * MICROSPARC, INC.   *
  7. 70  REM  * CONCORD, MA 01742  *
  8. 80  REM  **********************
  9. 90  REM SUM INTEGERS FROM N1 TO N2 - TASK SLICING PROGRAM
  10. 100 SUM = 0:A1 =  -16384:A2 = 128
  11. 110 IN$ = "INPUT ERROR- PRESS ANY KEY"
  12. 120  GOTO 250
  13. 130  FOR I = L1 TO N2:SUM = SUM +I: NEXT : RETURN : REM USE TO FINISH UP CALCULATION AFTER ALL INPUTS ENTERED
  14. 140  REM   SUM SUBROUTINE WITH KEYBOARD PEEK
  15. 150 F = 0: REM   KEYBOARD READ FLAG; =1 IF KEY IS PRESSED  
  16. 160  FOR I = L1 TO N2
  17. 170 SUM = SUM +I
  18. 180 X =  PEEK(A1)
  19. 190  IF X >A2  THEN L1 = I +1:I = N2:F = 1: POKE  -16368,0
  20. 200  NEXT : IF F = 1  THEN  RETURN : REM  KEY WAS PRESSED
  21. 210  REM  NO KEY WAS PRESSED. THUS, SUMMATION IS COMPLETE
  22. 220 L1 = N2 +1: IF M1 <1  THEN  GET A$: PRINT A$:M1 =  VAL(A$): POP : GOTO 320: REM  ALL INTEGERS SUMMED. 1ST INPUT NOT ENTERED. NO KEY PRESSED. ENTER INPUT HERE.
  23. 230  IF M2 <1  AND JP = 2  THEN  GET A$: PRINT A$:M2 =  VAL(A$): POP : GOTO 410: REM  2ND INPUT MISSING. ENTER IT HERE. 
  24. 240  RETURN 
  25. 250  HOME : PRINT "THIS PROGRAM SUMS ALL INTEGERS FROM": PRINT "SMALLEST TO LARGEST USING A TASK": PRINT "SLICING ALGORITHM"
  26. 260  PRINT : INPUT "ENTER SMALLEST NUMBER: ";N1:L1 = N1
  27. 270  PRINT : INPUT "ENTER LARGEST NUMBER: ";N2
  28. 280  IF N1 >N2  THEN  PRINT IN$: GET A$: GOTO 250
  29. 290  HOME : PRINT "  ***  DISPLAY FORMAT": PRINT : PRINT "1) SHOW SUM ONLY": PRINT "2) SHOW ALL PERTINENT INFO": PRINT : PRINT "ENTER 1 OR 2: ";
  30. 300 JP = 1: IF L1 < = N2  THEN  GOSUB 140: REM  CONTINUE SUMMATION IF L1<=N2. JP=1 SHOWS WAITING FOR FIRST INPUT
  31. 310 M1 =  VAL( CHR$(X -A2))
  32. 320  IF M1 <1  OR M1 >2  THEN  PRINT IN$: GET A$: PRINT A$: GOTO 290
  33. 330 : HOME : PRINT "  ***  END CALCULATION INDICATION ***": PRINT 
  34. 340  PRINT "1) DO NOT RING BELL"
  35. 350  PRINT "2) RING BELL AT CONCLUSION OF SUM"
  36. 360  PRINT : PRINT "ENTER 1 OR 2:";
  37. 370 JP = 2: IF L1 >N2  THEN  GET A$: PRINT A$:M2 =  VAL(A$): GOTO 410: REM   EXIT IF SUMMATION FINISHED. ELSE GO TO SUMMATION ROUTINE.
  38. 380  GOSUB 140
  39. 390  IF X <A2  THEN 360
  40. 400 M2 =  VAL( CHR$(X -A2))
  41. 410  IF M2 <1  OR M2 >2  THEN  PRINT IN$: GET A$: PRINT A$: GOTO 330
  42. 420  HOME : PRINT "   *** INPUT CHECK ***"
  43. 430 A$ = "": PRINT : PRINT "THE FOLLOWING WAS REQUESTED:": PRINT 
  44. 440  PRINT : PRINT " SUM INTEGERS FROM ";N1" TO "N2: PRINT : ON M1 = 2 GOTO 450: PRINT " SHOW SUM ONLY": PRINT : GOTO 460
  45. 450  PRINT " SHOW ALL PERTINENT INFO": PRINT 
  46. 460  ON M2 = 2 GOTO 470: PRINT " DO NOT RING BELL": GOTO 480
  47. 470  PRINT " RING BELL"
  48. 480  PRINT : PRINT "IS THIS CORRECT (Y/N)? ";
  49. 490  IF L1 >N2  THEN 510
  50. 500  GOSUB 140
  51. 510  IF A$ = ""  AND X < = A2  THEN  GET A$: PRINT A$: GOTO 530
  52. 520 A$ =  CHR$(X -A2)
  53. 530  IF A$ = "N"  THEN 100
  54. 540  IF L1 < = N2  THEN  PRINT : PRINT "SUMMING. FIRST "L1 -1" INTEGERS": PRINT "ALREADY SUMMED.": PRINT : GOSUB 130: REM   ALL INPUTS ENTERED. GO TO 'FAST' SUMMATION ROUTINE
  55. 550  REM  PRINT FINAL RESULTS
  56. 560  IF M2 = 2  THEN  PRINT  CHR$(7)
  57. 570  HOME : PRINT "   ****  FINAL  RESULT  ****
  58. 580  PRINT : PRINT 
  59. 590  IF M1 = 1  THEN  PRINT "SUM IS "SUM: GOTO 610
  60. 600  PRINT "SUM OF INTEGERS FROM "N1" TO "N2" IS ": PRINT SUM
  61. 610  END