|
|
NXT-G數學運算的過去
W" `! K1 C* X0 b
$ h1 f3 P5 j) _4 f1 I; `, \! C) c) G, p
當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,: o3 p/ h: W/ J% K# ~. E+ N
! G5 X* Z( d1 ~& q( F- G$ ?3 ?2 u* z1 l雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,
# g& l6 x/ F* e2 R! g! V! K3 B: N# ~6 O f$ F
但還是讓大家非常不習慣,特別是當除法需要保留小數時。
/ H9 ^, {) M9 ]% V4 @2 @
0 n1 y3 g( {7 Z* s. H- [後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。
6 T1 _, ]+ I; N: @4 z8 t) w: q4 _- M. e& j5 G3 k g
這時反倒有一些狀況需要整數運算,但是卻無法使用。7 y* t0 |% k$ L# A1 r5 }
! C9 C m: G; w& C
例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,0 B8 Z8 c' I- `7 B9 L8 ?2 l
( c, Y0 T7 Q z: U9 p. q* R/ w如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,
3 E/ t7 d2 E9 C. N/ d4 V
z9 G' y' B# r7 P Y: @/ W/ H但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。9 y% M& Q+ K2 w9 ?" a
) V; b h5 l# f# _) y4 X! F7 j" ~% W; ~* B% v: n3 }9 f
舊版整數數學運算
$ Y1 n$ D7 T- q I3 X) \/ P( h; I' W2 G0 U8 O) W
% w1 W1 N7 j0 b
其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。0 e" V) j: G% k T3 E# w
# t8 I2 ?& T. D1 j- Q
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。( L" V0 {, n& x/ v3 m* u
; M3 `3 r: h3 _9 X$ a
如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。
: i3 z+ B2 m* g0 P9 x
% `5 L' p+ L/ S$ e
% m* Z/ l" C8 }+ S . X9 ]5 b M$ N7 G, m- _, D8 Y
' \" J: W; `; R3 C ]; }剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。
, q1 { N i! i' j; ^- E/ _$ z% A) }
新增命令方塊後的命令面板如下:' W' W, X, S, W1 {: ]
. Z& w% _- Y& L6 q1 l) `
4 g8 j; z! }, t+ h2 M
3 y0 P- D& E m6 P/ M9 O" ^+ N5 f, D請使用檔案總管開啟NXT-G軟體目錄,
$ V" G5 `7 R- r# o( l/ c# B
6 g: r. |2 X1 q) d9 ZC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry4 n5 ^, _0 H: P1 e; G
' v4 p; r9 X& X* u" d! g6 |在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』3 m. q- S9 } K& B# b! P. f
+ Z& L* S3 i! }
根據Team Hassenplug的說明,你還可以新增其他命令方塊,* L8 U U/ f5 i! o2 W
$ ?3 ]4 P! M1 c' g
可以新增的命令方塊列表在下面目錄中:+ L2 ^$ n9 X! Z4 T
0 V0 b5 L5 X! q" W; O
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\
: ], I, M6 i0 {1 J1 u* X" A: s
+ q p& j6 S `/ M( w5 [) E(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)# R5 J, y8 ~! ~6 i& e
3 E5 b+ u4 }! `$ W1 h. `
+ Z! j, V8 [: K9 [/ V
使用測試結果1 k( b- I$ n! `0 Q
# y, e. Q8 A0 I1 L# c; m- f
探奇寫了一個程式測試使用結果,- ?+ R% }* S5 X
0 `6 D! B/ e: k8 a) C! O4 y1 p上半部使用新版的數學運算,100/3=33.3338 I6 l: k j2 g+ d: j$ L5 i$ |
* C! b5 n- e7 Q% l( H. a下半部使用舊版數學運算,100/3=33/ o% {) K; ]1 d1 J9 ^1 l
$ f T1 Z6 \' L1 q" n
# Y2 v \$ R9 ~: F
`$ P$ `& |4 x# Y, v有整數運算需求的讀友不妨試試。 |
|