**Dies ist eine alte Version des Dokuments!**
Inhaltsverzeichnis
4d2008-02 Listings
Berichtgenerator.zip
- Berichte generieren mit Hilfe von Gforth — ein Kinderspiel; 3 Listings: in.fs m.dep bio.txt
GTK-Listings.zip
- Widgets zum Anfassen - GUI-Skripting mit Forth und GTK+; Listing 1+2.
Quellcode_Bibliothek.zip
- Ein einfaches Quellcode–Bibiliothekssystem; 3 Listings: SAMPLE.LIB APPL.F LIBRARY.ANS
euler9.fs
\ Euler 9 .solution ( mka)
decimal vocabulary euler euler definitions
\ Satz des Pythagoras: a^2 + b^2 = c^2 : pyt ( a b – c^2 )
dup * swap dup * + ;
\ Quadratwurzel ziehen: Heron-Verfahren (Heron von Alexandria) \ Die Iterationsvorschrift lautet: xn+1 = ( xn + a/xn ) / 2 \ In RPN: a xn / xn + 2 / –
> xn+1
\
Weil nur die natürlichen Werte der Wurzel aus c^2 gebraucht werden, \ wird ganzzahlig kalkuliert. \ Quelle: forth-ev wiki \ http://www.forth-ev.de/wiki/doku.php : sqrt ( a – s )
DUP 0= ?EXIT DUP >R BEGIN R@ OVER / OVER + 2/ DUP ROT - ABS 1 <= UNTIL R> DROP ;
\ Wir brauchen nur die Werte von c, für die c eine natürliche Zahl ist. : nsqrt? ( a b – f )
pyt dup sqrt ( -- n s ) dup * ( -- n s*s ) - 0= ; ( -- f ) \ if zero, s is natural number.
\ Ist a+b+c=1000? : 1000? ( a b – f )
2dup pyt sqrt + + 1000 = ;
\ Huebsche Ausgabe der gefundenen Loesungen (!) : .solution ( a b – )
cr ." -------------------" cr 2dup swap ." a=" . ." b=" . 2dup pyt sqrt ." c=" . cr 2dup 2dup pyt sqrt + + ." a+b+c=" . cr 2dup pyt sqrt * * ." abc=" . ;
\ Teste a,b bis zum Wert a=b=xx variable xx 1000 xx ! : p9 ( – )
xx @ 0 DO xx @ 0 DO i j nsqrt? IF i j 1000? IF i j .solution THEN THEN LOOP LOOP cr ." -------------------" ;
words cr cr ( finis)
</file>