home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / tutor / l1p060 < prev    next >
Text File  |  1990-05-16  |  4KB  |  89 lines

  1.        ╔══════════════════════════════════════════════════════╗
  2.        ║  Lesson 1 Part 6.0  F-PC 3.5 Tutorial by Jack Brown  ║
  3.        ╚══════════════════════════════════════════════════════╝
  4.  
  5. Are you ready to make your checker board program better?  You may have
  6. noticed that there was a lot of repetition in the words ROW1, ROW2 and
  7. BOARD.  The sequence BLACK WHITE , WHITE BLACK , and ROW1 ROW2 appear
  8. four time each.  Forth, like most other languages has a method for
  9. specifying sequences that must be repeated.  In BASIC you use the
  10. FOR... NEXT loop.   In Forth it is called the  DO ... LOOP. Instead of
  11. coding the sequence BLACK WHITE  four times we can replace it with the
  12. sequence:
  13.  
  14.         4 0 DO   BLACK  WHITE  LOOP
  15.  
  16. The 0 is the initial value of the loop counter.  The 4 is the maximum
  17. value of the loop counter.  The loop counter (which we don't use here)
  18. will start with the value 0  and each time the word LOOP is encountered
  19. it will be incremented by 1 .  If the incremented value less than the
  20. maximum loop counter value of 4 program control will jump back to the
  21. first word after the DO ( BLACK in our case ).  It may look like the
  22. DO... LOOP above would repeat the sequence BLACK WHITE five times, 0 1 2
  23. 3 4,  but remember LOOP increments and does the checking.  When the loop
  24. counter is incremented from 3 to 4 the condition for repetition is no
  25. longer satisfied and control will be passed to the next Forth word that
  26. is just after LOOP.   Here is  what the improved program will look like.
  27.  
  28. \ ANOTHER CHECKER BOARD
  29. : BLACK   SPACE SPACE ;
  30. : WHITE   177 EMIT 177 EMIT ;
  31. : ROW1   CR 4 0 DO  BLACK WHITE LOOP ;
  32. : ROW2   CR 4 0 DO  WHITE BLACK LOOP ;
  33. : BOARD  CR 4 0 DO  ROW1  ROW2  LOOP ;
  34. : CHECKER_BOARD    BOARD  CR CR ;
  35.  
  36. Use the EDitor to enter the program using the file name  BOARD2.SEQ.
  37. There are a number of ways of starting the EDitor.  You can just press
  38. <ALT> N  and enter the file name BOARD2 when prompted or you can just
  39. press <ESC> and choose  "New file"  from the file menu.
  40.  
  41. When you enter the program see if you can add a little style to it so it
  42. has an appearance like the first one we entered.
  43.  
  44. It should also be noted that you can get a menu of your existing open
  45. files to edit by choosing the "Open file" item from the FILE menu or by
  46. just pressing <ALT> O from Forth. You then choose one of your files to
  47. modify by using the arrow keys.  You are should try this feature as soon
  48. as you get a chance.
  49.  
  50. ╓─────────────╖
  51. ║ Problem 1.2 ║
  52. ╙─────────────╜
  53. Modify the checker board program so that it has a double lined border
  54. constructed by from the IBM extended character set.  Hint:  See the
  55. word EMIT in the discussion below.
  56.  
  57. By the way, did you notice the new word that we are using?  It is called
  58. EMIT.  EMIT will display the ascii character corresponding to the number
  59. parameter the preceding it.  Try typing the following:
  60.  
  61. 65 EMIT 66 EMIT 67 EMIT <enter>   <--- do it,  what do you see?
  62.  
  63. 31 EMIT 32 EMIT 33 EMIT <enter>   <--- do it,  what do you see?
  64.  
  65. 177 EMIT gives a white blob on the screen.  number parameters
  66. 128 through 255 correspond to  IBM's extended character set.
  67.  
  68. Try the following while in Forth.
  69.  
  70. : CHARSET 255 0 DO CR I . I EMIT LOOP ;  <enter>
  71.  
  72. CHARSET <enter>
  73.  
  74. The Forth word  "  I  "   will fetch the current value of the  loop
  75. counter and use it as the parameter for " . "  and EMIT.
  76. What do you see.
  77.  
  78. ╓──────────────╖
  79. ║ Problem 1.3  ║
  80. ╙──────────────╜
  81.  
  82. Modify CHARSET  so that the information is not output so quickly by
  83. adding a "delay loop"  to waste time and hence slow down the output.
  84. Hint:  : DELAY   10000 0 DO 1 DROP LOOP ;
  85.  
  86. ┌────────────────────────────────────┐
  87. │  Please move to Lesson 1 Part 7.0  │
  88. └────────────────────────────────────┘
  89.