中文乐高

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 3048|回复: 6

如何在NXTG 2.0下使用整数运算

[复制链接]
发表于 2012-9-24 22:02:15 | 显示全部楼层 |阅读模式
新版Math Block.jpg NXT-G數學運算的過去
3 h$ m- n3 M" h& S
$ r- M7 x1 R  C3 r3 v, C
3 a( ]) J* l! `# l2 z當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,& j, }$ I6 a1 H9 d. _9 e; ~
4 U3 C% i# G/ S) U. g7 ]
雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,2 x: g+ W! [5 W, b

  r: J7 f0 N. m; D; b; j0 C, ^& k6 H但還是讓大家非常不習慣,特別是當除法需要保留小數時。% n. X+ u) s% ?- x& S" H

6 Q- p$ \9 y% n3 Z) _  Z% e7 N後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。! g, k9 [9 s* o3 g% `8 a9 f
$ x4 |4 t: C6 |5 t3 n
這時反倒有一些狀況需要整數運算,但是卻無法使用。
7 t, ^1 \" P7 v0 d# ^! h. P+ o- G4 L( E, ]
例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,8 F5 B8 T) V1 c2 q# v, ^, {0 B
8 g: L  {) H( m: g( `
如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,
/ x( ?, x" ~. Z& f; c) B) p- Q, S, o; U* i3 X- m& v9 a( T  v
但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。
3 V" D, ~# v$ C# O8 i3 M& u
6 S& |( M7 ?- v& b% y! t9 Z; I  }# W1 a4 a# j$ q! _& S0 F5 f7 @
舊版整數數學運算
, c7 g7 l, L" n8 K! o' ?& G  k
/ V: i- @$ E" k/ U( f1 P$ C2 a3 k# ]7 H0 d9 g% V/ g+ @* u
其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。3 b# Z2 V. F& I( b; ~

3 F+ p6 g- F/ p2 G為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。
0 |5 v) J7 V0 a& _( ~1 X+ w% \6 Y" b3 m) K, o
如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。  ]" e+ k! g' g  T8 z" q
2 \: m: j/ {1 \+ P) b7 c  w

# c% P; r, I/ M! `  g" |2 w5 J+ _  _/ W+ F, G, _' ^
# |# G; a6 V: F- w; r* \& _6 X7 I' {
剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。
7 B% I, ~8 f) {
4 D* t/ d7 ~4 T新增命令方塊後的命令面板如下:9 @- |9 y4 G/ D3 o2 [

6 Q$ c( b6 V: j. p7 `4 i
2 v* F6 {1 ?# _2 ~# v
' T7 Q& y: W3 w) ~) ?) r請使用檔案總管開啟NXT-G軟體目錄,
9 ~7 F; Q$ v5 b
0 O* ^7 E# A; kC:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry
& f' B6 R- p5 [4 K
& ?& P" g% p! d$ f9 ?在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt』" b* X- R$ \0 X! p5 @
2 |/ j% I% W2 G7 w4 T
根據Team Hassenplug的說明,你還可以新增其他命令方塊,
8 z! }7 a4 a% D$ x) f0 w- B  j& _' R1 f0 g$ z$ V1 Q  D
可以新增的命令方塊列表在下面目錄中:
# d, u2 S7 P: U% Y* F! N; y/ s) G* w! h; o9 A
C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\$ l. _% V- P* q2 Z
& L1 P1 c; W+ m# T. m* ], L  x- Y
(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)
% O( P- V8 G& {4 h9 m# {4 ^
0 p! p1 k: ?% v5 M" V9 e0 U2 \+ }% s8 T  w
使用測試結果. ?) ]2 D8 y5 D, i1 C% V! y

, \. I% _4 i; f' S6 ?  K  f探奇寫了一個程式測試使用結果,7 M' n, V: c  z9 Z- t
7 m1 v- s7 M+ m  T$ ~
上半部使用新版的數學運算,100/3=33.333: D8 F$ @/ C+ }8 N" g6 p
; V, n: U/ H& r1 ^
下半部使用舊版數學運算,100/3=33
& V% B8 A' m9 J4 r1 c6 H
1 G& D- T6 b4 A9 q) `# d ) I8 \! ?7 N' e1 W1 L  M" L: ~" X
' h- {+ M0 q2 R) T2 Q+ c
有整數運算需求的讀友不妨試試。
Math Block.jpg
數學測試程式.jpg
舊版Math Block.jpg
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-10-23 13:40:00 | 显示全部楼层
pyruvate 发表于 2012-10-23 13:18
3 C7 \- x5 v$ G; R$ L& M哈哈,我搞定了
4 G: j2 a0 z3 [& z) S4 d原来是我文件夹名字写错了
$ c( h2 A, V" e
data,数据( q' b1 f8 V- v" h
date,日期
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-9-25 22:53:16 | 显示全部楼层
经测试后可用,感谢楼主告知我不知道的方法,原来还是用自己设计的block来解决这一问题。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-9-26 08:59:04 | 显示全部楼层
感谢楼主的好帖,学习了
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-10-22 11:34:52 | 显示全部楼层
糖伯虎 发表于 2012-9-25 22:53 * C  x( }( O$ J0 F) P% A( ?3 `
经测试后可用,感谢楼主告知我不知道的方法,原来还是用自己设计的block来解决这一问题。
3 t3 L; N- n( p0 J  @) N
唐大,直接这个目录中增加一个文件夹和一个空白文本文件,打开程序就可以看到原来旧版的计算模块了么?/ `& L% T! ?  P# z1 C) N
) r) h" W8 b3 c' T9 ]5 V5 M) f
照着做没反应诶
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-10-22 12:28:23 | 显示全部楼层
pyruvate 发表于 2012-10-22 11:34
& F8 J, u% q/ ?! u7 b唐大,直接这个目录中增加一个文件夹和一个空白文本文件,打开程序就可以看到原来旧版的计算模块了么?
" Z' K& S$ m- F' X: b- }; S ...
- y. x" Z% h9 _
是的,文本名字有要对
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
发表于 2012-10-23 13:18:21 | 显示全部楼层
糖伯虎 发表于 2012-10-22 12:28 ( H) f2 A/ t3 p% d4 P
是的,文本名字有要对

" t/ O8 d" z$ l$ c7 b$ H1 w. d哈哈,我搞定了5 U0 f2 e, j8 Z2 c
原来是我文件夹名字写错了
6 _' t8 Q6 \8 N5 m( ~
( W7 m4 E. ~; c/ s" rData,我总记得Date......
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|中文乐高 ( 桂ICP备11003955号-1 )

GMT+8, 2018-2-19 20:03 , Processed in 0.083440 second(s), 22 queries .

快速回复 返回顶部 返回列表