|
|
NXT-G數學運算的過去/ a. F" i7 y$ K0 U9 Z1 }' H5 O J- j
6 t; r4 d! Q# N9 B1 t
# P" z/ a4 w, c) u4 E4 v
當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,
) z8 k# Q1 O* {6 H$ W( V _* Q7 D1 }! S# K9 }
雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,, t% A' E8 F) b! f1 U
% m- D2 o e& h但還是讓大家非常不習慣,特別是當除法需要保留小數時。) X" [$ B- E1 L9 j# d6 B k' s
% \1 G0 o; h+ U* M5 m; P$ J& _0 Q3 A後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。
r2 K6 ?7 S/ L
) X$ ~" P0 d& e/ S( k2 W& F; F這時反倒有一些狀況需要整數運算,但是卻無法使用。 h2 W7 b2 f4 [ Q' P4 E8 _, S
" r5 y" q5 D% J h2 h2 u( E1 M5 B4 H
例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,5 r% M: V8 E/ E% U" W6 x
2 ^" G* l- d+ y4 m! S( T
如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,
5 P u' h. [# s8 N- N' w- K$ w9 q X1 U5 p
但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。9 o) H* |) T) E% x/ | L
$ u9 t7 K! [6 \7 j& [( q
; N& Q" P& @, F! D舊版整數數學運算: ]& l+ a% \; y; |# z
- s5 p' l& ^4 I3 {3 ^/ z' P2 I0 ?0 d5 B3 v* a
其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。
& `# x7 W( v L s" a8 [1 S3 X9 O' \& h. Q
為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。1 {: t# R$ `4 g8 {$ F* u: n3 k
- {) s+ O8 s1 z6 N如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。$ m/ v# ^7 a+ C2 t( T$ e
; y5 n4 O' g% \6 s4 r, i1 W6 N* W4 x& h9 `% ]9 g: D* C
8 t- u: q7 p& ]0 m! p$ W
5 `% g7 {% Q l: V! \/ g, @( w剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。1 v1 V6 } U4 n4 j# E
! j" J0 `7 E/ _; e D' U' c新增命令方塊後的命令面板如下:) v3 [/ T5 P9 A5 M6 }9 G: U
+ B4 a7 b* F5 d9 o# N
( G7 Y9 v4 q& x7 C
% G. f7 C8 b% y3 P
請使用檔案總管開啟NXT-G軟體目錄,
9 O. I0 o) O! r; u1 D# H9 x. h. ?
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry P1 R7 ^: K) ]
/ U) R& {! j/ ~9 N$ R6 b- `在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』
9 W& M( q: Z) g. \. Q* L- c2 s* ]3 N5 c" Y% i# X9 ?
根據Team Hassenplug的說明,你還可以新增其他命令方塊,
% T- P) r0 n7 Y7 @* [1 z( C7 g' w+ _' e5 v+ J
可以新增的命令方塊列表在下面目錄中:' b8 ]5 r% R% x- q. Y
- P6 }3 S- F! q1 k& a) r1 h- \
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\
% L/ P2 ]; G! U5 O! _/ G, E) g6 A1 g# L+ d0 F
(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊) y% p O; V4 h2 B* C
0 o' k) J. ]( K$ E& ?( H
c4 _4 q0 _7 a& a5 {# B: V; q使用測試結果
! u O' d7 M+ g, f/ ?* J3 q2 I! @
6 I! C% C' V; M% g# E( \探奇寫了一個程式測試使用結果,9 J! X+ m5 D& `$ W
7 n; @1 E% C4 I上半部使用新版的數學運算,100/3=33.333
, y% ]4 ? g# I1 c e0 h3 i& A: |
3 V/ H# [# {% P% w下半部使用舊版數學運算,100/3=33
8 G$ [; G* x" n0 a E0 A4 B! V% t( ]+ Y. @6 V

: } V2 o. z0 q: B, \0 I3 x) \- b3 N- o$ l: S3 N* R+ \; N
有整數運算需求的讀友不妨試試。 |
|