2012-05-20

NXT-G 2.0 (2.1) 的整數運算


NXT-G數學運算的過去



當初NXT-G軟體隨著NXT上市時,數學運算功能只有整數計算功能,變數也只能儲存整數,

雖然有玩家提出可以使用固定點運算 ( fixed-point ) 解決問題,

但還是讓大家非常不習慣,特別是當除法需要保留小數時。

後來NXT-G軟體推出 2.0版時,就將數學運算及變數改成浮點運算,並且在數學命令方塊中新增『絕對值』及『平方根』功能。

這時反倒有一些狀況需要整數運算,但是卻無法使用。

例如在探奇的大數字顯示功能中,需要分別知道一個數字的百位、十位及個位數字,

如果有整數運算,那麼236/200=2,馬上就能知道236的百位數字是『2』,

但是浮點運算的結果卻是236/200=2.36,或許可以改用減法來得到答案,不過還是需要比較麻煩的算式。


舊版整數數學運算


其實雖然NXT-G 2.0版以後的數學運算改為浮點數計算,但是軟體內仍然保留舊的整數運算功能,只是沒有顯示在命令面板中。

為什麼會保留整數運算的功能呢?探奇認為應該是為了舊版程式的相容性問題。

如果你使用2.0版的軟體,開啟使用舊版軟體所撰寫的rbt程式,就會看到數學運算的命令方塊多出一個驚嘆號。




剛好前一陣子也有老師提及需要整數運算,探奇在此將增加方式記錄下來。

新增命令方塊後的命令面板如下:



請使用檔案總管開啟NXT-G軟體目錄,

C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\EditorVIs\BlockRegistry

在這個目錄下新增Data的子目錄,接著新增一個空的文字文件,檔名設為『Numeric Operations.txt

根據Team Hassenplug的說明,你還可以新增其他命令方塊,

可以新增的命令方塊列表在下面目錄中:

C:\Program Files\LEGO Software\LEGO MINDSTORMS Edu NXT\engine\vi.lib\LEGO\Blocks\

(我想大部分都是整數型態相關的命令方塊,還有舊版RCX的相容命令方塊)


使用測試結果

探奇寫了一個程式測試使用結果,

上半部使用新版的數學運算,100/3=33.333

下半部使用舊版數學運算,100/3=33

 

有整數運算需求的讀友不妨試試。

8 則留言:

  1. NICE!真的是解決一大難題誒!
    [版主回覆05/21/2012 22:03:17]還請問解決什麼難題?

    回覆刪除
  2. 解決最大的問題就是整除!我也是做過一個需要提取十位和個位的數字的程序,當時沒辦法,只好用減法與循環來模擬一個除法
    [版主回覆05/22/2012 20:28:32]用減法的確很麻煩,但是也可以瞭解『除法的意義』

    回覆刪除
  3. 蠻常用來取出兩數的商(Q)和餘(R)
    Q= [A/B]
    R=A-B*[A/B]

    這在去年和今年WRO的高中職組,應該都蠻實用的
    [版主回覆05/22/2012 20:30:04]整數運算對於取商及餘數的確是蠻有用的方法。

    R=A-B*Q

    回覆刪除
  4. 老師你好~我按照上面方法作,但我把Numeric Operations.txt放到Advanced,有跑出來,後來我覺得放在Advanced那不方便,就在Block Import and Export Wizard把它移除,但之後再按照步驟做就都沒跑出來了!
    請問老師有什麼辦法可以解決嗎?

    [版主回覆08/26/2012 09:23:49]你好:

    這個整數運算Block原本就存在NXT-G中,只是沒有顯示在命令面板中,新增Numeric Operations.txt,只是讓NXT-G在命令面板顯示Block的圖示。

    如果想將圖示放在不同的命令群組,應該是將Advanced子目錄的Numeric Operations.txt直接搬移到其他子目錄(例如:Data)。

    如果使用Wizard移除,我想原本的Block可能真的全部刪除。那麼就不會出現這個Block。

    我想到的辦法有二:重新安裝NXT-G;

    或是從別台電腦中,以Block Import and Export Wizard輸出這個整數運算Block,再Import到你的電腦。

    祝你成功!

    回覆刪除
  5. 沒辦法!
    新增Numeric Operations.txt之後沒反應~T_T

    回覆刪除
    回覆
    1. 你好:
      剛剛特地找台電腦測試,是正常的。
      你有新增一個目錄嗎?目錄名稱是Data。
      請再看看這個檔案夾內,是否有Numeric Operations.txt檔案。
      祝你成功!

      刪除
  6. 有新增,但沒出現任何東西

    回覆刪除
    回覆
    1. 你好:

      新增『Numeric Operations.txt』c與O 有一格空白,請確認。

      應該都可以成功,請將你的目錄資料夾作一快照,如此才能確認狀況。

      刪除

探奇歡迎大家留言討論!謝謝分享你的意見。