====== 4d2008-02 Listings ====== ===== Berichtgenerator.zip ===== {{:vd-archiv:listings:berichtgenerator.zip|Berichtgenerator}} - Berichte generieren mit Hilfe von Gforth — ein Kinderspiel; 3 Listings: in.fs m.dep bio.txt ===== GTK-Listings.zip ===== {{:vd-archiv:listings:gtk-listings.zip|GTK-Listings}} - Widgets zum Anfassen - GUI-Skripting mit Forth und GTK+; Listing 1+2. ===== Quellcode_Bibliothek.zip ===== {{:vd-archiv:listings:quellcode_bibliothek.zip|Quellcode Bibliothek}} - 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)