|
|
NXT-G數學運算的過去
8 q% y5 R$ W. `; e- ?" R1 Q% U+ y
K/ ?0 t$ _0 M8 _0 Z' j0 U; u* o! M, c$ p) j
當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,) Z X4 C7 B v- b% U3 e; E
, O0 O9 d% y f% V+ l p6 |
雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,
& T' T) ~' X/ F: Q- V# r
; |/ X7 T0 N- O& U5 D, @但還是讓大家非常不習慣,特別是當除法需要保留小數時。
* m# j- S1 r4 Z# A8 [6 X+ r5 D8 y& x L- i- M1 I
後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。7 v1 ?7 w j+ M8 N: o! g/ f, ~
$ R- h# @8 \% V } h# x這時反倒有一些狀況需要整數運算,但是卻無法使用。
2 J; ]+ l2 Q: Q6 I0 W2 K7 \
) q, ^4 W$ U. e例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,! f; g, r7 w: m3 W
6 T4 {1 a$ e- O7 A! R( J- s% j) j! j8 K2 E
如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,5 |7 j; Z @7 C2 {5 @
* f c& S; _1 M; l' z5 ^但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。
! n% A2 B0 r# J! h2 T. X) b$ [* k6 O* y! P/ `+ o( y" R
* A% s/ u( z0 k8 l, _$ f
舊版整數數學運算 M, C# _" p. O6 q. v5 W
) C+ c4 N$ y% s% O0 E9 F/ V9 t
/ Y6 O) ]0 Y, V
其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。
, s) H% d1 k0 \+ {7 N2 @# j( ~% O! j ]+ w9 t
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。
% R5 {& h3 ` U
- u7 u( Z$ f" |; g如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。
+ y+ D8 L- T3 q
! \4 ?1 ]) r" ~$ M& {9 ^* N$ u' {( Q2 x: T" R3 a, y
% Y1 j& p7 J" I# @& a9 }/ i
: e9 Q# D! O) [ s$ L5 t, M) N9 ^7 p
剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。+ k! t& N! E- V5 q$ x4 K# T8 D4 q
. M, I. D n- r6 U% V新增命令方塊後的命令面板如下:1 {$ ] \+ @" A* Y) h/ E
/ l9 e' C' X4 n" X- Y7 k+ q

+ i$ a q0 C* @! t4 j; _1 T6 B7 u) Z2 @- [; s
請使用檔案總管開啟NXT-G軟體目錄,
8 l* G# a& R% K$ V/ h1 j
2 h- J) |* Y, tC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry
- I* `( t, x6 T1 Z2 \% b# a2 r$ S* |5 i! q$ W4 T2 D! B$ ~. U( z
在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』$ R* O6 k( h& U. \ S
) X' |6 x% R( y
根據Team Hassenplug的說明,你還可以新增其他命令方塊,
6 F4 v) b' O% r: k$ Q- Z8 j% J0 e/ f& m; j6 ?* v7 Z4 M
可以新增的命令方塊列表在下面目錄中:. g* h. j% `. }& p
# i( i2 u% n K0 ~& ]C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\2 ~4 l* ?/ [4 s! o* q
. Y- a3 j5 J: T. p1 t
(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)
' B3 f! L; _ A4 x
' a% B! X0 k5 c6 l& G) k9 T! d, s( k. s# J/ X
使用測試結果
/ j& I# B% X9 V0 j2 L/ d5 C g- _; r" b
探奇寫了一個程式測試使用結果,. U" R8 }( Q5 d W. |0 I% Q) ^7 i
( V4 b+ a" G% C8 q* B. s
上半部使用新版的數學運算,100/3=33.333. z4 O) F) h+ k+ G
& W$ Q/ \' q4 C1 a% B# c
下半部使用舊版數學運算,100/3=33$ R+ |5 h' A) q$ G" e
6 u8 B6 }5 M: B9 r, b7 j & `$ Y8 l% W2 x8 y# f
; M* p0 A" d$ H$ B& J0 C有整數運算需求的讀友不妨試試。 |
|