2010年5月7日 星期五

使用NXC撰寫NXT程式---第三章 變數

使用NXC撰寫NXT程式---第三章 變數

一、變數命名規則
英文字母或_(底線)開頭

二、資料型別




資料型別說明範圍

bool

8位元無號數

0~255

byte

unsigned char

8位元無號數0~255
char8位元有號數-128~127
unsigned int16位元無號數0~65535

short

int

16位元有號數-32768~32767
unsigned long32位元無號數0~4294967295
long32位元有號數-2147483648~2147483647
mutex互斥程式碼
string字串
struct自訂結構
Arrays陣列


注意 : NXT 不支援 float 與 double 等浮點數型別

修正 :
感謝 探奇自然科學教室 指正


NXT 1.0x版本的韌體的確不支援浮點數,但是1.2x版的韌體就已經支援浮點運算。

在新版BricxCC的編譯選項選擇"Automatic firmware version" 或 "NXT 2.0 compatible firmware"就可以使用浮點運算。

請參考http://forums.nxtasy.org/index.php?showtopic=5093&view=findpost&p=38693


三、運算子
    1.算數運算子:

符號功能C++運算式數學意義

+

a = x + y

a = 5 + 3

-a = x - ya = 5 - 3
*a = x * ya = 5 * 3
/a = x / yfloat a;
a = 5 / 3; (結果a=1)
a = 5.0/3;
%取餘數a = x % ya = 5 / 3 的餘數
++遞增a = x++(先指派再遞增)
a = ++x(先遞增再指派)
a = 5++ (=6)
--遞減a = x--
a = --x
a = 5-- (=4)


    2.指定運算子:

運算子

功能

實例

結果

=

指定

i = 2

變數i的值為2

+=

相加後再指定

i +=2 相當於(i=i+2)

變數i的值為7

-=

相減後再指定

i -=2相當於(i=i-2)

變數i的值為3

*=

相乘後再指定

i *=2相當於(i=i*2)

變數i的值為10

/=

相除後再指定

i /=2相當於(i=i/2)

變數i的值為2.5

%=

餘數除法後再指定

i %=2相當於(i=i%2)

變數i的值為1

^=

做XOR運算後再指定(逐位元)

i ^=2相當於(i=i^2)

&=

做AND運算後再指定(逐位元)

i &=2相當於(i=i&2)

=

做OR運算後再指定(逐位元)

i =2相當於(i=i2)

<<=

左移指定運算

i<<=2相當於(i=i<<2)

>>=

右移指定運算

i>>=2相當於(i=i>>2)



其餘請參考 BricxCC安裝目錄中的Documentation\NXC_Guide.pdf

四、讓您的NXT隨意散步

task main()
{

    int run_time = 0; //宣告一個整數變數,名為run_time,其初值為0
    string name = "simfonia";
    run_time = (3+ Random(6-3))*1000; //隨機取 3~5秒
    OnFwd(OUT_BC,80); //設定B、C port 的馬達以80%的Power正轉。
    Wait(run_time); //等待 run_time 秒

    run_time = (1+ Random(4-1))*1000; //隨機取 1~3秒
    OnRev(OUT_C,80); //設定C port 的馬達以80%的Power反轉。
    Wait(run_time); //等待 run_time 秒

    run_time = (3+ Random(6-3))*1000; //隨機取 3~5秒
    OnFwd(OUT_BC,80); //設定B、C port 的馬達以80%的Power正轉。
    Wait(run_time); //等待 run_time 秒


    Off(OUT_BC); //關掉B、C port 的馬達電力,並剎車。

}


關於 Random(x) 函式:
Random(x)是NXC API 中的一個數學函式,它隨機傳回 0 ~ x 之整數值(可等於零,但小於 x )。
0 <= Random(x) < x
=> 0 <= Random(y-x) < y-x 同加上 x
=> x <= x + Random(y-x) < y => 可隨機傳回 x ~ y (小於y)之整數

1 則留言:

  1. 你好:

    NXT 1.0x版本的韌體的確不支援浮點數,但是1.2x版的韌體就已經支援浮點運算。

    在新版BricxCC的編譯選項選擇"Automatic firmware version" 或 "NXT 2.0 compatible firmware"就可以使用浮點運算。

    請參考http://forums.nxtasy.org/index.php?showtopic=5093&view=findpost&p=38693

    回覆刪除