Presentation is loading. Please wait.

Presentation is loading. Please wait.

Forth Lecture L7.1. A Brief History of Programming Languages

Similar presentations


Presentation on theme: "Forth Lecture L7.1. A Brief History of Programming Languages"— Presentation transcript:

1 Forth Lecture L7.1

2 A Brief History of Programming Languages http://www.byte.com/art/9509/sec7/art19.htm http://merd.net/pixel/language-study/diagram.html

3 How would you have a computer evaluate this expression? X = A*B + (C – D)/(E + F) Reverse Polish Notation (RPN) Postfix AB*CD-EF+/+

4 Forth http://www.ultratechnology.com/dindex.htm

5 WHYP Pronounced “whip” “Words to Help You Program” Subroutine-threaded Forth for Embedded Systems –68HC11 (16-bit) –68332 (32-bit) –68HC12 (16-bit)

6 WHYP is developed from scratch in the book: Design of Embedded Systems Using 68HC12/11 Microcontrollers by Richard E. Haskell Prentice Hall, 2000

7

8 FORTH is a programming language that --- was invented by Charles Moore in the early 70’s is extensible keeps all definitions in a dictionary is extremely compact is recursive can be programmed in RAM, PROM, or ROM is structured uses a stack and postfix notation

9 Chuck Moore reading Haskell’s WHYP book

10 WHYP Colon Definitions : squared( n -- n**2) DUP * ; : cubed( n -- n**3) DUP\ n n squared \ n n**2 * ;\ n**3

11 Branching and Looping in WHYP IF…ELSE…THEN FOR…NEXT BEGIN…AGAIN BEGIN…UNTIL BEGIN…WHILE…REPEAT

12 IF…ELSE…THEN IF ELSE THEN is either TRUE (-1) or FALSE (0)

13 WHYP Conditional Words <( n1 n2 -- f )(“less-than”) >( n1 n2 -- f )(“greater-than”) =( n1 n2 -- f )(“equals”) <>( n1 n2 -- f )(“not-equals”) <=( n1 n2 -- f )(“less-than or equal”) >=( n1 n2 -- f )(“greater-than or equal”) 0<( n -- f)(“zero-less”) 0>( n -- f)(“zero-greater”) 0=( n -- f)(“zero-equal”) U<( u1 u2 -- f )(“U-less-than”) U>( u1 u2 -- f )(“U-greater-than”) U<=( u1 u2 -- f )(“U-less-than or equal”) U>=( u1 u2 -- f )(“U-greater-than or equal”)

14

15 Do different things depending what is in T : checkT( n -- ) DUP 1 =\ n f IF\ n DO1\ ELSE\ n DUP 2 =\ n f IF\ n DO2 ELSE\ n DUP 3 =\ n f IF\ n DO3 ELSE\ n DO4 THEN\ THEN THEN ;

16 >R Decrement top of return stack and branch back to if not equal to zero. Therefore, are executed n times. FOR…NEXT Loop n FOR NEXT drjne

17 BEGIN…AGAIN BEGIN AGAIN

18 BEGIN…UNTIL BEGIN UNTIL is either TRUE or FALSE usually from some WHYP conditional word

19 : GET.BTN ( -- n ) BEGIN BTN@ 0= UNTIL BEGIN BTN@ UNTIL BTN@ CHECKT AGAIN ;

20 BEGIN…WHILE…REPEAT BEGIN WHILE REPEAT

21 x = 1 i = 2 DO WHILE i <= n x = x * i i = i + 1 ENDDO factorial = x : factorial ( n -- n! ) 1 2 ROT \ x i n BEGIN \ x i n 2DUP <= \ x i n f WHILE \ x i n -ROT TUCK \ n i x i * SWAP \ n x i 1+ ROT \ x i n REPEAT \ x i n 2DROP ; \ x Factorial


Download ppt "Forth Lecture L7.1. A Brief History of Programming Languages"

Similar presentations


Ads by Google