| Файлдын түрү | APK |
|---|---|
| Publisher | Tomohide NANIWA |
| Чыккан датасы | 2019-ж., 19-окт. |
| Кошулган күнү | 2019-ж., 19-окт. |
| Os талаптар | Android |
| Талаптар | Requires Android |
| Жалпы жүктөлүүлөр | 0 |
| Баасы | $1.00 |
Сүрөттөмө
Frtm (FoRTh Modoki) FORTH программалоо тилин окшоштурган программа. Бирок, бул FORTH катуу кайра чыгаруу үчүн арналган эмес. Компилятор жок, бирок колдонуучу аныктаган сөздөгү сөздөр жана туруктуулар ал катталганда чечмеленет.
FORTHдан айырмаланып кээ бир аспектилери бар: frtmде кайтаруу стектерин башкаруу үчүн сөздөр жок, ал эми frtm сөздүн рекурсивдүү аныктамасына мүмкүндүк берет.
Frtm ошондой эле реалдуу сандарды эсептөөнү колдойт. Анын экспоненциалдык, квадраттык тамыр, тригонометриялык функциялар, гиперболалык функциялар, биттик операциялар сыяктуу математикалык функциялары бар. Ошентип, frtm илимий эсептегичтин альтернативалуу программасы болушу мүмкүн.
Туундуну чечмелөө Reverse Polish Notation (RPN) боюнча жүргүзүлөт. Frtm шарттуу бутагына ээ "if", цикл үчүн структура "do-while" жана "for-loop". Ошондой эле сөздү бириктирип жаңы сөз түзө аласыз.
Android ОЖде сөздүктүн жана стектин баштапкы өлчөмүнүн конфигурациясы, сөздүктөгү сөздү "сөз китебине" сактоо мүмкүнчүлүгү кошулду. «Сөз китебинин» саны үчкө чейин чектелген.
Тилдин кеңири спецификациясын колдоо үчүн жапон тилиндеги веб-баракчага кайрылыңыз.
Эгерде сиз frtm'ди эркин сынагыңыз келсе, frtm'дин Java апплет версиясын төмөнкү веб-баракчадан байкап көрүңүз:
http://www.rbt.his.u-fukui.ac.jp/~naniwa/comp/frtma.html
*** Сөздөрдүн мисалдары ***
* Эки сандын орточо
: ave + 2.0/;
* N сандын орточо мааниси
: рот үчүн 1 үстүнөн nave swap + loop swap 1.0 */;
2 4 6 8 10 5 nave. cr
0 1 2 3 4 5 6 7 8 9 10 SP nave. cr
* N сандын калкынын дисперсиясы
: nvarp dup 1+ copy nave SP nrotr swap dup * 1 үстүнөн rot dup үчүн * + цикл алмашуу 1.0 */SP nrot dup * - ;
2 4 6 8 10 5 nvarp. cr
* N сандын калыс дисперсиясы
: nvar dup 1+ copy nave SP nrotr swap dup * 1 үстүнөн rot dup үчүн * + цикл SP nrot dup * 3 ndup * - алмаштыруу 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)]
** Рекурсия
: factr dup 1=if other dup 1- factr * endif ;
10 фактр. cr
** Итерация
: facti 1 алмашуу 1+ 1 for I * цикл ;
10 факты. cr
* Фибоначчи ырааттуулугу [fib(0)=0, fib(1)=1, fib(n)=fib(n-1) + fib(n-2)]
** Рекурсия
: fib dup 0= if else dup 1=if other 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 fibi. cr
* Графика
** Төрт бурчтукту толтуруңуз
: кутучалар 16 0 I setcol 10 20 I * + dup 100 100 rectf цикли;
gm кутучалары
: hls 16 0 for I 45 * 2/50 100 setHLS 10 20 I * + dup 100 100 rectf цикли;
gm hls
** Рекурсивдүү чийме (Кох ийри сызыгы)
: pre 5 copy drop;
: genx 3 ndup 6 ndup - * минус 100/swap 4 ndup 7 ndup - * 100/+ 5 ndup +
5 nrotr 4 ndrop ;
: geny swap 3ndup 6ndup - * 100/swap 4ndup 7ndup - * 100/+ 4ndup +
5 nrotr 4 ndrop ;
: ген 6 копия генкс 7 нротр гени;
: 7 нротр 7 нротр алдын ала сакта ;
: пост 9 нрот 9 нрот 4 нрот 4 нрот 5 ндуп 1- ;
: line moveto lineto ;
: koch dup 0= эгерде тамчы сызык башка
pre 0 0 gen keep 33 0 ген пост коч
pre 33 0 ген сактоо 50 -28 ген пост коч
чейин 50 -28 ген сактоо 66 0 ген пост коч
pre 66 0 ген сакта 100 0 ген пост коч
5 тамчы
endif ;
: коч 10 сеткол 89 440 551 440 4 коч
11 сеткол 551 440 320 40 4 коч
12 сеткол 320 40 89 440 4 коч ;
gm kochs
** Escape ырааттуулугу сыяктуу 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' деген сөздү колдонуу менен, графиканын мисалдары үчүн кээ бир сөздөр сөздүккө катталат.