Download presentation
Presentation is loading. Please wait.
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
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”)
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.