home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / source / l5p050.seq < prev    next >
Text File  |  1990-04-17  |  1KB  |  36 lines

  1. \ Lesson 5 Part 5  ( F-PC 3.5 Tutorial by Jack Brown )
  2.  
  3. \ We are going to write a program using an indefinite loop that
  4. \ demonstrates the incredible integer property.
  5.  
  6. \ Step 1: choose any integer larger than 2, call it n
  7. \ Step 2: if n is odd, replace n by 3n + 1 ; goto setp 4
  8. \ Step 3: if n is even, replace n by n/2
  9. \ Step 4: if n less than 2 goto step 5 otherwise goto step 2
  10. \ Step 5: stop.
  11.  
  12. \ On reading the above algorithm you will soon discover that you cannot
  13. \ tell just how many loops will occur before you get to step 5.  At first
  14. \ glance it appears that you would never get to step 5 and stop as half of
  15. \ the time, when n is odd, you are more than tripling n and the other half
  16. \ of the time when n is even you are just halfing n. To experiment with
  17. \ this algorithm we can use Forth indefinite loop structure to construct a
  18. \ program.
  19.  
  20.  
  21. \ Indefinite loop illustrates incredible integer property.
  22. : DOIT  ( n   -- )
  23.     CR  BEGIN  DUP  2 MOD  ( is n odd? )
  24.                IF   3 * 1+ ( yes: tripple n and add 1 )
  25.                ELSE   2/   ( no:  half n )
  26.                THEN
  27.                #OUT @ 65 > ( check for end of line )
  28.                IF CR THEN  ( start new line if there )
  29.                DUP 5 .R    ( display current value of n )
  30.                DUP 2 <     ( continue until less than 2 )
  31.         UNTIL  DROP ;
  32.  
  33.  
  34.  
  35.  
  36.