|
|
NXT-G數學運算的過去 p# R! G! {. Y4 }$ P7 O% c/ `
- y% |1 ^5 K6 N5 e- G8 d" K- x
; |, |3 @$ i$ ?8 F
當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,
! i' J( u; S4 V( x: J( T& H5 E) R( Y7 f0 R
雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,$ L7 O6 |9 m) {
1 l* ]4 F! m6 {: _* ?
但還是讓大家非常不習慣,特別是當除法需要保留小數時。
* h9 r D2 m& N+ N c2 y& b# k4 `; F* V3 |7 H+ E' ^
後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。3 s0 I6 J3 b" o& p6 V9 g
* ~0 y0 Q( o8 j' }
這時反倒有一些狀況需要整數運算,但是卻無法使用。
) `5 Y$ E- B0 J$ o/ G6 r I& p& T! Z( p
例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字, |* j6 s% Q/ A. J2 x% Q; J
+ @( y$ J2 N/ G9 Z- q5 a
如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,# ^0 b8 x$ X2 e' U* }
3 ~9 S L$ y# X% C0 S0 g" v' A6 f
但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。8 a4 \3 d" r: V0 M
. ~& t* k6 \; h: w4 ]) [
" V. u; B5 m! {) ?舊版整數數學運算
( Y9 i4 R% h g _) F+ D, K- S) L: L
1 g: b) [; ~8 B8 C" M其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。
/ `, t3 }4 E# _. R: W e/ W- K; I* V- W) r
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。
& D6 P1 ^( n# Z& p* @& _$ Y. [# g( `- ~) v: L2 N @
如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。; ?. c4 a6 {' i; T7 N- g* e( T- v ?
0 x: u% \' C& j# X9 S; j7 ?& P% s
& F1 H: ?, m8 H. Q
/ J% f5 t* ^4 g- ` c# |
7 M$ H* e# b# I2 {( y2 T( K1 B剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。! v) w3 {7 y$ [' E5 T$ T
. ^3 ~: u: G; t7 P: j$ F
新增命令方塊後的命令面板如下:) i) h N1 f3 M& z9 k1 ?4 H
! R# m5 @# p. o: H. K) T# _4 A- I
& \0 e( [. ~: f$ O8 M0 C4 ~' K$ z8 `9 ^# ^5 n- R
請使用檔案總管開啟NXT-G軟體目錄,# b j3 \* n8 R+ k% V
8 N: C ^% {% _) u( {
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry
w% p" \; [' O4 m' u2 ] x
# t* T! e3 B- `; Y在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』
C; u! i, l4 z, \2 B5 x8 n5 K2 }0 d0 T3 G) Y& |3 _. ^
根據Team Hassenplug的說明,你還可以新增其他命令方塊,
5 s2 ^ \3 _; [/ T! @
: g9 ?1 u$ }, B& Y, \" I7 n可以新增的命令方塊列表在下面目錄中:
: _5 @) Z, p+ V& V( ]& } n5 N/ _0 m4 B
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\
+ w" }0 C! D3 A' q) X. J
9 D' Q% P8 a/ }2 k$ u: C(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)3 z' e+ _4 d' s P9 T6 N& ?7 M
g% u+ L3 l" N! e+ n/ ?6 K8 q% u# ?3 m% ~4 M$ P
使用測試結果* M( N! S1 e+ G1 v) C" b! G
) H8 c. b. k* k( A/ G- h
探奇寫了一個程式測試使用結果,
% B- g: V. c0 B1 n
_9 S: D( a( Z3 \! |5 T0 \上半部使用新版的數學運算,100/3=33.333
, w* Q8 s, e0 R& G
- I1 W; t* e, X" J/ l下半部使用舊版數學運算,100/3=33
! T% A% y% I) [0 T W. D& L j9 c7 L ]( m, Q

+ y! Y1 p/ C! _6 ?' m. o- D+ J: u" s- d) ^8 f% D
有整數運算需求的讀友不妨試試。 |
|