X-Git-Url: http://git.subgeniuskitty.com/pforth/.git/blobdiff_plain/bb6b2dcdd9acffabfd373c4c3f6b64a9cc43f335..189c9185ac57697d23484fb8c50c5d0b062c7ccd:/fth/tut.fth diff --git a/fth/tut.fth b/fth/tut.fth index ea60f18..c52eafa 100644 --- a/fth/tut.fth +++ b/fth/tut.fth @@ -1,70 +1,70 @@ -anew task-tut.fth - -: SUM.OF.N.A ( N -- SUM[N] , calculate sum of N integers ) - 0 \ starting value of SUM - BEGIN - OVER 0> \ Is N greater than zero? - WHILE - OVER + \ add N to sum - SWAP 1- SWAP \ decrement N - REPEAT - SWAP DROP \ get rid on N - ; - -: SUM.OF.N.B ( N -- SUM[N] ) - 0 SWAP \ starting value of SUM - 1+ 0 \ set indices for DO LOOP - ?DO \ safer than DO if N=0 - I + - LOOP -; - -: SUM.OF.N.C ( N -- SUM[N] ) - 0 \ starting value of SUM - BEGIN ( -- N' SUM ) - OVER + - SWAP 1- SWAP - OVER 0< - UNTIL - SWAP DROP -; - -: SUM.OF.N.D ( N -- SUM[N] ) - >R \ put NUM on return stack - 0 \ starting value of SUM - BEGIN ( -- SUM ) - R@ + \ add num to sum - R> 1- DUP >R - 0< - UNTIL - RDROP \ get rid of NUM -; - -: SUM.OF.N.E { NUM | SUM -- SUM[N] , use return stack } - BEGIN - NUM +-> SUM \ add NUM to SUM - -1 +-> NUM \ decrement NUM - NUM 0< - UNTIL - SUM \ return SUM -; - -: SUM.OF.N.F ( NUM -- SUM[N] , Gauss' method ) - DUP 1+ * 2/ -; - - -: TTT - 10 0 - DO - I SUM.OF.N.A . - I SUM.OF.N.B . - I SUM.OF.N.C . - I SUM.OF.N.D . - I SUM.OF.N.E . - I SUM.OF.N.F . - CR - LOOP -; -TTT - +anew task-tut.fth + +: SUM.OF.N.A ( N -- SUM[N] , calculate sum of N integers ) + 0 \ starting value of SUM + BEGIN + OVER 0> \ Is N greater than zero? + WHILE + OVER + \ add N to sum + SWAP 1- SWAP \ decrement N + REPEAT + SWAP DROP \ get rid on N + ; + +: SUM.OF.N.B ( N -- SUM[N] ) + 0 SWAP \ starting value of SUM + 1+ 0 \ set indices for DO LOOP + ?DO \ safer than DO if N=0 + I + + LOOP +; + +: SUM.OF.N.C ( N -- SUM[N] ) + 0 \ starting value of SUM + BEGIN ( -- N' SUM ) + OVER + + SWAP 1- SWAP + OVER 0< + UNTIL + SWAP DROP +; + +: SUM.OF.N.D ( N -- SUM[N] ) + >R \ put NUM on return stack + 0 \ starting value of SUM + BEGIN ( -- SUM ) + R@ + \ add num to sum + R> 1- DUP >R + 0< + UNTIL + RDROP \ get rid of NUM +; + +: SUM.OF.N.E { NUM | SUM -- SUM[N] , use return stack } + BEGIN + NUM +-> SUM \ add NUM to SUM + -1 +-> NUM \ decrement NUM + NUM 0< + UNTIL + SUM \ return SUM +; + +: SUM.OF.N.F ( NUM -- SUM[N] , Gauss' method ) + DUP 1+ * 2/ +; + + +: TTT + 10 0 + DO + I SUM.OF.N.A . + I SUM.OF.N.B . + I SUM.OF.N.C . + I SUM.OF.N.D . + I SUM.OF.N.E . + I SUM.OF.N.F . + CR + LOOP +; +TTT +