|
|
NXT-G數學運算的過去
4 ` C' A- ?3 Y
9 F. Q$ U# ^+ _7 A% S7 u: Q/ o# \' B1 s2 a z# C# L% Y
當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數," o) R4 Z( K. P- p: `/ |* p, M
}2 z3 M! P9 `& J8 ?. `
雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,
$ l4 w0 N; m0 W, e
0 [+ k# I4 J6 _' j" D但還是讓大家非常不習慣,特別是當除法需要保留小數時。' p9 O. ?% l' Q4 Y
9 L+ H0 \& {; a% _
後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。
' ?8 H* m) a7 Y+ Y0 P# D% C
, y1 u9 i/ F! \+ K& O ]這時反倒有一些狀況需要整數運算,但是卻無法使用。& X/ c9 ~. x5 q" K: b
& U& H) ^* h* d* s" O0 `. v& b例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,* h/ G7 U6 [/ m+ a
3 P! E/ z. V H& z, E
如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,* w2 d8 B% E, a7 I' @( R
4 Y7 l) x d* n5 v5 M4 j3 _" U. r但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。+ ~% A" l. w1 h4 G6 n* I
4 r4 ]2 c5 O7 i" G3 U ~4 F4 P3 ^
% r' C0 a2 m) J0 q: J, d+ E* C舊版整數數學運算
0 ?9 H% ^1 {( e9 w
2 G, c6 Z1 n: ?6 w: q0 \. T7 d$ J @1 b5 z) _
其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。
$ \$ O; {; D5 D) I2 d; Y7 i, }# R" p. \6 L; }
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。
& G' n+ F4 O4 P5 F5 L$ G! X3 K" k. U, ?! W. }
如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。/ G1 X8 ^7 @8 P4 t$ U1 ]# X
* }) ^4 O. z1 \2 j" L/ Q
z9 c7 ]1 L4 e: `& o
2 p; t& _7 ?1 h2 ]
* e5 u2 H$ x* [2 j1 a剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。% D/ R! K) D) H
4 v- P8 M; K7 N, R* H7 L( r: j" s新增命令方塊後的命令面板如下:
* Q- x7 @3 |3 [6 X y9 d5 ~
# b2 o R1 @$ J
/ L0 O# M6 H3 p& J- ^. f: f
4 { W/ b! [8 k& W* p, B; K請使用檔案總管開啟NXT-G軟體目錄,( |0 e7 A8 F. p4 e& b$ J. E
) T8 {1 ]! e, C& i- V
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry
& m/ |/ Z S( t$ q/ U; z" y: a# T$ z9 S
在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』
3 I- S H7 Q; l" T( B' K' u- x; x# k' D) J, Z0 `9 r
根據Team Hassenplug的說明,你還可以新增其他命令方塊,
4 o, y; E4 Q8 U' L
- @% T( n( `9 B( O6 B3 z& S( O可以新增的命令方塊列表在下面目錄中:
! b) r% e" ?3 f) ^1 y
) K2 q; B5 X4 uC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\) T7 `+ c* \1 {& N
1 h2 v/ a" _" o, u) B(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)
! n. Y8 _6 l4 Z% O Q/ E$ C; t) Z! \8 D, g) k
: @7 S6 D8 ]+ o9 _0 W2 h使用測試結果
" D) `3 O$ R: S6 q; k; Y$ C% V/ K/ Z8 |% _6 {- n7 \" ~- f9 p1 n0 |# c6 U
探奇寫了一個程式測試使用結果,- n! g+ K4 R4 P, G* V
d; S' c+ M% v ]0 `/ K+ n; @
上半部使用新版的數學運算,100/3=33.333
6 v- Q+ m' L' o' \ C4 ^+ E* t
下半部使用舊版數學運算,100/3=33
6 D7 G$ N2 F* _% f* ] v8 U( Q/ i* s( w2 ]: ~& e$ y) d

$ q! C( z+ e! ~$ d3 Q* [% K S
2 C; M7 Q6 [: G/ u% o有整數運算需求的讀友不妨試試。 |
|