|
|
NXT-G數學運算的過去9 S- l2 k+ S0 n+ a( ]) X r; i3 A
! K( g) ?6 O. \% R( r' X5 h
3 r8 q% A I6 g: ]: T4 a0 H當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,
- N6 C# X, \, _3 c/ I5 M0 a9 e
2 L) n, g9 B$ r p% z E/ G) R雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,
" g0 W% R2 |" f: k9 Q; d1 m% v/ H3 d; S1 [8 G+ |3 [, N
但還是讓大家非常不習慣,特別是當除法需要保留小數時。4 o# m4 ^' b. t, L% g
/ b* f5 Z+ { Z3 Z& H5 w* K0 W6 q
後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。
7 A* b( h e A7 g7 n6 M
?/ q& M' q) e這時反倒有一些狀況需要整數運算,但是卻無法使用。
2 J8 O4 {% t* ?6 q: t$ l$ [$ V3 d$ a! L4 m; S' f7 I% i
例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,
% H9 y2 F5 e. M3 E1 v0 }* u6 [
5 H: `. a; y3 u* _如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,+ v+ ~5 O2 d' e* P+ Z4 U+ M
- f0 w- L8 |9 T9 m8 p
但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。4 K" t0 j7 R. o" S& K: `. A& h. c
g8 t7 d4 O6 w( P, t7 {$ V9 ]( a5 ]' W+ H' N+ l8 @ E# _" W
舊版整數數學運算3 Z- d9 `3 L: M- m o0 a" u1 R
+ y8 U$ s$ e$ I% h; A$ F! F
3 w: L' j m" Z; \" ~+ P
其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。
) n0 o# q+ r. s! U3 t" E. ^+ ^1 F F( E0 E6 \. K
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。
; y2 m. W) t, r' I3 Y* J; [* h! Z+ B- |; F4 R8 N
如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。+ c7 J, [4 N6 j# K
6 B+ V/ I/ h0 ]; Y, s9 l& F9 C. h, z' |4 s& v; F( X0 ^9 f
; m4 r7 y' W2 u5 }3 f$ D5 ^
- j$ }8 f# a2 G3 W, b6 T
剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。
5 S6 x; C) ]- H, N1 p4 l& P0 W' i5 t1 W" \/ V6 w+ I" I
新增命令方塊後的命令面板如下:
# o" e; W( f2 c+ A- r+ ~# j% V
# H$ W O* y7 p& `" R+ R7 e / n5 `* H( z0 G4 ]
- B L* K9 e2 a( D6 Q
請使用檔案總管開啟NXT-G軟體目錄,
- J; E2 J; F& d
# ]5 x V. R7 _) G$ o8 jC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry
4 R6 D( F( d- e1 |
; r1 m- ^. @+ d# S5 d在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』
% _4 q: ?3 ~7 U1 Z. W6 s! D0 D- K8 _$ e1 b
根據Team Hassenplug的說明,你還可以新增其他命令方塊,
" n# P: c& j- e
7 R N, R; g0 h* _可以新增的命令方塊列表在下面目錄中:
4 z6 L( F0 o: T$ A1 e; J+ }5 C; p: D# B. R6 A/ i4 `- e
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\
. V: w7 c$ _# H, v: X* @5 y2 p) @+ X& |0 w/ u! B7 Q4 J
(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)+ B. i! i: ]% P
6 w M- _: a0 e" ~5 W D. R$ n; u/ y+ n+ l) I/ H& ~
使用測試結果
" [) A7 p# L8 A! |- g4 V+ Z& A
7 ~! _5 a. H# N' n* X0 t探奇寫了一個程式測試使用結果,
1 J- P1 c0 Z+ e3 d, ]1 `
5 F( |: y' [9 O5 J上半部使用新版的數學運算,100/3=33.333
- F( H2 N8 R2 J* E/ K5 ~$ }1 B: E8 M) d* \
下半部使用舊版數學運算,100/3=33& | [* u5 s5 G( M) m, d
2 z$ K D# a! _, B8 z

`3 z- ^- E( j# Z" ?
% H7 z/ e' v! o/ f5 T7 [有整數運算需求的讀友不妨試試。 |
|