| Forth  | http://www.forth.org | 
| similar languages: | Postscript | |
| CGI Squares | Michael Neumann | 
| \ #! /usr/bin/env gforth : HTTP-HEADER ." Content-type: text/html" CR CR ; : <HTML> ." <HTML>" ; : </HTML> ." </HTML>" ; : <HEAD> ." <HEAD>" ; : </HEAD> ." </HEAD>" ; : <TITLE> ." <TITLE>" ; : </TITLE> ." </TITLE>" ; : <BODY> ." <BODY>" ; : </BODY> ." </BODY>" ; : <P> ." <P>" ; : </P> ." </P>" ; : <BR> ." <BR> " ; : <H1> ." <H1>" ; : </H1> ." </H1>" ; \ ============================ : squares() 11 1 DO I DUP * . <BR> LOOP ; \ ============================ HTTP-HEADER <HTML> <HEAD> <TITLE> ." CGI-Squares in Forth" </TITLE> </HEAD> <BODY> <H1> ." CGI-Squares in Forth" </H1> squares() </BODY> </HTML> bye | 
| CGI - Outputs the squares from 1 to
10. | 
| Discouragement example | Michael Neumann | 
| 10000 constant ztsd variable zs 2variable tr : zins ztsd m/mod swap zs @ ztsd */ swap zs @ 1 */ + 1 m* ; : restd1 2dup zins d+ tr 2@ d- ; ( d -- d ) : restd 0 do restd1 loop ; ( d -- d ) : tdauer 0 >r 2dup zins tr 2@ d< if begin r> 1 + >r restd1 2dup tr 2@ d< until 2dup d0= if 0 else 1 then r> + else ." keine Tilgung " then ; ( d -- d n ) | 
| This example only serves as
discouragement! | 
| Hello World (1) | Michael Neumann | 
| ( Hello World in Forth ) ." Hello World" | 
| Prints "Hello World" onto the
screen. | 
| Hello World (2) | Michael Neumann | 
| \ Hello World in Forth : say_hello ." Hello World" ; say_hello | 
| Prints "Hello World" onto the
screen. | 
| Loop-Test | Michael Neumann | 
| : IS 0 DO I . LOOP ; : AS 0 DO CR 1 - DUP IS LOOP ; 11 10 AS | 
| Prints the following onto the
screen: 0 1 2 3 4 5 6 7 8 9 | 
| Squares | Michael Neumann | 
| 
: squares    ( to from    -->           )
  SWAP       ( to from    -->  from to   )
  1 +        ( from to    -->  from to+1 )
  SWAP       ( from to+1  -->  to+1 from )
  DO
    I DUP * .
  LOOP
;
10 1 squares
 | 
| Outputs the squares from 1 to
10. | 
| Absolute value | ANS Forth | Michael Neumann | 
| : abs ( value -- value' ) DUP 0< IF NEGATE ENDIF ; | 
| Factorial | ANS Forth | Michael Neumann | 
| 
\ define function (definiere Funktion)
: FAC recursive       ( n-n)
  DUP 1 >
  IF                  \ if n > 1
    DUP 1 - FAC *     \   n * fac n-1
  ELSE                \ else 
    DROP 1            \   1 
  ENDIF               \ end 
;
\ call function (Funtkion aufrufen)
6 FAC .
 | 
| Calculates the factorial. Results 720. | 
| Factorial | ANS Forth, pForth | Michael Neumann | 
| 
\ define function (definiere Funktion)
: FAC                   ( n-n)
  DUP 1 >
  IF                    \ if n > 1
    DUP 1 - RECURSE *   \   n * fac n-1
  ELSE                  \ else 
    DROP 1              \   1 
  THEN                  \ end 
;
\ call function (Funtkion aufrufen)
6 FAC .
 | 
| Calculates the factorial. Results 720. |