|
|
NXT-G數學運算的過去
8 y% h9 C! p3 R8 z+ r7 r$ r1 t
, M6 m# @8 V- S# R) y) K
9 K7 U( `- L; E" u8 X* j當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,
1 y* d" V3 l% Q/ P' s/ o# T4 }* D" l
( D% s/ }! O2 t& w, a; K雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,# c+ {$ z" j4 n$ E0 _5 o9 ]7 C
1 I. j6 H/ g% ^! A但還是讓大家非常不習慣,特別是當除法需要保留小數時。
0 D) a/ A- ?& X( a& R8 x3 m
0 M5 _' C) Z$ ~5 i後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。
$ B: ?: }9 X4 m5 t5 W
) T$ E. j! D4 G0 r4 e c這時反倒有一些狀況需要整數運算,但是卻無法使用。1 }% R @6 e" {) F) F1 q9 i
; ]. p+ u1 S& R- b# @7 F9 u
例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字," @, H2 D$ E! r
4 \. E8 W' Q# x9 u4 h如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,
& _/ _6 V* F0 E0 c0 Q" N' h5 `# n
( _ y/ l- \3 V3 Q W8 ~但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。
7 j! H/ m9 e% W T* Y3 n0 w' i, Z2 e/ ~ N; D
: j* ]4 \% K( k8 P6 U
舊版整數數學運算 b# H6 f8 u" G" Q
, L8 K8 c9 C8 u1 r
6 N2 J% L# `! @6 K _1 R其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。
" D4 Y& o4 b. S1 B: }* _7 j2 C: K% b. C- I+ U+ A
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。$ H( ~- c8 P8 z: H
0 c. k, _$ S- v. i, s9 E5 P- [
如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。
6 j: n5 }, z3 n2 R0 ^8 O4 q* O" ~, F9 W1 p( q& R
* Z) P9 J$ g; ]3 o, ~8 m
7 ^/ k. C$ B8 ]- d4 E
3 k/ D# N0 @+ |' ]3 f' n剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。
, v. `% |4 Z, O
" o- Q8 x, c9 u# D新增命令方塊後的命令面板如下:
2 ^9 F9 R/ d( z$ V( N8 k' h9 ?) d2 }. j: l' u% o

( Q2 {8 w4 v" d, p( Q, p
+ w3 y( X0 v( q* O' i請使用檔案總管開啟NXT-G軟體目錄,' \: b# H3 p, \" I" z% g
6 b$ G3 k V$ i' v7 A, u# cC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry
) K( ]5 n% @! U- R! y
3 d' k9 B# B6 l3 d- l" H) _在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』
) j/ c) M0 E- s! _2 B7 s" o
0 ^' R6 E0 Q8 Q+ B根據Team Hassenplug的說明,你還可以新增其他命令方塊,9 ^: M/ U/ c. H
% I$ ?0 k5 w& l- D. M3 U+ z
可以新增的命令方塊列表在下面目錄中: |! C0 W0 G3 H
( y; v0 y2 t$ D; l- o* tC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\' d9 B8 T7 m% y: t% V
" F( b* R9 ?- L2 N
(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)+ |5 Z" w2 e8 D" l
. N1 S3 A0 N. U) H- T
( u# t2 B, y& ]
使用測試結果' s- ^) M6 w9 x: a
# ?& Y7 [$ T1 e5 Q探奇寫了一個程式測試使用結果," \9 c2 X2 T6 f, d# G1 `& A, `- d
2 }" a& F$ O+ R% _6 }
上半部使用新版的數學運算,100/3=33.333
2 x9 W* D$ ^' d/ D6 F& w" ^; v% q- A& E& a0 \6 V5 y' r& m
下半部使用舊版數學運算,100/3=33
/ T6 O, D8 V& P2 C; N6 j! m+ x# ?0 ^" o& C. N/ g* C5 F+ c& N$ [2 ?* v: }
0 {, ^% Y) O0 V
5 k# t" {: F, U
有整數運算需求的讀友不妨試試。 |
|