| ファイルタイプ | APK |
|---|---|
| 出版社 | Tomohide NANIWA |
| 発売日 | 2019/10/19 |
| 追加された日付 | 2019/10/19 |
| OSの要件 | Android |
| 要件 | Requires Android |
| 総ダウンロード数 | 0 |
| 価格 | $1.00 |
説明
Frtm (ForTh Modoki) は、プログラミング言語 FORTH をシミュレートするソフトウェアです。ただし、厳密な FORTH を再現することを意図したものではありません。コンパイラはありませんが、ユーザー定義語の単語と定数は、登録時に解釈されます。
FORTH とは異なる側面もいくつかあります。frtm には戻りスタックを操作するための単語がありませんが、frtm では単語の再帰的な定義が可能です。
Frtm は実数の計算もサポートしています。指数関数、平方根、三角関数、双曲線関数、ビット演算などの数学関数があります。したがって、frtm は関数電卓の代替ソフトウェアになる可能性があります。
式の解釈は、逆ポーランド記法 (RPN) に従って行われます。 Frtmには、条件分岐「if」、ループ構造「do-while」、「for-loop」があります。単語を組み合わせて新しい単語を作ることもできます。
Android OSでは、辞書の初期サイズとスタックの設定、辞書の単語を「単語帳」に保存する機能が追加されました。 「単語帳」は3冊までに制限されています。
言語の詳細な仕様については、日本語のサポート Web ページを参照してください。
frtm を自由にテストしたい場合は、次の Web ページで Java アプレット版の frtm を試してください。
http://www.rbt.his.u-fukui.ac.jp/~naniwa/comp/frtma.html
*** 単語の例 ***
* 2 つの数値の平均
: 平均 + 2.0/;
* N 数の平均
: 腐敗 + ループ スワップ 1.0 の場合は 1 を超えるネイブ スワップ */;
2 4 6 8 10 5 ネイブ。 cr
0 1 2 3 4 5 6 7 8 9 10 SPネイブ。 cr
* N 数の母集団分散
: nvarp dup 1+ copy nave SP nrotr swap dup * over 1 for rot dup * + loop swap 1.0 */SP nrot dup * - ;
2 4 6 8 10 5 nvarp . cr
* N 数の偏りのない分散
: nvar dup 1+ copy nave SP nrotr swap dup * over 1 for rot dup * + loop SP nrot dup * 3 ndup * - swap 1- 1.0 */;
2 4 6 8 10 5 nvar . cr
* 2 つの数の最大公約数
: gcd do swap over %dup 0 > while drop ;
1001 819 gcd . cr
* 階乗 [事実 (1)=1、事実 (n)=n*事実 (n-1)]
** 再帰
: ファクト dup 1=if else dup 1-ファクト * endif ;
10ファクター。 cr
** 反復
: ファクト 1 I * ループの 1+1 を交換します。
10事実。 cr
* フィボナッチ数列 [fib(0)=0, fib(1)=1, fib(n)=fib(n-1) + fib(n-2)]
** 再帰
: fib dup 0= if else dup 1=if else dup 1- fib swap 2 - fib + endif endif ;
30フィブ。 cr
** 反復
: fibi dup 0= if else 0 1 rot 1 for swap over + loop swap drop endif ;
30フィビ。 cr
* グラフィック
** 塗りつぶし長方形
: ボックス 16 0 for I setcol 10 20 I * + dup 100 100 rectf loop ;
ジムボックス
: hls 16 0 for I 45 * 2/50 100 setHLS 10 20 I * + dup 100 100 rectf ループ;
gm hls
** 再帰描画 (コッホ曲線)
: プレ 5 コピー ドロップ ;
: genx 3 ndup 6 ndup - * マイナス 100/スワップ 4 ndup 7 ndup - * 100/+ 5 ndup +
5 nrotr 4 ndrop ;
: Geny スワップ 3 ndup 6 ndup - * 100/スワップ 4 ndup 7 ndup - * 100/+ 4 ndup +
5 nrotr 4 ndrop ;
: gen 6 コピー genx 7 nrotr geny ;
: 7 nrotr 7 nrotr pre を保持します。
: 投稿 9 nrot 9 nrot 4 nrot 4 nrot 5 ndup 1- ;
: lineto lineto ;
: koch dup 0= 行をドロップする場合
pre 0 0 gen keep 33 0 gen post koch
pre 33 0 gen keep 50 -28 gen post koch
pre 50 -28 gen keep 66 0 gen post koch
pre 66 0 gen keep 100 0 gen post koch
5 ドロップ
endif ;
: kochs 10 setcol 89 440 551 440 4 koch
11 setcol 551 440 320 40 4 コッチ
12 setcol 320 40 89 440 4 コッチ;
GMコックス
** エスケープ シーケンスのような ReGIS グラフィックス ターミナルの直接使用
gm
(W(I15)P[50,50]C(S)[][+40,+40][+40,-40][+40,+40][+40,-40][+40,+ 40][+40,-40][](E)) .
(W(I12)P[50,150]F(C(B)[200,+200][+200,-150](E))) .
(W(I11)P[70,170]T(S16)[16,12]'Hello World') .
// 「grdemo」という単語を使用すると、グラフィックスの例のいくつかの単語が辞書に登録されます。