home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / tutor / l2p070 < prev    next >
Text File  |  1990-07-15  |  4KB  |  124 lines

  1.        ╔════════════════════════════════════════════════════╗
  2.        ║ Lesson 2 Part 070  F-PC 3.5 Tutorial by Jack Brown ║
  3.        ╚════════════════════════════════════════════════════╝
  4.  
  5.                   ┌────────────────────┐
  6.                   │  Lots of Problems! │
  7.                   └────────────────────┘
  8. ╓────────────────╖
  9. ║  Problem 2.10  ║
  10. ╙────────────────╜
  11.   Tank volume and surface area.
  12.   Write words  .LWH   VOLUME   and  AREA  along the lines
  13.   of the previous problem except that they take 3 stack items,
  14.   length, width, and height.  VOLUME computes the volume of the
  15.   tank. AREA computes the surface area of the tank.  Combine
  16.   these into a single word   TANK  which performs the function
  17.   of all three as in PROBLEM - 2.1.
  18.  
  19. ╓────────────────╖
  20. ║ Problem  2.11  ║
  21. ╙────────────────╜
  22.   Rectangle  again.
  23.   The area and perimeter of a rectangle       -----------(X2,Y2)
  24.   can be determined from the coordinates      |         |
  25.   of either pair of opposite corners.         |         |
  26.   A = ( X2 - X1 )*( Y2 - Y1)                  |         |
  27.   P = 2*(( X2 - X1 )+( Y2 - Y1))              -----------
  28.                                            (X1,Y1)
  29.   Write words to find the length, width, area, and perimeter
  30.   and then combine them into one one word as in problem 1.
  31.   Can any of the work from problem 1 be used here?
  32.   Do your words work if you feed them upper left and lower
  33.   right coordinates?
  34.  
  35. ╓───────────────╖
  36. ║ Problem 2.12  ║
  37. ╙───────────────╜
  38.   Falling objects.
  39.   The height of a falling object above the ground at time t
  40.   seconds is given by
  41.            height =  h0 - v0*t - 16*t*t
  42.   where h0 is the initial height in feet
  43.   and v0 is the initial velocity in feet per second.
  44.   Write a word called   HEIGHT that takes initial height
  45.   initial velocity and a time from the stack and produces the
  46.   following output.
  47.   You type:     1000 100 3  HEIGHT     ( return )
  48.   And see :     Initial height is 1000 feet.
  49.                 Initial velocity is 100 feet per second.
  50.                 Height after  3  seconds is 412  feet.
  51.   Does your solution consist of one long definition?
  52.   If it does factor it as we did for TANK_VOLUME
  53.     ( the 412 above may be wrong!! )
  54.  
  55.  
  56. ╓────────────────╖
  57. ║ Problem 2.13   ║
  58. ╙────────────────╜
  59. Find the error in the program below.
  60. \  DISPLAYING A TABLE    contains error!!!     09:57JWB01/17/86
  61. \   New word:    .R   ( n w   -- )
  62. \   Print  n  right justified in a field  w  wide.
  63. : .ONE  ( n   -- )
  64.         12 SPACES               \ Indent table entry.
  65.         DUP 8 .R                \ Print number.
  66.         DUP DUP *  8 .R         \ Print square of number.
  67.     DUP DUP DUP  * *  8 .R ;    \ Print cube of number.
  68. : .HEADING  ( -- )
  69.        CR CR CR 14 SPACES
  70.        ." NUMBER  SQUARE    CUBE" ;
  71. : .TABLE  ( first last -- )
  72.         .HEADING             \  ?ENOUGH   explain it.
  73.         1+ SWAP
  74.         ?DO CR I .ONE LOOP
  75.         CR CR ;
  76. \ *** Hint: .TABLE leaves garbage on the stack. Use Debug to
  77. \ *** find where and fix it so it won't do it any more!
  78.  
  79. ╓───────────────╖
  80. ║ Problem 2.14  ║
  81. ╙───────────────╜
  82. Make your own Tank Table Program.
  83. a)Modify the previous example so that it gives a table of
  84.   volumes and surface areas of cubical tanks. Note: CUBICAL!!!
  85.   The new heading should have the form:
  86.  
  87.         SIDE    SURFACE AREA     VOLUME
  88.         feet    square feet    cubic feet
  89.         ====    ============   ==========
  90.  
  91.   Entries should be neatly centered under the table headings!!
  92.  
  93. b)Repeat the above problem for spherical tanks.  Heading
  94.   should read:  RADIUS    SURFACE AREA     VOLUME   etc.
  95.  
  96.   For a sphere   V = 4 pi R*R*R/3
  97.                  S = 4 pi R*R
  98.                 pi = 3.1416
  99.   Hint:  to multiply by pi see Brodie or use -
  100.   : *PI  ( n -- n*pi )   355 113  */  ;
  101.  
  102. ╓───────────────╖
  103. ║ Problem 2.15  ║
  104. ╙───────────────╜
  105.   What does this program do?
  106.  
  107. : .ONE  ( n -- )
  108.         12 SPACES DUP EMIT DUP 4 .R
  109.         HEX 4 .R DECIMAL ;
  110. : .HEADING  ( -- )
  111.        CR CR CR 9 SPACES ." CHAR DEC HEX"  ;
  112. : ATABLE  ( first last -- )
  113.         .HEADING
  114.         1+ 256 MIN   SWAP  0 MAX
  115.         ?DO CR I .ONE LOOP ;
  116. : .TABLE  ( -- )
  117.         16 0 DO  I 16 * DUP 15 +
  118.                  ATABLE  KEY  DROP
  119.              LOOP ;
  120.  
  121. ┌────────────────────────────────────┐
  122. │  Please move to Lesson 2 Part 080  │
  123. └────────────────────────────────────┘
  124.