ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

190 lines
5.0 KiB

  1. 10 PRINT "PROGRAM FILE 151: USER-DEFINED FUNCTIONS."
  2. 20 PRINT " ANSI STANDARD 16.2, 16.4, 7.2, 7.4"
  3. 30 PRINT
  4. 40 PRINT "THIS PROGRAM TESTS VARIOUS KINDS OF USER-DEFINED FUNCTIONS."
  5. 50 PRINT "NUMERIC EXPRESSIONS ARE USED IN TWO NEW CONTEXTS: BOTH AS"
  6. 55 PRINT "THE FUNCTION DEFINITION, AND ALSO AS ARGUMENTS IN THE"
  7. 60 PRINT "FUNCTION INVOCATIONS."
  8. 65 PRINT
  9. 70 PRINT "SECTION 151.1: THE EXPRESSION IN THE DEFINITION USING ONLY"
  10. 80 PRINT " THE PARAMETER OF THE PARAMETER-LIST."
  11. 90 PRINT
  12. 100 PRINT " BEGIN TEST."
  13. 110 PRINT
  14. 120 DEF FNA(X)=X*X
  15. 130 DEF FNB(Y)=Y*Y*Y
  16. 140 LET A=5
  17. 150 LET B=4
  18. 160 LET C=3
  19. 170 LET E=0
  20. 180 LET X=FNA(12)
  21. 190 LET Y=FNA(A)
  22. 200 LET Z=FNA(2*A^3+4*B+C)
  23. 210 LET W=FNA(FNB(2)+B^3)
  24. 220 LET F=1
  25. 230 IF X=144 THEN 250
  26. 240 GOSUB 350
  27. 250 LET F=2
  28. 260 IF Y=25 THEN 280
  29. 270 GOSUB 350
  30. 280 LET F=3
  31. 285 LET C9=Z-72361
  32. 290 IF ABS(C9) < .1 THEN 310
  33. 300 GOSUB 350
  34. 310 LET F=4
  35. 315 LET C9=W-5184
  36. 320 IF ABS(C9) < .1 THEN 490
  37. 330 GOSUB 350
  38. 340 GOTO 490
  39. 350 REM SUBROUTINE TO PRINT ERROR MESSAGE
  40. 355 LET E=1
  41. 357 LET B$=""
  42. 360 ON F GOTO 370,390,410,430
  43. 370 LET A$="A CONSTANT"
  44. 380 GOTO 440
  45. 390 LET A$="A VARIABLE"
  46. 400 GOTO 440
  47. 410 LET A$="CONSTANTS AND"
  48. 415 LET B$=" VARIABLES"
  49. 420 GOTO 440
  50. 430 LET A$="ANOTHER FUNCTION"
  51. 440 PRINT "FUNCTION FAILED TO EXECUTE PROPERLY WHEN THE EXPRESSION"
  52. 450 PRINT "IN THE ARGUMENT-LIST FOR THE FUNCTION REFERENCE USED"
  53. 460 PRINT A$;B$;"."
  54. 470 PRINT
  55. 480 RETURN
  56. 490 IF E=0 THEN 520
  57. 500 PRINT "*** TEST FAILED. NOTE THE ABOVE REASONS ***"
  58. 510 GOTO 530
  59. 520 PRINT "*** TEST PASSED ***"
  60. 530 PRINT
  61. 540 PRINT " END TEST."
  62. 550 PRINT
  63. 560 PRINT "SECTION 151.2: THE EXPRESSION IN THE DEFINITION USING THE"
  64. 570 PRINT " PARAMETER OF THE PARAMETER-LIST AND OTHER VARIABLES."
  65. 590 PRINT
  66. 600 PRINT " BEGIN TEST."
  67. 610 PRINT
  68. 620 DEF FNC(A)=A*A-B+C
  69. 630 LET B=-15
  70. 640 LET C=-35
  71. 650 LET X=FNC(13)
  72. 660 IF X=149 THEN 690
  73. 670 PRINT "*** TEST FAILED ***"
  74. 680 GOTO 700
  75. 690 PRINT "*** TEST PASSED ***"
  76. 700 PRINT
  77. 710 PRINT " END TEST."
  78. 720 PRINT
  79. 730 PRINT "SECTION 151.3: THE EXPRESSION IN THE DEFINITION USING THE"
  80. 740 PRINT " PARAMETER OF THE PARAMETER-LIST AND CONSTANTS."
  81. 760 PRINT
  82. 770 PRINT " BEGIN TEST."
  83. 780 PRINT
  84. 790 DEF FND(Y)=Y^4-16
  85. 800 LET A=4
  86. 810 LET B=2
  87. 820 LET Y=FND(A^3-3*A^2*B+3*A*B^2-B^3)
  88. 825 LET C9=Y-4080
  89. 830 IF ABS(C9) < .1 THEN 860
  90. 840 PRINT "*** TEST FAILED ***"
  91. 850 GOTO 870
  92. 860 PRINT "*** TEST PASSED ***"
  93. 870 PRINT
  94. 880 PRINT " END TEST."
  95. 890 PRINT
  96. 900 PRINT "SECTION 151.4: THE EXPRESSION IN THE DEFINITION USING THE"
  97. 910 PRINT " PARAMETER OF THE PARAMETER-LIST AND A REFERENCE"
  98. 920 PRINT " TO ANOTHER FUNCTION."
  99. 930 PRINT
  100. 940 PRINT " BEGIN TEST."
  101. 950 PRINT
  102. 960 DEF FNE(Z)=Z^2-4
  103. 970 DEF FNF(Z)=Z*X+FNE(A^2+B)
  104. 980 LET A=9
  105. 990 LET B=19
  106. 1000 LET X=3
  107. 1010 LET Y=2
  108. 1020 LET Z=FNF(X^3-3*X^2*Y+3*X*Y^2-Y^3)
  109. 1025 LET C9=Z-9999
  110. 1030 IF ABS(C9) < .1 THEN 1060
  111. 1040 PRINT "*** TEST FAILED ***"
  112. 1050 GOTO 1070
  113. 1060 PRINT "*** TEST PASSED ***"
  114. 1070 PRINT
  115. 1080 PRINT " END TEST."
  116. 1090 PRINT
  117. 1100 PRINT "SECTION 151.5: THE EXPRESSION IN THE DEFINITION HAS A"
  118. 1110 PRINT " CONSTANT VALUE."
  119. 1120 PRINT
  120. 1130 PRINT " BEGIN TEST."
  121. 1140 PRINT
  122. 1150 DEF FNM=123
  123. 1160 DEF FNN(D)=3*37
  124. 1170 LET A=FNM
  125. 1180 LET B=FNN(FNM+A)
  126. 1190 IF A<>123 THEN 1300
  127. 1200 IF B<>111 THEN 1300
  128. 1210 PRINT "*** TEST PASSED ***"
  129. 1220 GOTO 1310
  130. 1300 PRINT "*** TEST FAILED ***"
  131. 1310 PRINT
  132. 1320 PRINT " END TEST."
  133. 1330 PRINT
  134. 1500 PRINT "SECTION 151.6: THE PARAMETER OF A USER-DEFINED"
  135. 1510 PRINT " FUNCTION IS LOCAL TO THE EXPRESSION OF THE"
  136. 1520 PRINT " DEFINITION AND OTHER VARIABLES ARE GLOBAL."
  137. 1530 PRINT
  138. 1540 PRINT " BEGIN TEST."
  139. 1550 PRINT
  140. 1560 LET X=1
  141. 1570 LET Y=2
  142. 1580 LET Z=3
  143. 1590 LET P1=-100
  144. 1600 LET Q1=-100
  145. 1610 DEF FNG(P1)=3+P1+X
  146. 1620 DEF FNH(P1)=7+X+Y+P1+FNG(30.E-1+P1)+FNG(P1)+FNG(Y)
  147. 1630 LET X=4
  148. 1640 LET Y=5
  149. 1650 LET Z=6
  150. 1660 LET P1=7
  151. 1670 LET Q1=8
  152. 1680 DEF FNI(Q1)=Z+Q1*10.
  153. 1690 LET A=FNH(Q1+3)+FNG(10)+FNI(Q1+4)
  154. 1700 IF X<>4 THEN 1790
  155. 1710 IF Y<>5 THEN 1790
  156. 1720 IF Z<>6 THEN 1790
  157. 1730 IF P1<>7 THEN 1790
  158. 1740 IF Q1<>8 THEN 1790
  159. 1750 LET C=221-A
  160. 1760 IF ABS(C)>.01 THEN 1790
  161. 1770 PRINT "*** TEST PASSED ***"
  162. 1780 GOTO 1800
  163. 1790 PRINT "*** TEST FAILED ***"
  164. 1800 PRINT
  165. 1810 PRINT " END TEST."
  166. 1820 PRINT
  167. 1830 PRINT "SECTION 151.7: FULL GENERAL USE OF USER-DEFINED FUNCTIONS"
  168. 1840 PRINT " IN NUMERIC EXPRESSIONS."
  169. 1850 PRINT
  170. 1860 PRINT " BEGIN TEST."
  171. 1870 PRINT
  172. 1880 DEF FNT=3
  173. 1890 DEF FNU(D)=100
  174. 1900 LET X=4
  175. 1910 LET Y=5
  176. 1920 LET Z=6
  177. 1930 LET Q1=8
  178. 1940 LET A=FNI(FNT)
  179. 1950 LET A=A/(FNG(FNH(Q1+FNT)/(FNI(Q1+4)-FNU(1E38))+FNG(FNG(-10)))-2)
  180. 1960 LET C9=A-3
  181. 1970 IF ABS(C9) < .01 THEN 2000
  182. 1980 PRINT "*** TEST FAILED ***"
  183. 1990 GOTO 2010
  184. 2000 PRINT "*** TEST PASSED ***"
  185. 2010 PRINT
  186. 2020 PRINT " END TEST."
  187. 2030 PRINT
  188. 2040 PRINT "END PROGRAM 151."
  189. 2050 END