|
|
NXT-G數學運算的過去 b4 M# |2 y" Q* k
( b* c7 q* y% h8 R
. q6 }# E7 J% L% Z4 P
當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,, m: i1 n& b2 m, ]" f% f! m) p' y
) H0 R" [, e5 _/ d% }+ N* c' S
雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,2 _2 Q/ U9 B3 R
/ [$ H# W- p0 Y% E2 v2 q/ I但還是讓大家非常不習慣,特別是當除法需要保留小數時。
/ c% F: Z1 u3 H9 r9 g+ y: o& a. ~. f- {8 X: H+ i0 x: G% E
後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。
0 R! v8 Q# u. e
5 A. c) p) O9 A# `這時反倒有一些狀況需要整數運算,但是卻無法使用。& j8 X2 B9 ~9 ~5 u; S- w
1 ?% @3 U8 r3 O& X0 u1 A. q例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,% W# d. f5 n% Y0 u3 C( g+ z
5 l2 P8 R) W% w: z# |如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,
+ i( M" @) I# {' | D4 }6 d1 @, ^$ m/ w
但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。
/ x3 m! G% P' }8 V3 T$ N5 s! H8 L! P) N* J
6 I7 W; o( X8 C& w5 X4 Q2 a8 t: p
舊版整數數學運算( u. K; p5 L8 M; T
+ T9 h! _' ]5 L+ Y! Z. k" q
* X/ {& H; m! W+ K其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。" E4 l: e6 L8 r
- f8 c8 V) i6 c& Q" S7 N3 z+ Y" E
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。4 z# ?. A5 y* A0 ~8 S/ ^- A7 h n; U
. t- Z, s' \0 v7 X# k
如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。
$ p' L' e$ U5 k. e t1 _+ e2 H$ s
+ g# u: @2 X: c: T. ^$ M
+ R5 H+ k: W* b8 j \) D ( _& F( i( a1 ?3 O) v& e3 D3 R
# n5 {) n) B: W) S* q; T
剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。1 h# z% d. n( J! x
/ h: [ I5 U5 d; J+ |9 `新增命令方塊後的命令面板如下:$ `) y" `) V, w) ^
" e' `, Q$ a. _$ ^; f; g
) y! y( D# m3 b
: A, t5 |1 w3 a8 S: `0 ?
請使用檔案總管開啟NXT-G軟體目錄,1 q+ L" V' P& i- {% ?
* @ C3 X" q# }3 ]: j! iC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry2 `" B7 x& k" P4 H6 Q8 ^+ a; a
5 R& U+ h" R! ?在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』
' D+ Y" F& g7 ]& D" `) \
0 { X" q9 o) _ O1 z7 {根據Team Hassenplug的說明,你還可以新增其他命令方塊,
$ ]9 ~0 s, i- }2 A# h, V$ Q* S! H
可以新增的命令方塊列表在下面目錄中:
" v+ \, Y3 B7 T+ X1 V8 j/ L* R( c H. r; O- N1 t
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\) y' |+ k% n3 H% P* n
4 V: s/ s7 G& V. ]6 F: e8 Q. j+ f(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊): _5 V" S* _! B7 A6 N( O* P. {7 \% j
# D% e3 }% t( S! j
) @% G; ]$ l0 ? h使用測試結果& A1 v# O* A- [: R. @, v6 e. N
# q q( C- }/ g B& g3 K; R( U
探奇寫了一個程式測試使用結果,
1 e7 a* k3 a4 D7 ^
0 u& O; ]7 `" Z$ v% D7 M& ~上半部使用新版的數學運算,100/3=33.333) U5 ~: `8 ~: m1 R6 {6 U. O; J
! w i# R! A" m& T$ z; E& E) g: z下半部使用舊版數學運算,100/3=33
% Y6 y b/ j- o( Y
9 q' l, A/ q, E9 Y$ Q# { 
. x5 ~& }: ^+ F( ^/ N1 a
, Z7 }$ b( J2 W) P9 D0 Z有整數運算需求的讀友不妨試試。 |
|